什么是在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他们。