Running Passenger with nginx on multiple Ruby versions with RVM
When you want to deploy multiple Rails applications on a single VPS, you might run into problems when they require different Ruby versions. I've got a quick tip for you to easily enable this.
First of all, I'm going to assume you've already got RVM running on your VPS and installed the passenger module on your nginx instance with:
passenger-install-nginx-module
Now, make sure you've installed Phusion Passenger 4.0.0 or higher, since those versions allow for multiple Ruby versions. I'll also assume you've installed multiple Ruby versions with RVM. Let's say ruby 1.9.3-p545 and ruby 2.0.0-p451.
The Example Rails applications is running on ruby-1.9.3-p545 and the AnotherExample Rails application is running on ruby-2.0.0-p451. All that you've got to add to your nginx .conf file (or files) now are the following server blocks:
server {
listen 80;
server_name example.com
root /var/www/example/current/public;
passenger_ruby /home/deploy/.rvm/wrappers/ruby-1.9.3-p545/ruby;
passenger_enabled on;
...
}
server {
listen 80;
server_name anotherexample.com
root /var/www/anotherexample/current/public;
passenger_ruby /home/deploy/.rvm/wrappers/ruby-2.0.0-p451/ruby;
passenger_enabled on;
...
}
That's it!
Written by Kevin Tuhumury
Related protips
3 Responses
Hi,
Did you forget the passenger_root directive ?
With kind regards.
Michaël
Yes and no. I didn't include it in the above tip, but I do have it defined in a .conf file.
Maybe I wasn't clear about that, but the above server blocks are located in /etc/nginx/sites-enabled. Besides those files I have a /etc/nginx/conf.d/passenger.conf where the passenger_root directive is defined.
How does your passenger.conf-file look?
Because you cannot set both in the nginx.conf-file and I have had both passengerruby and passengerruby set in the nginx.conf before.