DigitalOceanの512MBプランでやっている都合上メモリは極力抑えたい。
apacheだとメモリ食いまくるので貧乏人節約家的にはシングルスレッドなWebサーバで
メモリは安くやりたいところです。
ということで前回インストールしたzabbixをnginxで動かします。
で、方法は色々とありそうですが、こちらの方法が簡単そうだったのでトライしてみました。
原理は簡単で、zabbixのパスでアクセスしてきたら
/usr/share/zabbix(phpアプリの場所)にアクセスするようにリンクを貼ってあげて
phpに対するアクセスはphp-fpmに渡せばOK。
ついでにSSLも対応しちゃいます。
まずはnginxとphp-fpmのインストールから
$ apt-get install nginx php5-fpm
ドキュメントルート直下にリンクを貼る
$ ln -s /usr/share/zabbix /usr/share/nginx/www/zabbix
SSLの証明書&キーを作成
$ cd /etc/nginx
$ openssl req -new -days 365 -x509 -nodes -keyout cert.key -out cert.crt
ログ用のディレクトリを作成
$ mkdir /var/log/nginx/zabbix
/etc/nginx/conf.d/zabbix.confを作成
server {
listen 80;
listen 443 default_server ssl;
root /usr/share/nginx/www;
ssl on;
ssl_certificate /etc/nginx/cert.crt;
ssl_certificate_key /etc/nginx/cert.key;
ssl_session_timeout 5m;
ssl_protocols SSLv2 SSLv3 TLSv1;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
server_name ************;
index index.html;
access_log /var/log/nginx/zabbix/access_log main;
error_log /var/log/nginx/zabbix/error_log error;
location /zabbix {
index index.php;
}
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
/etc/php5/fpm/php.iniを以下のように設定
date.timezone = Asia/Tokyo
post_max_size = 32M
max_execution_time = 300
max_input_time = 300
nginxとphp-fpmを起動!
$ service nginx start
$ service php5-fpm restart
で、nginx + php5-fpmで動かしてみた結果…メモリ全然減らないorz
topで見てみたら、結局php5-fpmがメモリ食いまくってるっていうオチw
ちなみに、今回はlnでリンク貼る方法でしたが、aliasでもいけちゃいます。
こんな感じのlocationディレクティブを/etc/nginx.conf.d/zabbix.confに設定すればOK
location ~ ^/zabbix/(.*\.php)$ {
alias /usr/share/zabbix/$1;
index index.php;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
location /zabbix {
alias /usr/share/zabbix;
}
php以外はそのままaliasでOKなんだけど、phpはalias貼りつつfastcgiにちゃんと渡してあげないとダメ。
locationは一つしか適用されず、正規表現が優先されるっていうところでプチハマりしました…。