今からお前んちこいよ

多摩川沿いにて細々とお勉強。

アプリケーション配置における /home/[user]/ 派と /var/local/[app] 派の話

概要

いろいろな会社やチームで働くとサーバ内のディレクトリお作法が各々あることに気づく。 特にアプリケーションの配置場所が /home/[user]/ なのか /var/local/ なのか。

/home/[user]/ 派

インフラエンジニア = ネットワーク・サーバ構築運用
ソフトウェア開発エンジニア = アプリケーション開発リリース
項目 配置場所
操作ユーザ [user]
アプリケーション /home/[user]/public_html/[app]
webドキュメントルート /home/[user]/public_html/
アクセスログ等 /home/[user]/log/

あくまで一例。
まず、アプリケーション用ユーザを作る。 apacheやnginxなどのドキュメントルートをユーザディレクトリ配下に設定し、同様にアクセスログなどもユーザディレクトリ配下に出力するよう設定する。ログローテートも /home/[user]/log/ のものを設定する。

  • 良い点: root権無しで済むので安全面で良い
  • 面倒な点: ミドルウェアなどroot権が必要な時インフラと開発のブリッジが必要になる

/var/local/[app] 派

インフラエンジニア = ネットワーク構築運用
ソフトウェア開発エンジニア = サーバ構築運用・アプリケーション開発リリース
インフラエンジニア = ネットワーク構築運用・サーバ構築(手順作成)運用
ソフトウェア開発エンジニア = アプリケーション開発
リリースエンジニア = サーバ構築(本番反映作業)・アプリケーションリリース

などで区分けされている時や単にDocker使ってるなどで見る構成例。
1つ目の区別だとソフトウェア開発エンジニア、
2つ目の区別だとリリースエンジニアがリリース実行者。

項目 配置場所
操作ユーザ root
アプリケーション /usr/local/[app], [ドキュメントルート]/[app]
webドキュメントルート デフォルトのパス
アクセスログ等 デフォルトのパス
  • 良い点: サーバのディレクトリ構成に従った配置でわかりやすい
  • 面倒な点: root権注意。本番環境で # rm -rf / も起こるんだ(実話)

終わりに

会社ごとでソフトウェア開発エンジニアといえどコードを書く以外にリリースまでやったりサーバ構築をやったりただコードだけ書けばよかったり本当に様々。会社のチーム分け次第でやることは大きく変わり、サーバの中身を見るとなんとなく会社組織もわかるっと言いたかったのです。