我应该将Rails应用程序部署到哪个目录?


24

在Linux系统上将我的生产Rails应用程序部署到的合理且逻辑目录应该是什么?

一些候选人...

/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.

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

(背景信息-Rails应用是一堆用Ruby编写的服务器端代码,以及一个public包含JavaScript,CSS以及可能包含一些HTML的public目录。该目录已映射到Apache虚拟主机。Apache通过模块处理Ruby代码称为乘客或mod_rails。)


谢谢大家的帮助。我想我要去了/opt/deployed_rails_apps。(我喜欢长的,说明性的目录名和制表符补全。)/var/...也是一个好地方,但是当我尝试在其中部署内容时,我已经从IT那里苦苦挣扎。如果是我自己的机器,我可能会选择/var/srv


您可能希望看到这个其他相关的问题:serverfault.com/questions/29129/...
chmeee

一个附带的问题,但仍然是相关的,我正在〜/ Documents / quotes(目录)中包含一个Rails项目,并且在部署它后大约6个月后发现令我惊讶的是,相同的文件夹结构也位于/ var / www / html / quotes-部署时,rails会将其复制到var文件夹吗?我不知道如何从其他目录到达那里。任何帮助将不胜感激
BKSpurgeon '16

Answers:


5

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


很难说,实际上Rails软件安装在系统中某个地方(作为gem或package),他想要放置的是“服务”的目录结构,这是使用rails进行服务的实际应用程序。
chmeee

我意识到他在谈论自己创建的应用程序(因此称为“ Rails应用程序”),而不是Rails本身。无论哪种方式,/ srv似乎都是错误的。
09年

7

在CentOS Linux发行版(以及随后的RedHat)上,安装httpd软件包(对于Apache 2)时,它会创建/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友好,并且是系统范围的。


1
Web应用程序应该放在/ var / www中,特别是通过诸如Lighttpd的Apache之类的适当网络服务器来提供服务时。更是如此,因为SELinux策略将正确地应用于/ var / www中的Rails应用程序,而不是/ opt中。
wzzrd

6

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

/srv : Data for services provided by this system

编辑:

我不会将它放在/opt

/opt : Add-on application software packages

目的是说:

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

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

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

理由/srv

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

我知道Rails应用是cgi脚本,应该放在中/srv


对于FHS所说的话,我不会太狂热。最重要的是使自定义程序包远离操作系统文件。最好的位置是“ / usr / local”和“ / opt”。
2009年

1
我并不狂热,但我喜欢他们的文件系统组织。无论如何,我都同意/ usr / local和/ opt是适合软件包的,但我不认为Rails应用程序是软件包
chmeee

1
根据FHS所说,/srv对我来说似乎是最合适的目录。我正在使用/srv/rails/application_name
Teemu Leisti


0

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

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


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.