はじめに
次の CentOS 7 の最新 PHP および MariaDB の LEMP 環境を構築する Ansible プレイブックを作成する際に躓いたことや得たことのノートです。
rpm を yum インストールする際に冪等性を保つようにする方法
remi-release-7 リポジトリを Ansible の yum モジュールを使用してインストールしようとしました。
state: latest にすると、2回目以降にエラーとなってしまった><。
これは、冪等性を保つためには、state: present とすれば大丈夫だった♪
TASK [php-fpm : Install remi-release-7] **************************************** fatal: [default]: FAILED! => {"changed": true, "failed": true, "msg": "エラー: 何もしません\n", "rc": 1, "results": ["読み込んだプラグイン:fastestmirror\n/var/tmp/yum-root-wXLzEC/remi-release-7.rpm を調べています: remi-release-7.3-1.el7.remi.noarch\n/var/tmp/yum-root-wXLzEC/remi-release-7.rpm: インストールされたパッケージを更新しません。\n"]} to retry, use: --limit @/vagrant/ansible/site.retry
修正した Ansible プレイブック内容は次のようになりました。
--- - name: Install remi-release-7 yum: name: http://rpms.famillecollet.com/enterprise/remi-release-7.rpm state: present ... 略 ...
ファイル全体は次のとおりです。
php-fpm で PHP を動かすためにデフォルトの Nginx 設定ファイルから修正する点
php を動かすためには、location ディレクティブから root を 1 つ上の階層へ動かして server ディレクティブに移動しなければ機能しませんでした。
これ、以前も同じところで躓いていました><。
- 【VirtualBox】【Mac】【CentOS7】LAMP (ただし Nginx) 環境を整える – oki2a24
- 解決方法の解説ページも再度掲載
CentOSにnginx, php-fpm, mysqlの環境を構築する1 – Qiita
具体的な修正は以下の通りとなりました♪
--- /etc/nginx/conf.d/default.conf.org 2017-06-03 16:59:34.160891933 +0900 +++ /etc/nginx/conf.d/default.conf 2017-06-03 16:37:11.000000000 +0900 @@ -5,10 +5,8 @@ server { #charset koi8-r; #access_log /var/log/nginx/log/host.access.log main; - location / { - root /usr/share/nginx/html; - index index.html index.htm; - } + root /usr/share/nginx/html; + index index.html index.htm index.php; #error_page 404 /404.html;
ファイル全体は次のとおりです。
php-fpm を使用する場合の PHP エラーログ出力方法
では Apache での設定を行っていましたが、同じように設定してもログが出力されません><。
ひとまず php-fpm のエラーログに出力するように設定しました。
別ファイルに書き出したくなったら、上記 2 つ目のページを参考にし、さらに SELinux に注意すればよさそうです。
php-fpm 設定ファイルを次のようにして、PHP エラーが出力されることが確認できました♪
注意点として、設定ファイルにも記述されているとおり、性能が劣化する ようです。
@@ -361,7 +361,7 @@ slowlog = /var/log/php-fpm/www-slow.log ; Note: on highloaded environement, this can cause some delay in the page ; process time (several ms). ; Default Value: no -;catch_workers_output = yes +catch_workers_output = yes ; Clear environment in FPM workers ; Prevents arbitrary environment variables from reaching FPM worker processes
ファイル全体は次のとおりです。
- vagrant-ansible/www.conf.patch at add34933031f06d6bc6c6f2ba9665d38cd5a3892 · oki2a24/vagrant-ansible
なお、確認には次のようにファイルを作成して、コードを一部消してわざとエラーを発生させて行いました。
echo "<?php phpinfo(); ?>" > /usr/share/nginx/html/test.php
おわりに
今回で、最低限の LEMP 環境ができたと思います。
次は、LEMP + WordPress を構築したいです!
以上です。