さくらのVPS設定[7]-NginxとNode.jsを組み合わせた時のディレクトリ・グループ構成

改めてディレクトリ構成やグループとかを決め直した。
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/に変更した。

Submit a Comment

Spam Protection by WP-SpamFree