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.
ここで行う最も驚くべきことではなく、最も普通のことは何でしょうか?
public
(背景情報 - Rails アプリは、JavaScript、CSS、場合によっては少しの HTML を含む dirとともに、Ruby で記述された一連のサーバー側コードです。このpublic
dir は Apache vhost にマップされます。Apache は、Passenger またはと呼ばれるモジュールを通じて Ruby コードを処理しますmod_rails
。)
皆さん、助言をありがとうございました。 を使うつもりです/opt/deployed_rails_apps
。 (私は長くて説明的なディレクトリ名とタブ補完が好きです。)/var/...
も良い場所ですが、そこに何かを展開しようとすると IT から厳しい苦情を受けました。自分のマシンであれば、/var
またはを使うかもしれません/srv
。
答え1
私は思う/optは、応用このように。chmeee が提案した FHS に従うことには同意しますが、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
、vhost がここで Web コンテンツを指すことが想定されます。デフォルトの vhost は通常 にダンプされ/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/lib にインストールされる) であるため、通常は /usr/share フォルダー (つまり /usr/share/ruby) にインストールされます。アプリケーションは標準アプリケーションではないため、システム アップデートによって上書きされないように /usr/local/share に配置することになります。
/opt も確かにここで可能です。