Какой каталог будет разумным и логичным для развертывания моих производственных приложений Rails в системе Linux?
Некоторые кандидаты...
/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 через модуль, называемый Passenger или mod_rails
.)
Спасибо всем за помощь. Думаю, я пойду с /opt/deployed_rails_apps
. (Мне нравятся длинные, понятные имена каталогов и автодополнение по табуляции.) /var/...
тоже хорошее место, но я получил суровое ворчание от ИТ, когда попытался развернуть там что-то. Если бы это была моя собственная машина, я бы, наверное, выбрал /var
или /srv
.
решение1
Я думаю/выборбыло бы место дляприложениекак это. Я согласен следовать FHS, как предлагает chmeee, но я не согласен, что приложение Rails является службой как таковой.
решение2
Вы можете следоватьСтандарт иерархии файловой системы (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
.
решение3
В дистрибутивах CentOS Linux (и впоследствии RedHat) при установке пакета httpd (для Apache 2) он создает /var/www
, и ожидает, что ваши vhosts указывают на ваш веб-контент здесь. Виртуальный хост по умолчанию обычно выгружается в /var/www/htdocs
, а последующие сайты/приложения следует помещать в /var/www/sitename
.
Фактическое местоположение не имеет большого значения, но часто можно увидеть /opt/www/sitename
, /var/www/sitename
, или просто /opt/www
или /var/www
.
Вы уже назвали несколько причин, по которым некоторые другие места (например, /home
) не совсем подходят для этого.
Лично я предпочитаю этот вариант, /var/www/sitename
поскольку он дружелюбен к Apache и Rails и действует на уровне всей системы.
решение4
В системах на базе Debian/Ubuntu такие приложения обычно устанавливаются в папку /usr/share (т. е. /usr/share/ruby), поскольку они являются нескомпилированными файлами (которые попадут в /usr/lib). Поскольку ваше приложение не является стандартным, вы, вероятно, поместите его в /usr/local/share, чтобы предотвратить его перезапись обновлениями системы.
/opt здесь, безусловно, тоже возможен.