AngularJS2 in PHP Apache - apache

Today is my first day on AngularJS. I am following few tutorials on AngularJS v.2 with JavaScript. There is a prerequisite of Node.js. My development environment is PHP MySQL Apache (Xampp).
My question is, can I write & run angular app on apache without node.js?

angular2 and its ecosystem heavily depend on npm and node. While you theoretically could develop your application in a non-node environment, it would be a nightmare to set up and maintain.
Setting up a proper tool-chain would take ages if at all possible.
It'd be a total waste of time and a painful experience. Ending with a frustrated you setting up node.
Edit: your backend can be xampp based just fine! There's no need to use a node based production environment.

Related

Test Production Build Locally

I'm running into a bit of a wall and hoping for some help. It's probably something really simple that I'm overlooking. Our team is working on our lighthouse score, mainly focused on mobile optimization. Is it possible to actually build and serve those compiled files locally? What's the best way to do that and test what our performance is?
Think of it from a high level, you are building your Vue application into a static website. Static websites only require a simple HTTP server. Therefore you can host and test this production build two different ways:
With a simple local HTTP server (apache, nginx, node express), or you could use something like https://www.npmjs.com/package/http-server
Host your production build online somewhere, such as https://pages.github.com/

Run Solr on tomcat

is it possible to run Solr 6.4.1 on tomcat?
I read that Solr does not support tomcat anymore, is that true, if yes is there any other option without tomcat?
Yes, any version of Solr from 5 and onwards does not support Tomcat as an alternative officially.
The reasoning for this has been documented on the wiki:
Solr is intended to be a server not a Java web application, similar to mysql or the Apache web server. When Solr was first created, designing it as a web application was a convenient choice, to avoid writing a lot of tricky code to build a network layer. These days, this design decision has become a limiting factor.
When you download Solr and install it onto your machine, it should be Solr that gets started. It should not be necessary to install Solr into a third-party application (servlet container) before it will work.
At this time, Solr is still a webapp, but this is an internal implementation detail, not an immutable property. The intention is to make Solr into a completely standalone application. Startup scripts that start the included container are the first step towards that goal. Jetty might still be the technology used once Solr is a standalone application, but if that happens, it will be internally embedded.
At the moment you can still attempt to run Solr in a different container, as the current version bundles jetty and loads Solr inside jetty, but you can run into unexplainable issues where you'll always suspect the container to be the issue .. and if you have a problem, reporting bugs while running under Tomcat won't do any good.
From one of the comments on the old tomcat page on the community wiki:
If you want to go against recommendations and run 5.3 or later in Tomcat, you can likely still do so, but you will need to inform tomcat about an exploded web application (found in server/solr-webapp) instead of the .war file.
The server/solr_webapp/webapp folder is an exploded web application. Tomcat documentation should be able to tell you how to add such an application.
.. but if you're deploying Solr now, you really shouldn't. Use the bundled version of jetty (which might change to a stand alone version later) and the solr command / script.
They have stopped the support for the same.
Other option could be, you can check out the code and see if you can build the solr. I had tried it for earlier version (3.3).
I am not sure of the current version. But that could be the option for you.
I have posted instructions on how to get solr 6.2 running on Tomcat here. However, these instructions no longer work on Solr 6.3 or 6.4.

Aurelia on shared hosting

I was wondering if it is possible to run an Aurelia project on a shared hosting where there's no access to ssh, no NodeJS (and of course no gulp watch or anything else) with only PHP available.
I was wondering if it is possible to run an Aurelia project on a
shared hosting where there's no access to ssh?
SSH has nothing to do with Aurelia. SSH is for remotely logging in to another computer.
I was wondering if it is possible to run an Aurelia project on a
shared hosting where there's no access to no NodeJS?
Node.js has nothing to do with Aurelia. Node.js is a JavaScript runtime environment designed for asynchronous eventing within network applications. Aurelia is a client side environment that may optionally talk with a Node.js enabled server to retrieve server side data.
I was wondering if it is possible to run an Aurelia project on a
shared hosting where there's no access to gulp?
Gulp is essentially a task runner to automate things such as the minification of CSS and JavaScript files; the bundling of files; basically the repetative and tedious tasks you would perform by hand to prepare your web application for production (amongst other things).
I was wondering if it is possible to run an Aurelia project on a
shared hosting with only PHP available?
PHP has nothing to do with Aurelia. PHP is a server side scripting language designed for web development that can be used to server up information to the web client. Aurelia is a client side environment that may optionally talk with PHP to retrieve server side data.
What about ES6 / Typscript?
Aurelia, Angular 2, plain old JavaScript, etc... all can be written in ECMA 2016 or TypeScript. The transpiler, i.e., Babel or the TypeScript transpiler, will convert the code into ECMA 2015 to be compliant with today's browsers.
I'd recommend reading the Aurelia documentation, playing with the sample Aurelia skeletons, and maybe even viewing the 2 Aurelia courses on PluralSight which do a great job at introducing the Aurelia framework as well as most of the questions you've posed.
Yes it is possible. Aurelia is pure javascript and requires no server side technology to run. However, you would probably want some way to feed your Aurelia models with data from your back-end. PHP is as good a choice as any.

Can I Replace Apache with Node.js?

I have a website running on CentOS using the usual suspects (Apache, MySQL, and PHP). Since the time this website was originally launched, it has evolved quite a bit and now I'd like to do fancier things with it—namely real-time notifications. From what I've read, Apache handles this poorly. I'm wondering if I can replace just Apache with Node.js (so instead of "LAMP" it would "LNMP").
I've tried searching online for a solution, but haven't found one. If I'm correctly interpreting the things that I've read, it seems that most people are saying that Node.js can replace both Apache and PHP together. I have a lot of existing PHP code, though, so I'd prefer to keep it.
In case it's not already obvious, I'm pretty confused and could use some enlightenment. Thanks very much!
If you're prepared to re-write your PHP in JavaScript, then yes, Node.js can replace your Apache.
If you place an Apache or NGINX instance running in reverse-proxy mode between your servers and your clients, you could handle some requests in JavaScript on Node.js and some requests in your Apache-hosted PHP, until you can completely replace all your PHP with JavaScript code. This might be the happy medium: do your WebSockets work in Node.js, more mundane work in Apache + PHP.
Node.js may be faster than Apache thanks to it's evented/non-blocking architecture, but you may have problems finding modules/libraries which substitute some of Apache functionality.
Node.js itself is a lightweight low-level framework which enables you to relatively quickly build server-side stuff and real-time parts of your web applications, but Apache offers much broader configuration options and "classical" web server oriented features.
I would say that unless you want to replace PHP with node.js based web application framework like express.js then you should stay with Apache (or think about migrating to Nginx if you have performance problems).
I believe Node.js is the future in web serving, but if you have a lot of existing PHP code, Apache/MySQL are your best bet. Apache can be configured to proxy requests to Node.js, or Node.js can proxy requests to Apache, but I believe some performance is lost in both cases, especially in the first one. Not a big deal if you aren't running a very high traffic website though.
I just registered to stackoverflow, and I can't comment on the accepted answer yet, but today I created a simple Node.js script that actually uses sendfile() to serve files through the HTTP protocol. (The existing example that the accepted answer links to only uses bare TCP protocol to send the file, and I could not find an example for HTTP, so I wrote it myself.)
So I thought someone might find this useful. Serving files through the sendfile() OS call is not necessarily faster than when data is copied through "user land", but it ends up utilizing the CPU and RAM less, thus being able to handle larger number of connections than the classic way.
The link: https://gist.github.com/1350901
Previous SO post describing exactly what im saying (php + socket.io + node)
I think you could put up a node server on somehost:8000 with socket.io and slap the socket.io client code into tags and with minimal work get your existing app rocking with socket.io (realtime baby) without a ton of work.
While node can be your only backend server remember that node likes to live up to it's name and become a node. I checked out a talk awhile back that Ryan Dahl gave to a PHP Users's group and he mentioned the name node relating to a vision of several node processes doing work and talking with each other.
Its LAMP versus MEAN nowadays. For a direct comparison see http://tamas.io/what-is-the-mean-stack.
Of course M, E and A are somewhat variable. For example the more recent koa may replace (E)xpress.
However, just replacing Apache with Node.js is probably not the right way to modernize your web stack.

Suggestions for software to ease setting up a build server

I'm currently setting up a new build server and I'm interested in any suggestions the community may have about software such as Hudson or CruiseControl.NET that may simplify and add additional value to the build process.
Previously I had a build server set up using custom batch files which would run msbuild and other such tools and these were triggered by subversion hooks to allow for a continuous builds to be done per branch. The idea was that eventually we would also execute automated tests and/or static analysis although we never really got that far. This server also acted as our source code repository, a test machine for web project builds, and a web server for custom dashboard and portal for developers on the team.
At this point my thoughts are to separate some of the responsibilities of the old build server and at least a Build Server which is responsible only for creating builds, a web server which is responsible for acting as the intranet style dashboard site for developers, and perhaps an additional web server as the Subversion repository. If it turns out to be better or easier to keep the Subversion code on the same server as SvnServe then I'll probably opt to place the Subversion repository on the web server but still keep the build server separate. Having no personal experience with any of the popular build server and CI solutions out there I'm curious how CruiseControl.NET, Hudson or other solutions would fit into this type of configuration. It appears that both of CC.NET and Hudson have web interfaces for example but the documentation doesn't clearly layout how this plays out with different hardware/system configurations so I'm not sure if either requires the web portion to be on the build server itself or not.
As far as technologies I'm dealing with .NET/C# based code which is a mix of Web/WinForms/WPF and we use a few separate Subversion repositories to host these projects. Additionally it would be nice to support Visual FoxPro and Visual Source Safe for some legacy applications. I would also like to get more team members involved in monitoring builds and would like to eventual have developers create build setups for their own projects as well with as much simplicity as possible. Also I should mention that I have no experience setting up a Java based web application in IIS but I do have quite a bit of experience setting up and managing ASP.NET applications so if that may make .NET based products more favorable unless I can be convinced otherwise.
UPDATE (after researching Hudson): After all the recommendations for Hudson I started looking into what is involved to get it up and running on my two Windows 2008 servers. From what I can gather the web portion (master) would run on my webserver but it seems that IIS isn't supported so this would greatly complicate things since I want to host it on the same machine as my other web applications. On the build server, I would be installing a second copy of Hudson that would act as a slave and only perform builds that are delegated to it by the master. To get this to work I would be installing Hudson as a Windows Service and would also need to install some unix compatibility utilities. Unfortunately the UnxUtils download link appears to be broken when I checked as well so I can't really move forward until I get that resolved. All of this is really sounding just as complex if not more complex than installing CruseControl.NET. For now this unfortunately leaves me to looking into CruiseControl.NET and TeamCity.
UPDATE (about TeamCity): After looking into TeamCity a little closer I realized that at least the server portion is also written in Java and is deployed in a manner very similar to Hudson. Fortunately it appears that Tomcat can be used to host servlets inside IIS although I can't find a good straight forward guide to describe how to actually do accomplish this. So skipping that for now I looked further when I ran into what looks like what might be a major snag.
TeamCity Professional edition only
supports TeamCity Default
Authentication and does not support
changing the authentication scheme.
Since windows authentication is likely the direction we will want to go, it's now looking like it might be back to evaluating CruiseControl.NET or possibly Hudson if I can get my hands on the UnxUtils and also find out more about how I can host the dashboard portion of Hudson within my existing IIS configuration. Any pointers?
UPDATE (about Jenkins): I ended up experimenting enough with Hudson that I ended up with a reasonable build server setup that I'm happy with and that can be extended to do much more if I need. Of course I went the rout of converting to Jenkins once Oracle took over Hudson and Jenkins is what I'm using today with little bits of powershell to help tie things together. I'm very happy with this approach right now and besides being Java based, Jenkins has quite a bit of support for other development environments such as .NET and MSBuild.
I'd vote for TeamCity here. Its is very, very easy to get stood up and running, integrates with all your .NET stuff without any trouble. The builds themselves are run by agents which can be on the build server or another machine depending on requirements--they could even be on a machine running an entirely different OS on a different network in a different country.
I highly recommend using Hudson. Not only will it allow you to build .NET applications on a continual basis, but you can also run code analysis and unit tests as well. It's easy to install (just deploy a WAR file to a web server such as Tomcat) and has many configuration options. There is also a large number of plugins available that you can use, many written by other Hudson users. Best of all, it is free and actively supported.
For our decision making process we started with following overview.
http://confluence.public.thoughtworks.org/display/CC/CI+Feature+Matrix
Our main objective was java, easy to configure/use even after nobody created a job for 6 months. We moved away from a old version of Cruise Control, since nobody really knew how to use it. Some of the commercial products are nice if you want to go beyond just continuous integration. Have a look and decide for yourself.
Be careful, I don't know how up to date this matrix is. So some of the projects might have implemented more functions right now.
An interesting alternative could be Jira studio by Atlasian. If you use the hosted version you don't have much on support issues and it comes with subversion, bamboo, and goodies (jira+greenhopper, confluence, crucible, fisheye). http://www.atlassian.com/hosted/studio/
I agree with Wyatt Barnett. TeamCity is the best choice. It is very easy to configure and use. Moreover, TeamCity has a Free Professional Edition. Previously we used CruiseControl.NET on our project. This is also a powerful tool, but it is very complicated and hard to understand.
What s.ermakovich said: Both TeamCity and Hudson separate the web UI from build agents. You shouldn't need to install IIS on a build agent. You'd need to install a JVM and the agent software on any build node - very straightforward.