I’ve just spent the last two days preparing a new development environment on a Virtual PC 2007 VM for the application I’m currently building.
The idea behind this setup is that it mirrors as closely as possible the production environment which is CFMX7.0.2 / Centos 5.2 / Apache 2.2.
It took a lot of abortive attempts to get this right but I finally managed it with the help of the very well written walkthrough by Bill Mitchell which itself refers greatly to another blog post by Steve Erat. Mr Mitchell’s guide is great – it covers several different methods of installing the Apache connector in CFMX7 – he can take all of the credit for this, in fact I copied large sections of his procedure (thanks Mr Mitchell :)).
So I’m going to now give a set of precise instructions on how to set up and configure this dev environment that should work first time. I’m also going to be a bit naughty and provide the wsconfig file for download off my server – this will save some more time.
- Begin by installing Centos 5.2 on a virtual machine running in Virtual PC – make sure to use “text mode” for the installation as VPC doesn’t support 24bit graphics and will not display the installer properly.
- Once installed, open the ports you need in the Centos firewall
- Install LAMP (Apache, PHP & MySQL) using Yum (see this article for details).
- Reboot the server and check that everything works properly so far. Once you’re sure it is then it is a good time to enable undo disks in VPC as the next phase of the install can go wrong and if it does you can just revert back to this safe position and try again. To enable undo disks:
- shut down the virtual machine
- in the VPC console open the VM’s settings
- select undo disks (6th item) and enable it
- restart the VM
- Download the coldfusion-702-lin.bin installer from the Adobe download site – on the main Coldfusion download page you will need to click the "related downloads" link to find the correct download
- Disable Selinux (find out how here)
- Install libXp
yum install libXp
- Add a coldfusion runtime user
- Rename the binary installer
[root@machine]# cp coldfusion-702-lin.bin coldfusion-702-lin.bin.backup
- Use the following string replace command on the binary to comment out a line that causes problems
[root@machine]# cat coldfusion-702-lin.bin.backup | sed "s/export LD_ASSUME/#xport LD_ASSUME/" > coldfusion-702-linux.bin
- Make the modified binary executable
[root@machine]# chmod 755 coldfusion-702-lin.bin
- Execute the installer and select the “Built-In Webserver” option (don’t worry this will be replace with Apache later) IMPORTANT – DON’T LAUNCH THE COLDFUISON SERVER YET – if you do then you’ll have to start all over again.
- Open the /opt/coldfusionmx7/runtime/servers/coldfusion/SERVER-INF/jrun.xml file and
- Find the entry labeled ProxyService
- Add <attribute name=”deactivated”>false</attribute> (changed from true)
- Find the entry labeled WebService
- Add <attribute name="deactivated">true</attribute> (changed from false)
- Find the entry cacheRealPath
- Add <attribute name="cacheRealPath">true</attribute> (changed from false)
- Save the file
- In /opt/coldfusionmx7/runtime/lib/ create a directory called ‘wsconfig’
- In /opt/coldfusionmx7/runtime/lib/wsconfig create a driectory called ’1′ (one)
- In /opt/coldfusionmx7/runtime/lib/wsconfig create a file called wsconfig.properties and populate it with:
#JRun Web Server Configuration File # edited by bill 10.31 Thur May 24 1=Apache,/etc/httpd/conf,"","","" 1 .srv=localhost,"coldfusion"
and save the file
- In /opt/coldfusionmx7/runtime/lib/wsconfig/1 create a file called jrunserver.store and populate it with:
proxyservers=127.0.0.1:51011 The 51011 is for ColdFusion MX 7:
- Download this file and place it into the /opt/coldfusionmx7/runtime/lib/wsconfig/1 directory
- Change ownership of the wsconfig directory and its contents to the coldfusion user:
chown -R <coldfusion user> /opt/coldfusionmx7/runtime/lib/wsconfig
for example, I created a user named ‘coldfusion’ so I entered:
chown -R coldfusion /opt/coldfusionmx7/runtime/lib/wsconfig
(when you manually create this folder / file structure everything will be owned by the root user. This will cause problems when Apache attempts to connect to coldfusion – hence the above step)
- Edit the httpd config file:
and find the line containing DirectoryIndex. Add index.cfm to the list of default file names so it should now look something like this:
DirectoryIndex index.html index.html.var index.cfm
and then append the following section to the end of the file and re-save it:
# JRun Settings LoadModule jrun_module /opt/coldfusionmx7/runtime/lib/wsconfig/1/mod_jrun22.so
JRunConfig Verbose false JRunConfig Apialloc false JRunConfig Ssl false JRunConfig Ignoresuffixmap false JRunConfig Serverstore /opt/coldfusionmx7/runtime/lib/wsconfig/1/jrunserver.store JRunConfig Bootstrap 127.0.0.1:51011 #JRunConfig Errorurl AddHandler jrun-handler .cfm .cfml .cfc .jsp .jws .cfr .cfswf
- Create a symlink to the CFIDE folder in the document root:
cd /var/www/html ln -s /opt/coldfusionmx7/wwwroot/CFIDE
- Restart the apache server
[root@machine ~]# service httpd restart
- Start the Coldfusion server
[root@machine ~]# service coldfusionmx7 start
- Test everything works properly by putting an index.cfm containing some CFML scripting (eg <cfdump var=”#CGI#”>) into the apache web root and type:
You should see the CGI dump. Then test the coldfusion administrator works
where centos-VM is either a domain that you’ve set up for your new VM or its IP address on your LAN
Now you should have a fully working virtual Centos server with CFML (& PHP) support. Don’t forget to install the MySQL connector J Driver too – I already blogged that one here
Finally you really should should close the VM saving the changes. Before re-launching the VM I would recommend that you copy the VM folder to an archive location – you never know when you might need a freshly installed VM with this environment in the future. Leaving undo disks enabled in Virtual PC is a good idea if you can afford the extra disk space required – if you do break your dev environment in the future and can’t fix it but don’t want to restore the initial image then leaving undo disks enabled will allow you to roll back to the last time you saved your changes. Just remember to save your changes regularly.
Good luck with it!