How To Deploy Your Rails Application With Phusion Passenger at Site5.com
With the addition of Phusion Passenger to all our servers, deploying Ruby on Rails applications is now much easier. Phusion Passenger is now the preferred way to use Rails at Site5, but FastCGI is still provided. For most users, adding Phusion is as simple as creating a blank .htaccess file in your application “public” directory with the following lines:
PassengerEnabled on PassengerAppRoot /path/to/your/application/directory
As an example, if your application root directory is located at “/home/username/my_apps/forum” then your PassengerAppRoot line would look like this:
PassengerAppRoot /home/username/my_apps/forum
It is very important that you put the path to your application root directory, not the path to the “public” directory within your application directory.
If you were recently using FastCGI, it is important that you remove the previous FastCGI mod_rewrite lines in your .htaccess file as they will interfere with the Passenger configuration. The FastCGI lines will look something like this:
RewriteRule ^$ index.html [QSA]
RewriteRule ^([^.]+)$ $1.html [QSA]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ dispatch.cgi [QSA,L]
Deploying To A Sub Directory With Phusion Passenger
NOTICE: The section below involving modifications to the environment.rb file are not needed if you are deploying to a subdomain (rails.domain.tld) or a main domain (domain.tld). It is only needed if you are deploying to a sub-directory (domain.tld/subdirectory/).
You will need to add one line to the environment.rb file for your application (if you have not already). This file is found in the “config” directory in your application directory. Here is the line you need to add:
config.action_controller.relative_url_root = "/approot"
The “approot” line should be the name of the root of your application directory. This line must be added within the config block or it will not work correctly. The start of the config block will look like this:
Rails::Initializer.run do |config|
The “approot” part would be what you want to use as the root URL of your application. For example, let’s say your application resides in “/home/user/mygreatapp/” and you want it to be accessible via http://yourdomain.tld/approot/.
You would then make a symbolic link in your public_html directory (/home/user/public_html/) called “approot” that would point to the “public” directory in your application. The symbolic link creation would look like this:
ln -s /home/user/mygreatapp/public /home/user/public_html/approot
So, now that you have added the necessary lines to your .htaccess file and modified your application accordingly, you should now be up and running with Phusion Passenger.
Routing Errors & 404 Code
If you receive a 404 “page doesn’t exist” error when accessing your application, this is most likely due to your routes not being configured properly (config/routes.rb file). The Rails log file is usually very informative and will tell you why your application is not working correctly. Check the log file in the “log” directory for more information. The routing error will probably look something like this:ActionController::RoutingError (No route matches "/approot/" with {:method=>:get}):If you receive an error similar to that, you will need to adjust your routes accordingly to
accommodate the base URL. You can get a good overview of your routes by running “rake routes”
from anywhere within your application directory.
Restarting Your Application
Since adding Phusion, we have received quite a few requests regarding the best way to restart
a Rails application. Phusion has provided a very simple mechanism for accomplishing this.
All you need to do is create or modify a “restart.txt” file within the “tmp” directory of your
application. If your application is located at “/home/user/mygreatapp/” you would simply run:touch /home/user/mygreatapp/tmp/restart.txtSource: http://wiki.site5.com/Scripting_and_Development_Guide#Ruby_on_Rails

Recent Comments