What dir should I deploy Rails apps into?

Solution 1:

On CentOS Linux distributions (and subsequently RedHat), when you install the httpd package (for Apache 2), it creates /var/www, and expects that your vhosts point to your web content here. The default vhost is typically dumped in /var/www/htdocs, and subsequent sites/apps should be put in /var/www/sitename.

The actual location shouldn't matter much, but it's common to see /opt/www/sitename, /var/www/sitename, or simply /opt/www or /var/www.

You've already stated a few of the reasons why some of the other locations (like /home) are not really suited for this.

Personally, I prefer /var/www/sitename since it's friendly to Apache and Rails, and is system-wide.

Solution 2:

You may want to follow the Filesystem Hierarchy Standard (FHS) and place it in

/srv : Data for services provided by this system

EDIT:

I wouldn't place it in /opt:

/opt : Add-on application software packages

It's purpose says:

/opt is reserved for the installation of add-on application software packages.

A package to be installed in /opt must locate its static files in a separate /opt/ or /opt/ directory tree, where is a name that describes the software package and is the provider's LANANA registered name.

I don't think a developed application is a 'software package'.

The rationale for /srv is

This main purpose of specifying this is so that users may find the location of the data files for particular service, and so that services which require a single tree for readonly data, writable data and scripts (such as cgi scripts) can be reasonably placed.

I understand that a rails app is a cgi script and should be placed in /srv.


Solution 3:

I think /opt would be the place for an application like this. I agree with following the FHS as suggested by chmeee, but I don't agree that a Rails app is a service per se.