改めてディレクトリ構成やグループとかを決め直した。
fooはシェルにログインする時のアカウントだ。
作業は以下を参考にさせて頂いた。
グループを使いこなす
ディレクトリ・グループ構成の検討
グループ構成
group;nginx
member;nginx
group;node
member;node
*nodeアカウントについては、必要になってから作成、今は保留する。
group;dev
member;foo dev nginx (node root)
*node、rootアカウントについては、必要になってから設定する。
/usr/local/nginx/
owner;nginx
group;nginx
*問題が出るかもしれないので一通りの設定が落ち着くまで保留する。
/var/tmp/nginx/
owner;nginx
group;nginx
*問題が出るかもしれないので一通りの設定が落ち着くまで保留する。
webアプリ公開用ディレクトリ。
/var/webdev/
owner;dev
group;dev
permission;775
パーミッションはとりあえずwebdevを775にしてdevグループの物は動くようにしておいた。
hogeプロジェクト
/var/webdev/hoge/
hogeプロジェクトの静的部分をhtmlディレクトリ、nodeアプリ等の動的部分をappディレクトリの形にする。
owner・groupはアプリに合わせて決めるが基本は以下の通りとしておく。
/var/webdev/hoge/html/
owner;nginx
group;nginx
permission;644
/var/webdev/hoge/app/
owner;foo
group;foo
permission;755
/var/webdev/html/hoge/
/var/webdev/app/hoge/
とすると、htmlディレクトリ以下、appディレクトリ以下でowner・groupをまとめれるのが良さそうだが、開発時にローカルマシンでプロジェクトを一箇所にまとめて管理しておきたかった事及びappがnodeのみでは無さそうなので、今回は採用しなかった。
ディレクトリ・グループ設定
devユーザーを作成する。アプリ名はとりあえずでindexにしておいた。
$ sudo useradd -s /sbin/nologin dev
補助グループに今まで入っていたグループも指定しておかないと、 補助グループから外されてしまう。
これで一度失敗した。
なのでまず補助グループを確認してから、それを含める形で再度指定する。
$ groups foo foo : foo $ sudo usermod -G dev,foo foo $ groups foo foo : foo dev $ groups nginx nginx : nginx $ sudo usermod -G dev,nginx nginx $ groups nginx nginx : nginx dev
ユーザー確認する。
$ cat /etc/passwd
グループ確認する。
$ cat /etc/group
とりあえずindexのディレクトリを作成する。
$ sudo mkdir -p /var/webdev/index/{html,app} $ cd /var/ $ sudo chown -R dev webdev $ sudo chgrp -R dev webdev $ sudo chmod 775 webdev $ ls -l webdev 合計 4 drwxr-xr-x 4 dev dev 4096 5月 16 09:43 2012 index
各プロジェクトのアクセス権限については、また後で設定する。
confファイルの調整
プロジェクト毎に設定ファイルを置けるようにprojectsディレクトリを作成する。
$ sudo mkdir /usr/local/nginx/conf/projects/
ディレクトリ構成に合わせて設定ファイルの調整をする。
$ sudo nano /usr/local/nginx/conf/nginx.conf
ユーザーはnginxへ変更する。
user nginx;
worker_processesを決めるためにサイトをみると契約したさくらVPS1Gプランは仮想 2コアだった。
worker_processes 2;
デフォルトのroot指定をvar/webdev/index/へ変更する。
プロジェクト毎に設定を読み込めるようにprojects/*.confをincludeする。
http { ・・・ server { ・・・ location / { root /var/webdev/index/html; index index.html index.htm; } ・・・ } ・・・ # Load config files from the /usr/local/nginx/conf/projects/ directory include /usr/local/nginx/conf/projects/*.conf; }
これで契約したVPSをみてみる。
http://www.omusuhi.info/
/var/webdev/index/html/にアップロードしてあった「おむすびコロン。」が表示されている。
試しに適当なのを指定すると、
http://www.omusuhi.info/a
ちゃんと「404 Not Found」がでている。
次回はnginxを導入した理由でもあるリバースプロクシの設定を行う。
追記・/var/www/としていたのをhttpdが使用するディレクトリと被るので/var/webdev/に変更した。