Some weeks back I was talking with HeliconTech after they kindly donated a license for their Helicon APE product for use on cfmldeveloper.com my free CFML developer hosting community. And the topic of Railo came up as they noticed I also support Railo on cfmldeveloper, and they were telling me how they like to support niche technologies like this on Windows/IIS and were looking to add some new Java solutions, so we started discussing the requirements of a new Helicon ZOO module for Railo and what it lacked on the IIS platform.
I explained to them how ColdFusion worked out of the box and the disadvantage of Railo requiring all the extra manual config of a Jakarta vDir, isapi Plugins, handler mappings and virtual hosts in the Servlet engine in order to make it work, and how a simpler ColdFusion like solution was needed, ideally using the Microsoft Web Platform Installer.
They also asked for a popular open source app that they could also build an installer for and bundle with Railo, so I suggested Mura CMS.
After only 1 month and a few more email exchanges, I am excited to announce that HeliconTech have already completed the new Installer module for both Railo and MuraCMS and added them to the Web Platform Installer, now that is fast work I must say, I was impressed.
Unlike other installations, there is no windows service required, Helicon Zoo manages processes automatically. With a windows service you cannot get this kind of flexibility, instead each website will have it's own java.exe instance running, Helicon Zoo will start it, stop it when needed and restart if detecting any problems or during normal application recycling. Web applications will be isolated, running in separate processes, with separate java.exe instances, under probably different user accounts (depends on IIS settings). A crash inside one application therefore will not affect other applications, additionally one hosting user cannot access other user's data or files or applications.
Installing Railo with Helicon Zoo
There is nothing official on their website yet, so here are the instructions of how to install Railo with the Helicon ZOO module.
If you already have a version of Railo installed at c:\railo then you will need to remove or rename it first as that is where the Helicon installer will try to install Railo.
-
Download and install Microsoft Web Platform Installer
-
Run Web Platform Installer and click "Options"
-
Add Helicon Zoo feed: http://www.helicontech.com/zoo/feed
-
You should now have a new "Zoo" option in the WPI, select this and you will see all the new Zoo modules.
-
Select Railo and click options, now choose which web server you want to install to. Be sure not to choose IIS Express if you use IIS otherwise it will get installed as well.
Now click ok.
Setting up a new Railo site in IIS
- Just create your website folder as you normally would, e.g.
c:\inetput\wwwroot\mysite\wwwroot - Now setup the site in IIS as normal. Open IIS Manager, right click on sites and select "Add New"
- You now need to create a web.config file in the root of your website to enable the new Helicon Zoo modules. This is kinda like using the ColdFusion web server config tool to enable CF on specific sites.
<?xml version="1.0" encoding="UTF-8"?> <configuration> <system.webServer> <heliconZoo> <application name="railo.project"> <environmentVariables> </environmentVariables> </application> </heliconZoo> <handlers> <add name="railo.project#x86.cfm" scriptProcessor="railo" path="*.cfm" verb="*" modules="HeliconZoo_x86" preCondition="bitness32" resourceType="Unspecified" requireAccess="Script" /> <add name="railo.project#x86.cfc" scriptProcessor="railo" path="*.cfc" verb="*" modules="HeliconZoo_x86" preCondition="bitness32" resourceType="Unspecified" requireAccess="Script" /> <add name="railo.project#x86.cfml" scriptProcessor="railo" path="*.cfml" verb="*" modules="HeliconZoo_x86" preCondition="bitness32" resourceType="Unspecified" requireAccess="Script" /> <add name="railo.project#x86.cfr" scriptProcessor="railo" path="*.cfr" verb="*" modules="HeliconZoo_x86" preCondition="bitness32" resourceType="Unspecified" requireAccess="Script" /> <add name="railo.project#x86.cfswf" scriptProcessor="railo" path="*.cfswf" verb="*" modules="HeliconZoo_x86" preCondition="bitness32" resourceType="Unspecified" requireAccess="Script" /> <add name="railo.project#x64.cfm" scriptProcessor="railo" path="*.cfm" verb="*" modules="HeliconZoo_x64" preCondition="bitness64" resourceType="Unspecified" requireAccess="Script" /> <add name="railo.project#x64.cfc" scriptProcessor="railo" path="*.cfc" verb="*" modules="HeliconZoo_x64" preCondition="bitness64" resourceType="Unspecified" requireAccess="Script" /> <add name="railo.project#x64.cfml" scriptProcessor="railo" path="*.cfml" verb="*" modules="HeliconZoo_x64" preCondition="bitness64" resourceType="Unspecified" requireAccess="Script" /> <add name="railo.project#x64.cfr" scriptProcessor="railo" path="*.cfr" verb="*" modules="HeliconZoo_x64" preCondition="bitness64" resourceType="Unspecified" requireAccess="Script" /> <add name="railo.project#x64.cfswf" scriptProcessor="railo" path="*.cfswf" verb="*" modules="HeliconZoo_x64" preCondition="bitness64" resourceType="Unspecified" requireAccess="Script" /> </handlers> <defaultDocument> <files> <add value="index.shtml" /> <add value="index.cfm" /> </files> </defaultDocument> </system.webServer> </configuration>
Just paste the above into your web.config file and save. Save this as a template to use for any new sites.
That's it, no Jakarta virtual directory to create, no ISAPI filters, no virtual host files to create in the servlet engine, it just works.
This installation uses Jetty, so if you need to make any customisation then you should refer to the Jetty documentation or any docs on the Railo wiki specific to Jetty.
I will be posting some follow up articles about enabling SEO URL's etc which wont work out of the box, but I have suggested to Helicon to add this functionality into the installer, so check back here every so often for updates.
Installing MuraCMS
I have not bothered to document the installation of MuraCMS as it is so simple and self explanatory that it requires no explanation.
You simply click Add and then install from the Web Platform Installer and follow the instructions.
The only issue you may have is if you install it to a sub-directory of a site which you have already railo enabled as above, then you will need to remove the web.config as it will conflict with the one in the root and will throw an error.
FAQ's
-
How do I restart Railo ?
Simply recycle the websites application pool, by default each site should have its own application pool
-
My SES URL's are not working, I get a Jetty 404 error
You need to add some adiditonal url patterns to servlet mapping. Open c:\railo\etc\webdefault.xml in a text editor, and find the following section
<servlet-mapping> <servlet-name>CFMLServlet</servlet-name> <url-pattern>*.cfm</url-pattern> <url-pattern>*.cfml</url-pattern> <url-pattern>*.cfc</url-pattern> <url-pattern>*.cfm/*</url-pattern> <url-pattern>*.cfml/*</url-pattern> <url-pattern>*.cfc/*</url-pattern> </servlet-mapping>
You need to add your custom URL's here, for example if you installed muraCMS in a sub directory and your url's look like www.mysite.com/MuraCMS/index.cfm/page-name, then you should add the following
<url-pattern>MuraCMS/index.cfm/*</url-pattern>
Yes this is a pain in the back side, and obviously not very doable on shared hosting, so the only other solution is using server side URL rewriting instead with Apache APE or ISAPI_REWRITE. I am however looking for another solution.
Dec 14, 2011 at 9:49 PM Im very happy to hear about this new solution stack up on Windows Platform Installer. One of the main reasons that I didn't offer Railo Server to customer was because of the tedious configuration. But now with Railo 3.3 now supporting ORM hibernate and this easy install this will be one of my top offerings to customers of all sizes.
Dec 23, 2011 at 10:04 AM This is pretty cool - do you know if Helicon pulls the latest stable version or is setup to work with a specific version?
How are you finding Jetty in production? I've only ever used it in development. I know it has a small footprint, but does it handle load well?
Dec 29, 2011 at 3:36 AM Thanks for the write up. I'm a Railo newby and am having some trouble here. I've followed the instructions. Although, when executing any .cfm file, I get a 'HTTP 503 javax.servlet.ServletException' error. Any suggestions?
Jan 13, 2012 at 12:01 PM John, based on their other products, they do seem to keep them up to date. But as you can update Railo yourself mega easily from within the Railo admin I don;t think it is that important.
Josh, check the application pool that your site is running under, make sure it is in integrated pipeline mode.
Jan 20, 2012 at 2:38 PM Josh, one more thing - make sure IIS pool user (usually IIS_IUSRS) has write permission to the web site folder. Railo requires write permission to save some configuration and cache files.
Jan 20, 2012 at 2:44 PM John, we do our best to keep latest stable versions of all products in our repository.
Russ, integrated pipeline mode is not required by Helicon Zoo. It is required by Helicon Ape, but Zoo should work in both modes.
Nov 7, 2013 at 2:46 PM I’m not that much of a online reader to bbe honest but your blogs really nice, keep it up!
I'll go ahead and bookmark your site to come
back later. All the best
May 22, 2014 at 10:48 PM Hi There, I followed this tutorial and I have error 500.19 when trying to browse my website that I created on IIS 7.5. Any thoughts?
Yes I checked the permissions. IIS_USRS are allowed to modify this folder.
Thank You!