Nginxでの設定
Ver3.10よりNginxでの動作を正式サポートしました。
動作環境
- Nginx
- Perl用FCGIモジュール
Debian系の場合は「libfcgi-perl」をインストールしてください。
以下のラッパーモジュールは不要です。adiaryはそのままでFastCGIに対応しています。
- fcgiwrap
- spawn-fcgi
- fastcgi-wrapper.pl
設定方法
Nginx側では以下のように設定します。
server { listen 80 default_server; listen [::]:80 default_server; server_name <Your-Server-Name>; root /path/to/adiary; location / { try_files $uri @adiary; } location /__cache { deny all; } location /data { deny all; } location ~ \.cgi$ { deny all; } location @adiary { include fastcgi_params; fastcgi_pass 127.0.0.1:9000; fastcgi_param Basepath /; # Ver3.50より前のバージョンでは以下の設定も必要 fastcgi_param ModRewrite 1; } }
- 「<Your-Server-Name>」「/path/to/」の部分はご自分の環境に置き換えてください。
- 「SCRIPT_FILENAME」は不要です。
adiaryを起動させる
この状態で、コンソールからadiary.fcgiを起動すれば利用できます。
./adiary.fcgi 127.0.0.1:9000 30
- 第1引数がListenするポートです。UNIXドメインソケット(ファイル)を指定しても構いません。
- (Ver3.50~)第2引数は生成スレッド数です。デフォルトは10です。
- 実行させた権限で動作しますので、絶対にroot権限で起動してはいけません。
- 常駐させたい場合は最後に「&」を付けてください。
サーバの起動時、自動的に「adiary.fcgi」を起動させるためには、/etc/rc.local にスクリプトを書くなどの何かしらの細工が必要です。
su www-data -c '/path/to/adiary.fcgi 127.0.0.1:9000' &
もしくは、root以外の起動させたいユーザー権限でcrontabを登録するのも良いでしょう。
@reboot /path/to/adiary.fcgi 127.0.0.1:9000 &
UNIX domain socketを使用する場合
TCP接続より少しだけ速くなるUNIX domain socketを使用した設定例です。ソケットのパーミッション問題(502 Bad Gateway)で悩みたくなければ、Ver3.40以降推奨。
location @adiary { include fastcgi_params; fastcgi_pass unix:/path/to/adiary.sock; fastcgi_param Basepath /; }
./adiary.fcgi adiary.sock
ちょっと特殊な設定例
Document Rootに置かない場合
もしDocument Root(/path/to)配下の /adiary-path/ に実ファイルを置いた場合は、以下の部分を変更してください。
server { root /path/to; location /adiary-path/ { # 略 } location @adiary { # 略 fastcgi_param Basepath /adiary-path/; } }
aliasのように貼り付ける場合
無関係なDocument Rootに /adiary/ としてaliasのように設置する場合は、以下のようにしてください。
server { listen 80 default_server; listen [::]:80 default_server; server_name theta; root /var/www; location /adiary/ { root /path/to/adiary; if ($uri ~ ^/adiary/(.+)$) { set $x $1; } if (-f $document_root/$x) { rewrite ^/adiary/(.*)$ /$1 break; } error_page 404 = @adiary; } location /adiary/__cache { deny all; } location /adiary/data { deny all; } location ~ \.cgi$ { deny all; } location @adiary { include fastcgi_params; fastcgi_pass 127.0.0.1:9000; fastcgi_param Basepath /adiary/; } }