2014-03-16

zabbixをnginxで動かす!

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は一つしか適用されず、正規表現が優先されるっていうところでプチハマりしました…。

参考URL:http://heartbeats.jp/hbblog/2012/04/nginx05.html

このエントリーをはてなブックマークに追加