Plesk, Passenger (Mod_rails), Ruby Enterprise Edition & Ruby on Rails
Currently I have a Plesk 8.4 installation running on a CentOS 5 VPS. First I had my Ruby on Rails websites running on multiple mongrel servers (cluster) but it took too much RAM of my VPS and it was very complicated to add more websites. So now I’ve installed Passenger (make sure you check the screencast on the Passenger website!) which makes adding websites very easy. Also I’ve installed RubyEnterpriseEdition which reduces the memory needed for Ruby applications, including Ruby on Rails. Below I’ll describe the steps I took to complete this installation.
Passenger
Just follow the steps described on the Passenger website. Run as root:
1
|
|
The following command verifies if all the dependencies are installed, if not it suggests what rpm’s should be installed and exits. If all the dependencies are met, it compiles the Apache 2 module and installs the module.
1
|
|
Personally I hate installers who do a lot of stuff you can’t control, but this one does only the stuff it should do and will not break your current setup. After the module is installed you need to add the module to Apache. So I created the file /etc/httpd/conf.d/passenger.conf
with the following contents:
1 2 3 |
|
Restart Apache.
1
|
|
At this point you have installed Passenger and the only thing to make a Ruby on Rails application work, is to point the Apache DocumentRoot
directive to the public directory of your Rails application.
RubyEnterpriseEdition
Download RubyEnterpriseEdition (REE), extract the file and run the installer. As described on the REE website.
1 2 3 |
|
This installer will install it’s own Ruby environment to /opt. This is good, because it will not touch your current Ruby environment. After the installation you’ll have a separate gem installed which is version 1.2.0. The version without the gem bulkupdate, which causes a lot of memory problems on VPS’es. The following commands I’ve used to install different gems. Mysql did not install easily, but with the -- --with-mysql
it worked. Note the --no-rdoc
and --no-ri
because we’re on a production environment we don’t need the documentation.
1 2 3 4 |
|
If you have all the gems installed which you need in your Rails applications, it’s time to switch the Ruby Interpreter to the REE installation, we do this by replacing the PassengerRuby
line in the /etc/httpd/conf.d/passenger.conf
file.
1
|
|
Fine-tuning
Depending on the available RAM on your VPS, you should add the following line to passenger.conf
:
1
|
|
To prevent Passenger from invoking to many instances of the Rails app.
Plesk
The only thing you have to do in Plesk is to modify the DocumentRoot. I’ve made a app directory where I deploy my Rails application with Capistrano. Create the file vhost.conf in the config directory of your domain.
1
|
|
After that run the following command to let Plesk reconfigure your domain and add a include for your vhost.conf
file.
1
|
|