在 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
or /srv
。
您可能希望遵循文件系统层次标准 (FHS)并将其放置在
编辑:
我不会把它放在
/opt
:它的目的说:
我不认为开发的应用程序是“软件包”。
理由
/srv
是我知道 rails 应用程序是一个 cgi 脚本,应该放在
/srv
.在 CentOS Linux 发行版(以及随后的 RedHat)上,当您安装 httpd 软件包(适用于 Apache 2)时,它会创建
/var/www
并期望您的虚拟主机指向您的 Web 内容。默认虚拟主机通常转储在 中/var/www/htdocs
,后续站点/应用程序应放入/var/www/sitename
.实际位置应该无关紧要,但通常会看到
/opt/www/sitename
,/var/www/sitename
, 或简单地/opt/www
or/var/www
。您已经说明了一些其他位置(如
/home
)不适合此的一些原因。就个人而言,我更喜欢它,
/var/www/sitename
因为它对 Apache 和 Rails 很友好,并且是系统范围的。我认为/opt将是这样的应用程序的地方。我同意按照 chmeee 的建议遵循 FHS,但我不同意 Rails 应用程序本身就是一项服务。
在基于 debian/ubuntu 的系统中,此类应用程序通常安装在 /usr/share 文件夹(即 /usr/share/ruby)中,因为它们是非编译文件(将进入 /usr/lib)。由于您的应用程序不是标准应用程序,您可能会将其放在 /usr/local/share 中,以防止它被任何系统更新覆盖。
/opt 在这里当然也是一种可能性。
我通常将它们放在 /opt/app_name 中。
我保留我的部署
/home/www.example.com/application
论据:
主页将包含单个网站的所有活动部分。如果我有更多的网站,我会知道在哪里可以找到它们。