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

Agv*_*rth 24 linux deployment redhat ruby-on-rails apache-2.2

在 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.
Run Code Online (Sandbox Code Playgroud)

在这里做的最不令人惊讶、最正常的事情是什么?

(背景信息——Rails 应用程序是一堆用 Ruby 编写的服务器端代码以及一个public包含 JavaScript、CSS 和一些 HTML 的public目录。该目录被映射到一个 Apache vhost。Apache 通过一个模块处理 Ruby 代码称为乘客或mod_rails。)


谢谢大家的帮助。我想我会去的/opt/deployed_rails_apps。(我喜欢长的、说明性的目录名称和选项卡完成。)/var/...也是一个好地方,但是当我试图在那里部署东西时,我收到了来自 IT 的严厉抱怨。如果是我自己的机器,我可能会选择/var/srv

chm*_*eee 7

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

/srv : Data for services provided by this system
Run Code Online (Sandbox Code Playgroud)

编辑:

我不会把它放在/opt

/opt : Add-on application software packages
Run Code Online (Sandbox Code Playgroud)

它的目的说:

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

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

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

理由/srv

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

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


小智 7

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

实际位置应该无关紧要,但通常会看到/opt/www/sitename, /var/www/sitename,或者只是/opt/www/var/www

您已经说明了一些其他位置(如/home)并不真正适合于此的一些原因。

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


Arg*_*tyr 5

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