「Ansible で CentOS 6.5 に WordPress + Nginx + PHP-FPM 環境をさくっと構築(Vagrantバージョン & さくらのVPSバージョン)」の続きです。
前回は、
https://github.com/ansible/ansible-examples/tree/master/wordpress-nginx
の Ansible Playbook を使って、Vagrant で起動した仮想マシン (CentOS 6.5) に WordPress + Nginx + PHP-FPM の環境構築を試してみたわけですが、今回は、WordPress のバージョンを WordPress日本語版の最新版(2014年6月時点)に入れ替えてみたいと思います。
やりたいこと
Vagrant + VirtualBox で起動した仮想マシン(CentOS 6.5)に、Ansible を使って WordPress日本語版 3.9.1 + Nginx + PHP-FPM を自動構築
環境
- ホストマシン: Mac OS X 10.9.3
- ゲストマシン: CentOS 6.5 (64bit) on Vagrant 1.4.3 + VirtualBox
改良したのは、以下の二点です。
二つ目は、前回「何でだろ?」と気になっていたのでついでに直してみました。
なお、改良バージョンの Playbook は GitHub にアップしておきました。
どうぞお使いくださいませ。
https://github.com/akiyoko/ansible-examples
やったこと
1. WordPress のバージョンを、3.7 から 日本語版 3.9.1 に入れ替え
diff --git a/wordpress-nginx/group_vars/all b/wordpress-nginx/group_vars/all index 1d198eb..1920cf8 100644 --- a/wordpress-nginx/group_vars/all +++ b/wordpress-nginx/group_vars/all @@ -1,7 +1,7 @@ --- # Which version of Wordpress to deploy -wp_version: 3.7 -wp_sha256sum: 94b8b7a7241ec0817defa1c35f738d777f01ac17a4e45ee325c0f1778504fd94 +wp_version: 3.9.1 +wp_sha256sum: f08b4712b352fbf8d76697ff402f1edaefb3f310115343e1850c03ec97acd874 # These are the Wordpress database settings wp_db_name: wordpress diff --git a/wordpress-nginx/roles/wordpress/tasks/main.yml b/wordpress-nginx/roles/wordpress/tasks/main.yml index c3e1a95..59d6835 100644 --- a/wordpress-nginx/roles/wordpress/tasks/main.yml +++ b/wordpress-nginx/roles/wordpress/tasks/main.yml @@ -1,6 +1,6 @@ --- - name: Download Wordpress - get_url: url=http://wordpress.org/wordpress-{{ wp_version }}.tar.gz dest=/srv/wordpress-{{ wp_version }}.tar.gz + get_url: url=http://ja.wordpress.org/wordpress-{{ wp_version }}-ja.tar.gz dest=/srv/wordpress-{{ wp_version }}.t sha256sum="{{ wp_sha256sum }}" - name: Extract archive @@ -27,4 +27,4 @@ template: src=wp-config.php dest=/srv/wordpress/ - name: Change ownership of Wordpress installation - file: path=/srv/wordpress/ owner=wordpress group=wordpress state=directory recurse=yes \ No newline at end of file + file: path=/srv/wordpress/ owner=wordpress group=wordpress state=directory recurse=yes diff --git a/wordpress-nginx/roles/wordpress/templates/wp-config.php b/wordpress-nginx/roles/wordpress/templates/wp index a570c72..ead9e45 100644 --- a/wordpress-nginx/roles/wordpress/templates/wp-config.php +++ b/wordpress-nginx/roles/wordpress/templates/wp-config.php @@ -63,7 +63,7 @@ $table_prefix = 'wp_'; * de_DE.mo to wp-content/languages and set WPLANG to 'de_DE' to enable German * language support. */
https://github.com/akiyoko/ansible-examples/commit/085cdbb7e2e6370c22ae6a9db7e923463872b380
WordPress の取得先を変更して、SHA256チェックサム(ファイルが正常にダウンロードできたかをチェックするためのもの)を調べて書き換えました。
$ curl -O http://ja.wordpress.org/wordpress-3.9.1-ja.tar.gz % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 6098k 100 6098k 0 0 1078k 0 0:00:05 0:00:05 --:--:-- 1348k $ shasum -a 256 wordpress-3.9.1-ja.tar.gz f08b4712b352fbf8d76697ff402f1edaefb3f310115343e1850c03ec97acd874 wordpress-3.9.1-ja.tar.gz
参考
wp-config.php も WordPress日本語版の構築時に自動生成されるものに差し替えてしまおうと思ったのですが、比較してみたところ、
define('WPLANG', 'ja');
に変わっていたのと、以下の定義が無くなっていたのしか差分がありませんでした(コメントが日本語になっていたのを除いて)。
/** Disable Automatic Updates Completely */ define( 'AUTOMATIC_UPDATER_DISABLED', {{auto_up_disable}} ); /** Define AUTOMATIC Updates for Components. */ define( 'WP_AUTO_UPDATE_CORE', {{core_update_level}} );
なので結局、元の英語版のものを活かして最低限の修正をすることにしました(「WPLANG」の部分だけ)。
「AUTOMATIC_UPDATER_DISABLED」「WP_AUTO_UPDATE_CORE」については、こちらのサイトが分かりやすかったです。
http://notnil-creative.com/blog/archives/2521
つまり、https://github.com/ansible/ansible-examples/tree/master/wordpress-nginx のデフォルトでは、
// 自動バックグラウンドアップデート機能をOFFにしない(=自動バッググラウンドアップデートを適用) define( 'AUTOMATIC_UPDATER_DISABLED', false ); // メジャーバージョンも自動アップデートを適用 define( 'WP_AUTO_UPDATE_CORE', true );
という設定になっています。気になる方は、wordpress-nginx/group_vars/all の定義を修正して、設定を OFF にしてみてください。
2. SELinux が有効でないとエラーになっていた問題を解決
diff --git a/wordpress-nginx/roles/common/tasks/main.yml b/wordpress-nginx/roles/common/tasks/main.yml index e2c4dee..137a8ff 100644 --- a/wordpress-nginx/roles/common/tasks/main.yml +++ b/wordpress-nginx/roles/common/tasks/main.yml @@ -1,4 +1,9 @@ --- +- name: Check if selinux is running + command: getenforce + register: sestatus + changed_when: false + - name: Install libselinux-python yum: name=libselinux-python state=present diff --git a/wordpress-nginx/roles/mysql/tasks/main.yml b/wordpress-nginx/roles/mysql/tasks/main.yml index 8b97a3e..272328a 100644 --- a/wordpress-nginx/roles/mysql/tasks/main.yml +++ b/wordpress-nginx/roles/mysql/tasks/main.yml @@ -9,6 +9,7 @@ - name: Configure SELinux to start mysql on any port seboolean: name=mysql_connect_any state=true persistent=yes + when: sestatus.stdout != "Disabled" - name: Create Mysql configuration file template: src=my.cnf.j2 dest=/etc/my.cnf
https://github.com/akiyoko/ansible-examples/commit/9a981839e1c81721466041ae8ae26f5431d4c73b
「Configure SELinux to start mysql on any port」のタスクが「SELinux が有効」という前提で記述しているようです。
「mysql_connect_any」は「MySQLが全てのポートに接続できるようにする」ための SELinux の設定なので、そもそも SELinux が無効であればこの設定変更は必要ないと思います。
修正内容としては、「getenforce」の結果を「sestatus」という変数に入れておき、標準出力「stdout」が「Disabled」かどうかで処理をスキップさせるかどうかを判定させました。
ここで「changed_when」は、「changed_when: False」と書くと、タスクが「change」とならないというものです。特に意味はないのですが、
https://github.com/ansible/ansible-examples/blob/master/lamp_simple/roles/common/tasks/main.yml
でも同じように書いていたので、マネしてみました。
参考
検証
1) getenforce が Disabled(SELinux無効) の場合
$ ansible-playbook -u vagrant -k -c paramiko -i hosts site.yml SSH password: (vagrant) PLAY [Install Wordpress, MySQL, Nginx, and PHP-FPM] *************************** GATHERING FACTS *************************************************************** ok: [192.168.33.10] TASK: [Check if selinux is running] ******************************************* ok: [192.168.33.10] TASK: [Install libselinux-python] ********************************************* changed: [192.168.33.10] TASK: [Copy the EPEL repository definition] *********************************** ok: [192.168.33.10] TASK: [Create the GPG key for EPEL] ******************************************* ok: [192.168.33.10] TASK: [Set up iptables rules] ************************************************* changed: [192.168.33.10] TASK: [Install Mysql package] ************************************************* changed: [192.168.33.10] => (item=mysql-server,MySQL-python,libselinux-python,libsemanage-python) TASK: [Configure SELinux to start mysql on any port] ************************** skipping: [192.168.33.10] TASK: [Create Mysql configuration file] *************************************** changed: [192.168.33.10] TASK: [Start Mysql Service] *************************************************** changed: [192.168.33.10] TASK: [Install nginx] ********************************************************* changed: [192.168.33.10] TASK: [Copy nginx configuration for wordpress] ******************************** changed: [192.168.33.10] TASK: [Install php-fpm and deps] ********************************************** changed: [192.168.33.10] => (item=php,php-fpm,php-enchant,php-IDNA_Convert,php-mbstring,php-mysql,php-PHPMailer,php-process,php-simplepie,php-xml) TASK: [Disable default pool] ************************************************** changed: [192.168.33.10] TASK: [Copy php-fpm configuration] ******************************************** changed: [192.168.33.10] TASK: [Download Wordpress] **************************************************** changed: [192.168.33.10] TASK: [Extract archive] ******************************************************* changed: [192.168.33.10] TASK: [Add group "wordpress"] ************************************************* changed: [192.168.33.10] TASK: [Add user "wordpress"] ************************************************** changed: [192.168.33.10] TASK: [Fetch random salts for Wordpress config] ******************************* changed: [192.168.33.10] TASK: [Create Wordpress database] ********************************************* changed: [192.168.33.10] TASK: [Create Wordpress database user] **************************************** changed: [192.168.33.10] TASK: [Copy Wordpress config file] ******************************************** changed: [192.168.33.10] TASK: [Change ownership of Wordpress installation] **************************** changed: [192.168.33.10] NOTIFIED: [restart iptables] ************************************************** changed: [192.168.33.10] NOTIFIED: [restart mysql] ***************************************************** changed: [192.168.33.10] NOTIFIED: [restart nginx] ***************************************************** changed: [192.168.33.10] NOTIFIED: [restart php-fpm] *************************************************** changed: [192.168.33.10] PLAY RECAP ******************************************************************** 192.168.33.10 : ok=27 changed=23 unreachable=0 failed=0
getenforce が「Disabled」なので、「TASK: [Configure SELinux to start mysql on any port] 」が Skip されました。
想定通り。
2) getenforce が Enforcing(SELinux有効) の場合
$ ansible-playbook -u vagrant -k -c paramiko -i hosts site.yml SSH password: (vagrant) PLAY [Install Wordpress, MySQL, Nginx, and PHP-FPM] *************************** GATHERING FACTS *************************************************************** ok: [192.168.33.10] TASK: [Check if selinux is running] ******************************************* ok: [192.168.33.10] TASK: [Install libselinux-python] ********************************************* changed: [192.168.33.10] TASK: [Copy the EPEL repository definition] *********************************** ok: [192.168.33.10] TASK: [Create the GPG key for EPEL] ******************************************* ok: [192.168.33.10] TASK: [Set up iptables rules] ************************************************* changed: [192.168.33.10] TASK: [Install Mysql package] ************************************************* changed: [192.168.33.10] => (item=mysql-server,MySQL-python,libselinux-python,libsemanage-python) TASK: [Configure SELinux to start mysql on any port] ************************** changed: [192.168.33.10] TASK: [Create Mysql configuration file] *************************************** changed: [192.168.33.10] TASK: [Start Mysql Service] *************************************************** changed: [192.168.33.10] TASK: [Install nginx] ********************************************************* changed: [192.168.33.10] TASK: [Copy nginx configuration for wordpress] ******************************** changed: [192.168.33.10] TASK: [Install php-fpm and deps] ********************************************** changed: [192.168.33.10] => (item=php,php-fpm,php-enchant,php-IDNA_Convert,php-mbstring,php-mysql,php-PHPMailer,php-process,php-simplepie,php-xml) TASK: [Disable default pool] ************************************************** changed: [192.168.33.10] TASK: [Copy php-fpm configuration] ******************************************** changed: [192.168.33.10] TASK: [Download Wordpress] **************************************************** changed: [192.168.33.10] TASK: [Extract archive] ******************************************************* changed: [192.168.33.10] TASK: [Add group "wordpress"] ************************************************* changed: [192.168.33.10] TASK: [Add user "wordpress"] ************************************************** changed: [192.168.33.10] TASK: [Fetch random salts for Wordpress config] ******************************* changed: [192.168.33.10] TASK: [Create Wordpress database] ********************************************* changed: [192.168.33.10] TASK: [Create Wordpress database user] **************************************** changed: [192.168.33.10] TASK: [Copy Wordpress config file] ******************************************** changed: [192.168.33.10] TASK: [Change ownership of Wordpress installation] **************************** changed: [192.168.33.10] NOTIFIED: [restart iptables] ************************************************** changed: [192.168.33.10] NOTIFIED: [restart mysql] ***************************************************** changed: [192.168.33.10] NOTIFIED: [restart nginx] ***************************************************** changed: [192.168.33.10] NOTIFIED: [restart php-fpm] *************************************************** changed: [192.168.33.10] PLAY RECAP ******************************************************************** 192.168.33.10 : ok=28 changed=24 unreachable=0 failed=0
Skip されていません。
こちらもうまく行きました。
この Playbook の詳しい使い方については、「Ansible で CentOS 6.5 に WordPress + Nginx + PHP-FPM 環境をさくっと構築(Vagrantバージョン & さくらのVPSバージョン)」をどうぞ。