CHANSHIGELOG

いろんなこと

el7+phpenv+nginx(php-fpm)で開発環境を作り直した話 その2

前回からの続き、主にwebサーバー(nginx + php-fpm)に対するの設定を書き残していきます。
chanshige.hatenablog.com

yum install するとき -y をつけてる記事が多いですが、インストールされる内容(依存関係のパッケージ)など眺めながらやるのもオススメですので、書いてません。

では、nginxをインストール

# yum install nginx

自動起動設定もやっておく
# systemctl enable nginx
 ※ nginx.service って明示的に宣言するのもあり

nginxの設定ファイルを用意する
# vi /etc/nginx/conf.d/dev.conf

server {
    listen       81;
    server_name  192.168.33.10:81;

    error_log    /var/log/nginx/error_81.log;
    access_log   /var/log/nginx/access_81.log;

    root         /home/vagrant;
    index        index.html index.htm index.php;

    location / {
        try_files $uri $uri/ /index.php$is_args$args;
    }

    location ~ \.php$ {
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        include        fastcgi_params;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
    }
}

URLはhttp://192.168.33.10:81 、ドキュメントルート(root)は/home/vagrantにしてますが、その他諸々も自由に変えてください。

php-fpmの設定を変更する
# vi /usr/local/phpenv/versions/7.2.13/etc/php-fpm.d/www.conf
user/group を適宜調整してください。よくあるのはどちらもnginxです

; Unix user/group of processes
; Note: The user is mandatory. If the group is not set, the default user's group
;       will be used.
user = vagrant
group = vagrant

phpのバージョンに合わせた、php-fpmをサービス登録する。
既存ファイルを参考にして作る記事や説明が多いですが、phpenvに同梱されているのでコピーして使います。

php7.2 を選択中なので、こちらを使う
※ systemd 配下に置くサービス名はわかりやすくバージョンつけておく
# cp /usr/local/phpenv/versions/7.2.13/etc/systemd/system/php-fpm.service /usr/lib/systemd/system/php-fpm-7.2.13.service

ここまでできたら、あとはnginx, php-fpm を起動すれば完了です。

# systemctl start php-fpm-7.2.13.service
# systemctl start nginx.service

phpのバージョンを変更するときは、以下をやってください。

7.2のphp-fpmとnginxを終了
# systemctl stop php-fpm-7.2.13.service
# systemctl stop nginx.service

バージョン毎のphp-fpm.serviceをコピー
cp /usr/local/phpenv/versions/x.x.x/etc/systemd/system/php-fpm.service /usr/lib/systemd/system/php-fpm-x.x.x.service

起動
# systemctl start php-fpm-x.x.x.service
# systemctl start nginx.service

この作業を通して、アプリケーションやサイト1つ動かすにしても、サーバー側では様々な設定が行われて動いてる(公開できている)ことがよくわかります。

こういったことを気にしなくても、ボタン一つで環境が立ち上がって、快適に使える環境を提供しているサービスがあり、それを支えてる方々は真面目にすげーなと思うばかりです。

今回の手順に関して、細かい内容はググったらだいたい出てくるので割愛してますが、世の中に向けて公開するサーバーを構築する場合は、もっと(設定を)やらないといけないことがたくさんあるので、あくまでもローカルで楽しんでくださいね😂

近いうちに、Dockerを使って開発環境作ってみた話を書こうと思います。

おわり