Alpineでnginx

さくらのVPS で Alpine Linux を立ち上げられたので、さて次は Webサーバーを何にしようかと考えました。自宅サーバーの時は lighttpd を使っていたのですが、KUSANAGI で nginx の軽さを実感してから、どうも気になります。

せっかくですので、初めての nginx 導入に挑戦することにしました。ネットで調べてみると「Alpine Linuxでnginx + php-fpmな環境を構築する」こちらの方のそのものズバリな情報が。ありがたいです。

Alpine Linux 3.6.2 なので php は php5 と php7 の両方が含まれています。新しもの好きなので php7-fpm を選択しました。設定に使うファイルは、メインの php-fpm.conf でグローバル設定をしてから /etc/php7/php-fpm.d/ にあるファイルを読み込むようになっています。

/etc/php7/php-fpm.d/www.conf

デフォルトは www.conf になっています。PostgreSQL のデータディレクトリの時も感じましたが、設定ファイルの置き場所が debian 風になってきてます。debian 使いとしては分かりやすくていい感じです。コメントに使う文字は [;] セミコロンなのでご注意下さい。

大事なポイントは unix ソケットのユーザーを nginx にあわせることです。今回はデフォルトなので

listen.owner = nginx
listen.group = nginx

とすれば大丈夫。
nginx 側の設定ファイルはメインが /etc/nginx/nginx.conf で、/etc/nginx/conf.d/ にあるファイルを読み込む設定です。ヴァーチャルサーバーの設定はこちらに書くのがお作法。デフォルトでは default.conf があります。これはホスト名が該当しない場合に 404 not found を返すための設定なので、php とあわせて www.conf を作りました。中身はこんな感じです。
server {
    listen 80;
    server_name example.com;

    location ~\.php$ {
    root /var/www/localhost/htdocs;
    fastcgi_pass unix:/var/run/php-fpm.sock;
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include fastcgi_params;
    }
}

これで php を実行してくれます。nginx はヴァーチャルホストがデフォルトなんですね。Apache より設定が直感的で分かりやすいように思いました。