Ansibleで環境構築(9) - WordPressの設定
今回はWordPressです。
Blogサーバーの設定は最後かも。
もう一つアプリの設定を行うタスクがあるけど、それはあんまり汎用性が無いから書いてもなぁと思ったり。
./roles/blog/tasks/main.yml
- include: wordpress.yml
いつものようにWordPress用のファイルを読み込みます。
./roles/blog/tasks/wordpress.yml
長いので、途中にコメント入れていきます。
---
- name: check if wp_cli does not exist
file: path=/usr/local/bin/wp state=file
register: cli_exists
ignore_errors: yes
tags: wordpress
- name: install wp-cli
shell: curl -kL https://raw.github.com/wp-cli/builds/gh-pages/phar/wp-cli.phar > ~/wp-cli.phar
when: cli_exists|failed
tags: wordpress
- name: change attribute wp-cli
file: path=~/wp-cli.phar mode=0755
when: cli_exists|failed
tags: wordpress
- name: install wp-cli
command: mv -f ~/wp-cli.phar /usr/local/bin/wp
when: cli_exists|failed
tags: wordpress
WP-CLIという、コマンドラインからWordPressを操作できるようにするツールを入れています。
以降、WordPressのインストールではこのツールがメインです。
- name: download WordPress
sudo: no
command: >
wp core download --locale=ja --version={{ wordpress_version }} --path=/var/www
chdir=/var/www/
creates=/var/www/index.php
tags: wordpress
- name: create wp-config
sudo: no
command: >
wp core config --dbname={{ db_name }} --dbuser={{ db_user }} --dbpass={{ db_password }} --dbprefix={{ wordpress_db_prefix }} --locale=ja --path=/var/www
chdir=/var/www/
creates=/var/www/wp-config.php
tags: wordpress
WordPressをダウンロードして、wp-config.phpファイルを作っています。
#- name: create database
# sudo: no
# command: >
# wp db create
# chdir=/var/www/
# tags: wordpress
- name: create database user
mysql_user: >
name={{ db_user }}
password={{ db_password }}
priv={{ db_name }}.*:ALL
state=present
tags: wordpress
- name: create database
mysql_db: name={{ db_name }} state=present
register: db_exists
tags: wordpress
WordPressのデータベースを作っています。
WP-CLIのコマンドでも作れますが、2回目以降にエラーになるため、冪等性が確保できないのでmysql系のコマンドで作っています。
- name: install WordPress
command: >
wp core install --url={{ wordpress_site_url }} --title={{ wordpress_site_name }} --admin_user={{ wordpress_site_admin_user }} --admin_password={{ wordpress_site_admin_password }} --admin_email={{ wordpress_site_admin_email }} --path=/var/www --allow-root
when: db_exists|changed
tags: wordpress
- name: update WordPress
command: >
wp core update --locale=ja --version={{ wordpress_version }} --allow-root
chdir=/var/www/
tags: wordpress
WordPressのインストールまたは更新(どちらも通常GUIでやるもの)を行っています。
- name: delete insecure files
file: path=/var/www/{{ item }} state=absent
with_items:
- license.txt
- readme.html
- readme-ja.html
- wp-config-sample.php
tags: wordpress
(たしかWP Security Pluginあたりで)セキュリティ上よろしくないと言われているファイルを削除しています。
# install Plugins
- name: install active plugins
sudo: no
command: >
wp plugin install {{ item }}
chdir=/var/www/
with_items:
- akismet
#- adrotate
- bj-lazy-load
- broken-link-checker
- disable-wpautop
- editorial-calendar
- feed-template-customize
- google-sitemap-generator
- mobble
- newpost-catch
- nginx-champuru
- php-code-widget
- pubsubhubbub
- seo-image
- tweet-old-post
- wordpress-feed-statistics
- wordpress-ping-optimizer
- wordpress-popular-posts
- wordpress-seo
- wordtwit
- wp-dbmanager
- wp-hyper-response
- wp-mail-smtp
- wp-multibyte-patch
- wp-pagenavi
- wp-pagenavi-style
- wp-security-scan
- wp-total-hacks
tags: wordpress
- name: install inactive plugins
sudo: no
command: >
wp plugin install {{ item }} --allow-root
chdir=/var/www/
with_items:
- adrotate
- debug-bar
- debug-bar-extender
- p3-profiler
tags: wordpress
- name: update plugins
command: >
wp plugin update --all --allow-root
chdir=/var/www/
tags: wordpress
プラグインをインストールまたは更新しています。
アクティブにしないものは、基本的にデバッグ用ですが、AdRotate Pluginだけアクティブにすると以下のエラーで失敗するので困ってます。
Error: You do not have appropriate access to activate this plugin!
使っているプラグインの説明についてはいずれブログに書きたいですね。
- name: change owner /var/www
file: >
path=/var/www
owner=www-data
group=www-data
recurse=yes
state=directory
tags: wordpress
WP-CLIで作られたファイルはSSHのログインユーザーになるのでここでwww-dataに直しています。
WP-CLIの操作はwww-dataユーザーで行った方がいいかなと思いつつ微妙な感じになっています。
./roles/blog/vars/main.yml
# WordPress
wordpress_version: 3.9.1
wordpress_db_prefix: wp_secureeeeeeeeeeeee_
wordpress_site_name: エロサイトの作り方
wordpress_site_admin_user: admin
wordpress_site_admin_password: adminpass
wordpress_site_admin_email: hentai-kun@example.com