CentOS 8.0 に WordPress をインストールする過程で Ansible を使用してみます。
作業環境
- Ansible マシン
- CentOS 8.0
- Python 3.7.7
- Ansible 2.9.6
- Web サーバ
- CentOS 8.0
- httpd 2.4.37
- PHP 7.2.11
- MariaDB 10.3.17
- WordPress 5.4
Ansible でのベース環境構築
構築内容
今回 Ansible で実施する内容は以下の通りです。
- タイムゾーンを Asia/Tokyo に変更する
- 次のパッケージをインストールする
- httpd
- php
- php-mysqlnd
- php-pecl-json
- mariadb-server
- httpd サービスと mariadb サービスの再起動および自動起動設定
- WordPress をダウンロードする
- ダウンロードした WordPress ファイルを解凍して /var/www 配下に格納する
- /var/www/wordpress ディレクトリの所有者を apache に変更する
これ以降の以下の操作は Ansible では難しそうなので手作業で実施することにします。
- httpd.conf の編集(DocumentRoot 変更)
- WordPress 用の DB および DB ユーザ作成
- WordPress の初期設定およびインストール
また、Ansible マシンから対象サーバへ SSH 接続できる環境であることを前提とします。
Playbook 内容
今回使用する Playbook の内容は以下の通りです。
- hosts: all
become: yes
tasks:
- name: Set timezone to Asia/Tokyo
timezone:
name: Asia/Tokyo
- name: Install httpd, PHP and MariaDB
yum:
name:
- httpd
- php
- php-mysqlnd
- php-pecl-json
- mariadb-server
- name: Restart and enable httpd and mariadb
service:
name: '{{ item }}'
state: restarted
enabled: yes
with_items:
- httpd
- mariadb
- name: Download wordPress
get_url:
url: https://ja.wordpress.org/wordpress-5.4-ja.tar.gz
dest: /tmp
- name: Install tar
yum:
name: tar
- name: Unzip wordPress
unarchive:
src: /tmp/wordpress-5.4-ja.tar.gz
dest: /var/www
remote_src: yes
- name: chown -R apache:apache /var/www/wordpress
file:
path: /var/www/wordpress
state: directory
owner: apache
group: apache
recurse: yes
タイムゾーンを Asia/Tokyo に変更する
timezone モジュールを使用してタイムゾーンを変更します。
- name: Set timezone to Asia/Tokyo
timezone:
name: Asia/Tokyo
パッケージのインストール
必要パッケージをインストールします。
- name: Install httpd, PHP and MariaDB
yum:
name:
- httpd
- php
- php-mysqlnd
- php-pecl-json
- mariadb-server
サービス再起動および自動起動設定
httpd サービスと mariadb サービスについて再起動、および enable 化します。
- name: Restart and enable httpd and mariadb
service:
name: '{{ item }}'
state: restarted
enabled: yes
with_items:
- httpd
- mariadb
WordPress をダウンロード
get_url モジュールを使用して公式サイトから /tmp 配下へ WordPress をダウンロードします。
当記事作成時点の最新版である ver. 5.4 を指定しています。
※この後のファイル解凍時の対象パスを明確にするためにバージョン指定しています
- name: Download wordPress
get_url:
url: https://ja.wordpress.org/wordpress-5.4-ja.tar.gz
dest: /tmp
WordPress ファイルを解凍して /var/www 配下に格納する
圧縮ファイル解凍をするために unarchive モジュールを使用します。
unarchive モジュールを使用するために tar が必要なため先に tar をインストールします。
ダウンロードした WordPress ファイルの解凍後のディレクトリ名は wordpress となりますが、このフォルダを httpd の DocumentRoot にしたいため /var/www ディレクトリ内に解凍します。
- name: Install tar
yum:
name: tar
- name: Unzip wordPress
unarchive:
src: /tmp/wordpress-5.4-ja.tar.gz
dest: /var/www
remote_src: yes
/var/www/wordpress ディレクトリの所有者設定
file モジュールを使用して /var/www/wordpress ディレクトリおよびその配下のファイルの所有者および所有グループを apache とします。
- name: chown -R apache:apache /var/www/wordpress
file:
path: /var/www/wordpress
state: directory
owner: apache
group: apache
recurse: yes
Ansible 実行結果
PLAY [all] *************************************************************************************************************
TASK [Gathering Facts] *************************************************************************************************
ok: [10.69.34.6]
TASK [Set timezone to Asia/Tokyo] **************************************************************************************
changed: [10.69.34.6]
TASK [Install httpd, PHP and MariaDB] **********************************************************************************
changed: [10.69.34.6]
TASK [Restart and enable httpd and mariadb] ****************************************************************************
changed: [10.69.34.6] => (item=httpd)
changed: [10.69.34.6] => (item=mariadb)
TASK [Download wordPress] **********************************************************************************************
changed: [10.69.34.6]
TASK [Install tar] *****************************************************************************************************
changed: [10.69.34.6]
TASK [Unzip wordPress] *************************************************************************************************
changed: [10.69.34.6]
TASK [chown -R apache:apache /var/www/wordpress] ***********************************************************************
changed: [10.69.34.6]
PLAY RECAP *************************************************************************************************************
10.69.34.6 : ok=8 changed=7 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
■ 実行後の対象サーバ側
# yum list installed | grep httpd
centos-logos-httpd.noarch 80.5-2.el8 @AppStream
httpd.x86_64 2.4.37-16.module_el8.1.0+256+ae790463 @AppStream
httpd-filesystem.noarch 2.4.37-16.module_el8.1.0+256+ae790463 @AppStream
httpd-tools.x86_64 2.4.37-16.module_el8.1.0+256+ae790463 @AppStream
#
#
# yum list installed | grep php
php.x86_64 7.2.11-2.module_el8.1.0+209+03b9a8ff @AppStream
php-cli.x86_64 7.2.11-2.module_el8.1.0+209+03b9a8ff @AppStream
php-common.x86_64 7.2.11-2.module_el8.1.0+209+03b9a8ff @AppStream
php-fpm.x86_64 7.2.11-2.module_el8.1.0+209+03b9a8ff @AppStream
php-json.x86_64 7.2.11-2.module_el8.1.0+209+03b9a8ff @AppStream
php-mysqlnd.x86_64 7.2.11-2.module_el8.1.0+209+03b9a8ff @AppStream
php-pdo.x86_64 7.2.11-2.module_el8.1.0+209+03b9a8ff @AppStream
#
#
# yum list installed | grep mariadb
mariadb.x86_64 3:10.3.17-1.module_el8.1.0+257+48736ea6 @AppStream
mariadb-backup.x86_64 3:10.3.17-1.module_el8.1.0+257+48736ea6 @AppStream
mariadb-common.x86_64 3:10.3.17-1.module_el8.1.0+257+48736ea6 @AppStream
mariadb-connector-c.x86_64 3.0.7-1.el8 @AppStream
mariadb-connector-c-config.noarch 3.0.7-1.el8 @AppStream
mariadb-errmsg.x86_64 3:10.3.17-1.module_el8.1.0+257+48736ea6 @AppStream
mariadb-gssapi-server.x86_64 3:10.3.17-1.module_el8.1.0+257+48736ea6 @AppStream
mariadb-server.x86_64 3:10.3.17-1.module_el8.1.0+257+48736ea6 @AppStream
mariadb-server-utils.x86_64 3:10.3.17-1.module_el8.1.0+257+48736ea6 @AppStream
#
#
# systemctl status httpd
● httpd.service - The Apache HTTP Server
Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled)
Drop-In: /usr/lib/systemd/system/httpd.service.d
mqphp-fpm.conf
Active: active (running) since Wed 2020-04-29 08:40:05 JST; 11min ago
Docs: man:httpd.service(8)
#
#
# systemctl status mariadb
● mariadb.service - MariaDB 10.3 database server
Loaded: loaded (/usr/lib/systemd/system/mariadb.service; enabled; vendor preset: disabled)
Active: active (running) since Wed 2020-04-29 08:40:15 JST; 11min ago
Docs: man:mysqld(8)
#
#
# ls -l /var/www
total 12
drwxr-xr-x 2 root root 4096 Dec 24 05:47 cgi-bin
drwxr-xr-x 3 root root 4096 Apr 29 08:40 html
drwxr-xr-x 5 apache apache 4096 Apr 28 11:00 wordpress
#
#
# ls -l /var/www/wordpress
total 212
-rw-r--r-- 1 apache apache 405 Feb 6 15:33 index.php
-rw-r--r-- 1 apache apache 19915 Feb 12 20:54 license.txt
-rw-r--r-- 1 apache apache 10089 Apr 28 11:00 readme.html
-rw-r--r-- 1 apache apache 6912 Feb 6 15:33 wp-activate.php
drwxr-xr-x 9 apache apache 4096 Apr 28 11:00 wp-admin
-rw-r--r-- 1 apache apache 351 Feb 6 15:33 wp-blog-header.php
-rw-r--r-- 1 apache apache 2275 Feb 6 15:33 wp-comments-post.php
-rw-r--r-- 1 apache apache 3931 Apr 28 11:00 wp-config-sample.php
drwxr-xr-x 5 apache apache 4096 Apr 28 11:00 wp-content
-rw-r--r-- 1 apache apache 3940 Feb 6 15:33 wp-cron.php
drwxr-xr-x 21 apache apache 12288 Apr 28 11:00 wp-includes
-rw-r--r-- 1 apache apache 2496 Feb 6 15:33 wp-links-opml.php
-rw-r--r-- 1 apache apache 3300 Feb 6 15:33 wp-load.php
-rw-r--r-- 1 apache apache 47874 Feb 10 12:50 wp-login.php
-rw-r--r-- 1 apache apache 8501 Feb 6 15:33 wp-mail.php
-rw-r--r-- 1 apache apache 19396 Feb 11 07:33 wp-settings.php
-rw-r--r-- 1 apache apache 31111 Feb 6 15:33 wp-signup.php
-rw-r--r-- 1 apache apache 4755 Feb 6 15:33 wp-trackback.php
-rw-r--r-- 1 apache apache 3133 Feb 6 15:33 xmlrpc.php
WordPress インストール(手作業)
Ansible での作業は以上ですが、続きの手作業の内容を記載しておきます。
httpd.conf の編集
/etc/httpd/conf/httpd.conf を編集します。
念のため初期コンフィグをバックアップしておきます。
# cd /etc/httpd/conf
# ls -l
total 28
-rw-r--r-- 1 root root 11899 Dec 24 05:44 httpd.conf
-rw-r--r-- 1 root root 13064 Dec 24 05:46 magic
# cp -p httpd.conf httpd.conf_org
# ls -l
total 40
-rw-r--r-- 1 root root 11899 Dec 24 05:44 httpd.conf
-rw-r--r-- 1 root root 11899 Dec 24 05:44 httpd.conf_org
-rw-r--r-- 1 root root 13064 Dec 24 05:46 magic
■ httpd.conf変更内容
- DocumentRoot を “/var/www/html” から “/var/www/wordpress” に変更
- <Directory “/var/www”> を <Directory “/var/www/wordpress“> に変更
- AllowOverride を None から All に変更
■ httpd.conf 変更前の内容
(略)
DocumentRoot "/var/www/html"
#
# Relax access to content within /var/www.
#
<Directory "/var/www">
AllowOverride None
# Allow open access:
Require all granted
</Directory>
(略)
■ httpd.conf 変更後の内容
(略)
DocumentRoot "/var/www/wordpress"
#
# Relax access to content within /var/www.
#
<Directory "/var/www/wordpress">
AllowOverride All
# Allow open access:
Require all granted
</Directory>
(略)
変更後、httpd サービスを再起動します。
# systemctl restart httpd
この時点で、ブラウザで「http://(サーバのIP)」にアクセスすると以下の画面になります。
画面左下の「さあ、始めましょう!」をクリックすると WordPress の初期設定画面になりますが、今はまだこれは実施しません。
WordPress 用の DB および DB ユーザ作成
MariaDB で WordPress 用の DB の作成とユーザ作成を行います。
mysql コマンドを実行します。すると MariaDB のプロンプトになります。
# mysql
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 8
Server version: 10.3.17-MariaDB MariaDB Server
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]>
以下コマンドで、名前が wordpress で文字コードが UTF8 の DB を作成します。
※データベース名は任意の名前でOKです
MariaDB [(none)]> CREATE DATABASE wordpress DEFAULT CHARACTER SET utf8;
Query OK, 1 row affected (0.001 sec)
続いて、以下のような DB ユーザを作成します。
- ユーザ名:wordpress(任意のユーザ名でOKです)
- パスワード:password(任意のパスワードでOKです)
- 上で作成したデータベース wordpress に対して全権限を持つ
MariaDB [(none)]> GRANT ALL ON wordpress.* TO wordpress@localhost IDENTIFIED BY 'password';
Query OK, 0 rows affected (0.001 sec)
ユーザが作成できたら以下コマンドで設定を反映します。
MariaDB [(none)]> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.002 sec)
以上で DB の設定は完了です。exit コマンドでプロンプトから抜けてください。
MariaDB [(none)]> exit
Bye
WordPress の初期設定およびインストール
ブラウザで「http://(サーバのIP)」にアクセスします。
画面左下の「さあ、始めましょう!」をクリックします。
次の画面で以下の通り設定し、「送信」をクリックします。
- データベース名: wordpress(DB の設定時に作成した DB 名)
- ユーザー名: wordpress (DB の設定時に作成したユーザ名)
- パスワード: password(DB の設定時に作成したユーザのパスワード)
- データベースのホスト名: localhost(デフォルト)
- テーブル接頭辞: wp_(デフォルト)
以下の画面になります。「インストール実行」をクリックします。
以下の画面になります。各項目を入力後「WordPress をインストール」をクリックします。
なお、この画面で入力するユーザ情報は WordPress のユーザ(サイト管理画面にログインするためのユーザ)情報です。
インストールが完了すると以下の画面になります。「ログイン」をクリックします。
以下の画面になります。先ほど設定したユーザ情報でログインします。
以下の管理画面になることを確認してください。
管理画面左上のサイト名「hogeブログ」をクリックします。
サイト画面が表示されることを確認してください。
以上で WordPress のインストールは完了です。
参考ページ

―――――――――――――