For simple development tasks, CommandBox provides an embedded development server which is easy to get started, however it is not suitable for running production servers. For those that wish to develop locally with a full VM that mirrors a normal production environemnt, Vagrant is a useful tool for this.
Vagrant simply wraps a VirtualBox VM and provides easy to use networking and file synchronization between a development environment and the VM. It also provides hooks for scripting automated setups of an environment.
A full features Vagrant setup example can be found here: https://github.com/Ortus-Solutions/vagrant-centos-lucee
##Sample Vagrant File
This vagrant file cane be used to configure a VM and install Lucee. This section does not go into the specific of using Vagrant, for that follow a Vagrant Tutorial. This vagrant file below uses a CentOS 6 VM and is not security hardended, it is only intended for development purposes. It installs Lucee, Apache and MySQL, which is a common configuration.
{% gist id="roryl/d0dec15fb47bdcec19ab" %}{% endgist %}
``` # -*- mode: ruby -*- # vi: set ft=ruby :Vagrant.configure(2) do |config|
boxes at https://atlas.hashicorp.com/search.
config.vm.box = "nrel/CentOS-6.5-x86_64"
config.vm.network "private_network", ip: "192.168.33.10"
config.vm.synced_folder "../", "/var/www/"
https://docs.vagrantup.com/v2/push/atlas.html for more information.
config.vm.provision "shell", inline: <<-SHELL pwd #Install Apache Server sudo yum -y install httpd
#For development purposes, turn off the firewall
service iptables save
service iptables stop
chkconfig iptables off
#Install MySQL Server
yum -y install mysql-server
chkconfig --level 345 mysqld on
#Download Lucee. Change the URL to latest versions from http://lucee.org/downloads.html
wget http://d8yjolse1mixx.cloudfront.net/downloader.cfm/id/143/file/lucee-4.5.2.018-pl0-linux-x64-installer.run
#Make the installer executable
chmod 755 lucee-4.5.2.018-pl0-linux-x64-installer.run
#Run the installer in unattended mode and set the admin password
./lucee-4.5.2.018-pl0-linux-x64-installer.run --mode unattended --railopass 123456
#Install Nano text editor
yum -y install nano
#Backup the http conf because we are going to edit it
cp /etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.conf.bak
#When running VMs, apache caching static files (js, css, images) that are servers over the network from the host OS. Turning off MMAP and SendFile stops this caching
sed -i -e 's/#EnableMMAP off/EnableMMAP off/g' /etc/httpd/conf/httpd.conf
sed -i -e 's/#Enable Sendfile Off/Enable Sendfile Off/g' /etc/httpd/conf/httpd.conf
#Add index.cfm to the directory index
sed -i -e 's/DirectoryIndex index.html index.html.var/DirectoryIndex index.html index.html.var index.cfm/g' /etc/httpd/conf/httpd.conf
SHELL
#Add an additional provisioner to start Apache. Because Apache relies on the mounted folders that vagrant creates, Apache will fail on initial boot config.vm.provision "shell", inline: "apachectl start", run: "always"
end
</noscript>