我应该将Rails应用程序部署到什么目录?

什么是在Linux系统上部署我的生产Rails应用程序的合理和合理的目录?

一些候选人…

/var/rails <= There's a /var/www so this would be consistent with that pattern. But IT 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. 

什么是最惊人的,最正常的事情在这里做?

(背景信息 – 一个Rails应用程序是一堆用Ruby编写的服务器端代码,还有一个包含JavaScript,CSS和一些HTML的public目录, public dir映射到Apache vhost。一个叫Passenger或mod_rails的模块。)


感谢您的帮助,一切。 我想我会去/opt/deployed_rails_apps 。 (我喜欢long,expository目录名和tab完成。) /var/...也是一个好地方,但是当我试图在那里部署东西的时候,我从IT那里得到了严厉的抱怨。 如果它是我自己的机器,我可能会去/var/srv

    我认为/ opt会是这样的应用程序的地方。 我同意遵循由chmeeebuild议的FHS,但我不同意Rails应用程序本身就是一项服务。

    在CentOS Linux发行版(以及随后的RedHat)上,安装httpd软件包(用于Apache 2)时,会创build/var/www ,并期望您的虚拟主机指向您的Web内容。 默认的虚拟主机通常被转储到/var/www/htdocs ,随后的网站/应用程序应该放在/var/www/sitename

    实际的位置应该没什么问题,但是经常看到/opt/www/sitename/var/www/sitename ,或者简单的/opt/www或者/var/www

    你已经指出了一些其他地点(如/home )不适合这个的一些原因。

    就个人而言,我更喜欢/var/www/sitename因为它对Apache和Rails是友好的,并且是系统范围的。

    您可能要遵循文件系统层次结构标准(FHS)并将其放入

     /srv : Data for services provided by this system 

    编辑:

    我不会把它放在/opt

     /opt : Add-on application software packages 

    它的目的是说:

    / opt保留用于安装附加应用程序软件包。

    要安装在/ opt中的软件包必须将其静态文件定位在单独的/ opt /或/ opt /目录树中,其中是描述软件包的名称,并且是提供程序的LANANA注册名称。

    我不认为开发的应用程序是一个“软件包”。

    /srv的基本原理是

    指定这个的主要目的是使用户可以find特定服务的数据文件的位置,并且可以合理地放置需要用于只读数据,可写数据和脚本(例如cgi脚本)的单一树的服务。

    我知道一个rails应用程序是一个cgi脚本,应该放在/srv

    我通常把它们放在/ opt / app_name中。

    在基于debian / ubuntu的系统中,这样的应用程序通常安装在/ usr / share文件夹(即/ usr / share / ruby​​)中,因为它们是非编译的文件(将进入/ usr / lib)。 由于您的应用程序不是标准应用程序,因此您可能会将其放在/ usr / local / share中,以防止它被任何系统更新覆盖。

    / opt在这里当然也是可能的。

    我保持我的部署

    /home/www.example.com/application

    论点:

    首页将包含单个网站的所有移动部分。 如果我有更多的网站,我会知道在哪里find他们。