エロサイトの作り方

2013年11月から勉強しながらエロサイトを作っています。

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

WordPress用の環境変数を追加します。