Introduction
This article discusses my search for a zero install, cross platform software development stack to replace my Windows Server 2003, IIS7, Coldfusion 8, PHP stack.
Background
I am comfortable in the Windows server world of 2003 and IIS6 and IIS7. Microsoft has announced a sunset date in 2015 for server 2003 support. I have been using Coldfusion 8 and FlashBuilder to develop applications that have about 50,000 users. I use mySQL as my database. I really should update to Server 2012 but neither Coldfusion 8 or 9 installs with IIS8. My existing applications will also not run (no Flash support) on IOS or Android 4.x tablets which are becoming more commonplace in the enterprise.
I would also like to have the option of deploying to IOS, Linux, or Windows servers. I would also like my complete software stack to be open source and my software development languages to be polyglot to take advantage of more popular languages than ColdFusion.
My Solution
Railo is an open source CFML (ColdFusion) engine that runs my existing Coldfusion code with very little modification. It has an express Jetty install that many users find is fast and secure enough to be used in production. Jetty is embedded in many software applications (like Eclipse) and more than meets my needs. It is also zero install. Unzip it and copy to my USB stick and voila I have access to all my legacy cfml and cfc scripts.
My replacement for Flashbuilder will be one of three popular UI frameworks (KendoUI, DHTMLX, Webix) because they are over server side scripts in .NET, Java, or PHP. DHTMLX also offers its scripts in CFML, but it is now 2 versions behind the other options.
I could use the JavaScripts but honestly I find Java very verbose. I could use the .NET scripts but that would tie me to Windows servers. I could use the CFML scripts but that would tie me to DHTMLX, which leaves me PHP. It turns out it is very easy to get PHP running in my Jetty install by downloading Quercus from quercus.caucho.com,
Copy the Quercus jar into railo/library/ext directory and edit railo/ext/webdefault.xml file by adding the following lines just after the JSP servlet mapping (about line 450):
<servlet>
<servlet-name>Quercus Servlet</servlet-name>
<servlet-class>com.caucho.quercus.servlet.QuercusServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Quercus Servlet</servlet-name>
<url-pattern>*.php</url-pattern>
</servlet-mapping>
Start up your Railo server and voila, you can now serve up PHP scripts. Quercus supports PHP 5.x but not all the libraries or extensions. It does support everything I need for the vendor supplied scripts I am looking at. Apparently PHP executes faster as a JVM language than it does under the normal PHP processor. I have not tested this, but it is fast enough for my needs.
Okay, I am getting there, but I hear Phyhon is a great language to use if you do not like typing. That's definitely me!
Go to the Jython website http://www.jython.org/downloads.html and download the Jython 2.7beta3 - Standalone Jar and place it in the same directory (railo/library/ext directory) you placed the Quercus jar file.
Then, once again edit railo/ext/webdefault.xml file and add the following, just after the Quercus entries.
<servlet>
<servlet-name>PyServlet</servlet-name>
<servlet-class>org.python.util.PyServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>PyServlet</servlet-name>
<url-pattern>*.py</url-pattern>
</servlet-mapping>
Then, start up the Railo server and start serving up python files. If you want to use some of the additional Python libraries, you will have to copy them to your deployment directory or place them in the Railo/library directory.
Jython supports Python 2.7.
Points of Interest
My editor of choice is Adobe brackets which can be installed just under the Railo directory. It has syntax highlighting for Railo, PHP, and Python.
I now have a RAILO directory of about 250 MB that easily fits and executes from a USB stick. My only install is mySQL and that sits on its own server (or in the cloud) and is separate from my software development stack.
My stack is all open source and cross platform and I no longer need to explore 'What's Changed?' in IIS in order to deploy my app to a new server.
I am also the sole developer in my software company. I apply the KISS principle to everything I try to accomplish.
History
- 1st October, 2014: Initial version