What would be a reasonable and logical directory into which to deploy my production Rails apps on a Linux system?
Some candidates...
/var/rails <= There's a /var/www so this would be consistent with that
pattern. But I.T. guys have complained about stuff in /var
before.
/home/my_home_dir/rails <= OK, not /var, but I'm not the only developer.
Seems like it really ought to be a systemwide
location.
/home/rails <= I don't know. That just seems weird.
/rails <= Seems even weirder.
What is the least astonishing, most normal thing to do here?
(Background info -- a Rails app is a bunch of server side code written in Ruby along with a public
dir containing JavaScript, CSS, and maybe a little HTML. The public
dir is mapped to an Apache vhost. Apache handles the Ruby code through a module called Passenger or mod_rails
.)
Thanks for the help, all. I think I'm going to go with /opt/deployed_rails_apps
. (I like long, expository directory names, and tab completion.) /var/...
is also a good place, but I've gotten stern grumbling from I.T. when I tried to deploy stuff there. If it were my own machine I might go with /var
or /srv
.
You may want to follow the Filesystem Hierarchy Standard (FHS) and place it in
EDIT:
I wouldn't place it in
/opt
:It's purpose says:
I don't think a developed application is a 'software package'.
The rationale for
/srv
isI understand that a rails app is a cgi script and should be placed in
/srv
.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.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.
In debian/ubuntu based system such applications are usually installed in /usr/share folder (i.e. /usr/share/ruby), since they are non-compiled files (which would go into /usr/lib). Since your application is not a standard application you would probably put it in /usr/local/share preventing it there being overwritten by any system updates.
/opt is certainly also a possibility here.
I usually put them in /opt/app_name.
I keep my deploys in
/home/www.example.com/application
The arguments:
Home will contain all the moving parts of a single website. If I have more websites I will know where to find them.