カテゴリー
Linux

【Ansible】最新 LEMP 環境構築プレイブックを作成するときに得られたものまとめ

はじめに

次の 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 ディレクティブに移動しなければ機能しませんでした。

これ、以前も同じところで躓いていました><。

具体的な修正は以下の通りとなりました♪

--- /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

ファイル全体は次のとおりです。

なお、確認には次のようにファイルを作成して、コードを一部消してわざとエラーを発生させて行いました。

echo "<?php phpinfo(); ?>" > /usr/share/nginx/html/test.php

おわりに

今回で、最低限の LEMP 環境ができたと思います。

次は、LEMP + WordPress を構築したいです!

以上です。

コメントを残す