WordPress 4.7 のインストール
〜 安心バージョンは 4.7 らしい 〜

2017-01-02 作成 福島
2021-03-24 更新 福島
TOP > tips > wordpress47
WordPress の公式ページによると、
安全にご利用いただけるのは最新版のみです。過去バージョンはメンテナンスされておりませんのでご注意ください。

古い PHP や MySQL しか利用できないレガシーな環境でも、PHP 5.2.4 以上、かつ MySQL 5.0 以上であれば WordPress は動作しますが、公式サポートは終了しており、サイトがセキュリティの脆弱性にさらされる危険があります。
と書いてあるので、ここでは最新版の WordPress 4.7, PHP 7.0, MySQL 5.6 をインストールします。

2016-09-08 発表の記事 (英語版は 2016-09-07) によると、WordPress 4.6.1 でセキュリティホールが
 塞がれているはずだけど、まぁいいや、最新版を入れます。


インストール要件
下記の CentOS の上に構築します。予め CentOS をインストールしておいてください。
OSCentOS 7
IP アドレス192.168.1.1
サーバー名www.example.jp
ホスト名www
今回のインストール要件です。
適宜、自分の環境に合わせて変更してください。
インタープリタPHP 7.0
データベースMySQL 5.6
WordPress 設置ディレクトリ/var/www/html/wp_1/
URLhttp://www.example.jp/wp_1/
MySQLデータベース名wordpress
ユーザー名wp_user
パスワードpassword
ホスト名localhost
テーブル接頭辞wp_1
WordPressサイトのタイトルWordPress テスト
管理用ユーザー名testuser
管理用パスワード******** (自動的に生成される)
メールアドレスwho@example.jp
検索エンジンでの表示検索エンジンがサイトをインデックスしないようにする

1. sendmail のインストール
1-1. sendmail がインストールされていないことを確認する。
$ yum list installed | grep sendmail | wc -l
0
1-2. sendmail をインストールする。
$ su
# yum -y install sendmail
 ~
 ~
完了しました!
# yum list installed | grep sendmail
sendmail.x86_64                       8.14.7-4.el7                   @base
1-3. sendmail を起動する。
# systemctl status sendmail | grep Active
   Active: inactive (dead)
# systemctl start sendmail
# systemctl status sendmail | grep Active
   Active: active (running) since 日 2015-12-31 20:46:24 JST; 7s ago
1-4. /etc/hosts を書き換えて再起動する。
※ /etc/hosts を書き換える必要がない場合は再起動しない。
# vi /etc/hosts
下記を追加する
192.168.1.1 www www.example.jp
# /sbin/shutdown -r now

2. PHP バージョン 7.0 のインストール
2-1. PHP インタープリタがインストールされていないことを確認する。
$ yum list installed | grep php | wc -l
0
$ rpm -qa | grep php | wc -l
0
2-2. epelremi のリポジトリ情報をインストールする。
$ wget https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
$ wget http://rpms.remirepo.net/enterprise/remi-release-7.rpm

$ su
# rpm -Uvh epel-release-latest-7.noarch.rpm
# rpm -Uvh remi-release-7.rpm
2-3. PHP バージョン 7.0 と MySQL 拡張をインストールする。
# yum -y install --enablerepo=remi,remi-php70 php php-devel php-mbstring php-pdo php-gd
 ~
 ~
完了しました!
# yum -y install --enablerepo=remi,remi-php70 php-mysql
 ~
 ~
完了しました!
# exit
$ php -v
PHP 7.0.14 (cli) (built: Dec  7 2016 10:15:15) ( NTS )
Copyright (c) 1997-2016 The PHP Group
Zend Engine v3.0.0, Copyright (c) 1998-2016 Zend Technologies
2-4. PHP から sendmail がアクセスできることを確認する。
$ php -r 'phpinfo();' | grep sendmail_path
sendmail_path => /usr/sbin/sendmail -t -i => /usr/sbin/sendmail -t -i
$ ls -l /usr/sbin/sendmail /etc/alternatives/mta /usr/sbin/sendmail.sendmail
lrwxrwxrwx. 1 root root      21  1月  1 22:51 /usr/sbin/sendmail -> /etc/alternatives/mta
lrwxrwxrwx. 1 root root      27  1月  1 22:51 /etc/alternatives/mta -> /usr/sbin/sendmail.sendmail
-rwxr-sr-x. 1 root smmsp 836840  6月 10  2014 /usr/sbin/sendmail.sendmail

3. MySQL バージョン 5.6 のインストール
3-1. MariaDB をアンインストールする。
※ MariaDB は CentOS 7 のインストール時、一緒に入っている。
$ rpm -qa | grep maria
mariadb-libs-5.5.52-1.el7.x86_64
$ su
# yum -y remove mariadb-libs
# rpm -qa | grep maria | wc -l
0
# exit
$
3-2. MySQL のリポジトリ情報をインストールする。
$ wget http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm
$ su
# rpm -Uvh mysql-community-release-el7-5.noarch.rpm
3-3. MySQL バージョン 5.6 をインストールする。
# yum -y --enablerepo=mysql56-community install mysql-community-server
 ~
 ~
完了しました!
# systemctl list-unit-files | grep mysqld
mysqld.service                                enabled
3-4. MySQL を起動する。
# systemctl status mysqld | grep Active
   Active: inactive (dead)
# systemctl start mysqld
# systemctl status mysqld | grep Active
   Active: active (running) since 土 2016-12-31 16:24:26 JST; 4s ago
# exit
$ mysqladmin ping
mysqld is alive

4. MySQL に WordPress 用のデータベースを作成
4-1. データベースを作成する。
$ mysql -u root -p
Enter password: [Enter]
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 4
Server version: 5.6.35 MySQL Community Server (GPL)

Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> CREATE DATABASE wordpress ;
Query OK, 1 row affected (0.00 sec)

mysql> SHOW DATABASES ;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| wordpress          |
+--------------------+
4 rows in set (0.00 sec)

mysql> \q
4-2. ユーザーを作成する。
$ mysql -u root -p
Enter password: [Enter]
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 4
Server version: 5.6.35 MySQL Community Server (GPL)

Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> CREATE USER wp_user@localhost IDENTIFIED BY 'password' ;
Query OK, 0 rows affected (0.00 sec)

mysql> SELECT host, user FROM mysql.user ;
+-----------+---------+
| host      | user    |
+-----------+---------+
| 127.0.0.1 | root    |
| ::1       | root    |
| www       |         |
| www       | root    |
| localhost |         |
| localhost | root    |
| localhost | wp_user |
+-----------+---------+
7 rows in set (0.00 sec)

mysql> GRANT ALL PRIVILEGES ON wordpress.* TO wp_user@localhost ;
Query OK, 0 rows affected (0.00 sec)

mysql> SHOW GRANTS FOR wp_user@localhost ;
+----------------------------------------------------------------------------------------------------------------+
| Grants for wp_user@localhost                                                                                   |
+----------------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'wp_user'@'localhost' IDENTIFIED BY PASSWORD '*2470C0C06DEE42FD1618BB99005ADCA2EC9D1E19' |
| GRANT ALL PRIVILEGES ON `wordpress`.* TO 'wp_user'@'localhost'                                                 |
+----------------------------------------------------------------------------------------------------------------+
3 rows in set (0.00 sec)

mysql> \q

5. WordPress 4.7 をインストール
5-1. httpd のユーザー名、グループを調べる。
$ cat /etc/httpd/conf/httpd.conf | grep '^User'
User apache
$ groups apache
apache : apache
5-2. WordPress を設置するディレクトリを作成する。
$ su
# mkdir /var/www/html/wp_1
# chgrp apache /var/www/html/wp_1/
# chmod g+w /var/www/html/wp_1/
# ls -l /var/www/html/ | grep wp_1
drwxrwxr-x. 5 root apache 4096 12月 31 18:49 wp_1
# exit
$
5-3. WordPress を設置する。
$ wget https://ja.wordpress.org/wordpress-4.7-ja.zip

$ su
# cd /var/www/html/wp_1/
/var/www/html/wp_1/# unzip wordpress-4.7-ja.zip
/var/www/html/wp_1/# mv ./wordpress/* .
/var/www/html/wp_1/# rmdir ./wordpress/
/var/www/html/wp_1/# chgrp apache ./wp-content/
/var/www/html/wp_1/# chmod g+w ./wp-content/
/var/www/html/wp_1/# ls -ld wp-content
drwxrwxr-x.  5 root   apache    69 12月  7 09:08 wp-content
/var/www/html/wp_1/# exit
$

6. SELinux を設定
6-1. Web サーバーからメールを送信できるようにする。
※ WordPress には、パスワードを忘れた場合にメールを送信する機能がある。
$ su
# getsebool httpd_can_sendmail
httpd_can_sendmail --> off
# setsebool -P httpd_can_sendmail on
# getsebool httpd_can_sendmail
httpd_can_sendmail --> on
# exit
$

7. Web サーバーを起動
7-1. apache を起動する。
$ su
# systemctl list-unit-files | grep httpd
httpd.service                                 disabled
# systemctl enable httpd
# systemctl list-unit-files | grep httpd
httpd.service                                 enabled
# systemctl status httpd | grep Active
   Active: inactive (dead)
# systemctl start httpd
# systemctl status httpd | grep Active
   Active: active (running) since 月 2016-12-31 00:07:42 JST; 1s ago
# exit
$

8. ブラウザーから調整
WowrdPress をインストールした Web サーバをブラウザーでアクセスする。
URL: http://www.example.jp/wp_1/

8-1. WordPress > 構成ファイルのセットアップ (1)
をクリックする。
8-2. WordPress が構成ファイル wp-config.php を書けるよう、一時的に SELinux を外す。
# getenforce
Enforcing
# setenforce Permissive
# getenforce
Permissive
8-3. WordPress > 構成ファイルのセットアップ (2)
本稿の冒頭に書いた「インストール要件」(MySQL) の内容を記入し、 をクリックする。

MySQLデータベース名wordpress
ユーザー名wp_user
パスワードpassword
ホスト名localhost
テーブル接頭辞wp_1

8-4. WordPress > 構成ファイルのセットアップ (3a)
異常の場合
「ファイル wp-config.php に書き込めませんでした。」
が表示される場合、ブラウザーのバックボタンで 8-3 に戻る。

設定ミスが考えられるのは以下。

    ・WordPress 設置ディレクトリのパーミッション (上記 5-3)
    ・SELinux の設定 (上記 8-2)
8-5. WordPress > 構成ファイルのセットアップ (3b)
正常の場合
WordPress の設定ファイル wp-config.php の書き込みとデータベースへのアクセスが正常だとこの画面が表示される。

下記 8-6 の実施後に をクリックする。

SELinux の無効時間を短くするためなので、それが気にならなければ 8-6 以前に を行っても構わない。
8-6. WordPress が構成ファイル wp-config.php を書いたので、SELinux を元に戻す。
# ls -l /var/www/html/wp_1/wp-config.php
-rw-rw-rw-. 1 apache apache 4114 12月 31 21:24 wp-config.php
# getenforce
Permissive
# setenforce Enforcing
# getenforce
Enforcing
8-7. WordPress > 構成ファイルのセットアップ (4)
をクリックする。

8-8. WordPress > インストール
本稿の冒頭に書いた「インストール要件」(WordPress) の内容を記入し、 をクリックする。

管理用パスワードは自動的に生成されるので、ここで表示されるパスワードをメモしておくこと。

WordPressサイトのタイトルWordPress テスト
管理用ユーザー名testuser
管理用パスワード******** (自動的に生成される)
メールアドレスwho@example.jp
検索エンジンでの表示検索エンジンがサイトをインデックスしないようにする

8-9. ログイン画面
インストールが終了すると、ログイン画面が表示される。

上記 8-8 で設定した管理用ユーザ名と管理用パスワードを記入し、 をクリックする。


9. 管理画面と公開画面イメージ
9-1. ダッシュボード
ログイン直後は、ダッシュボードが表示される。

左上に表示されているサイト名 (ここでは 「WordPress テスト」) をクリックすると、公開画面イメージが表示される。

9-2. 公開画面イメージ
公開画面はこんな感じ。

ログアウトしていないため、厳密には公開画面と同じではない。

公開画面には上部メニューバー (黒い帯の箇所) が存在しない。


10. パスワードリマインダー
10-1. ログイン画面
パスワードを忘れた場合はパスワードのリセットが利用可能。

ログイン画面で「パスワードをお忘れですか ?」をクリックする。

10-2. メール送信画面
「ユーザー名またはメールアドレス」を記入し、
をクリックする。

10-3. ログイン画面
パスワードリセットのメールを送信するとこの画面になる。

送信結果までは管理していないため、
メールが送信できなかったとしてもエラーは表示されない

10-4. メール内容
届くメールのサンプル
件名[wordpress テスト] パスワードのリセット
差出人WordPress <wordpress@example.jp>
本文
だれかが次のアカウントのパスワードリセットをリクエストしました:

http://www.example.jp/wp_1/

ユーザー名: testuser

もしこれが間違いだった場合は、このメールを無視すれば何も起こりません。

パスワードをリセットするには、以下へアクセスしてください。

<http://www.example.jp/wp_1/wp-login.php?action=rp&key=xxxxxxxxxxxxxxxxxxxx&login=testuser>


番外
メール投稿プラグインについて

よそ様のメール投稿プラグインの紹介で良く見受けられる Ktai Entry ですが、WordPress 4.7 ではうまく動作しない模様です。
POP3 を平文のパスワードでアクセスさせて確認しましたが、ポート 110 で POP が Ready になった直後、通信を遮断しています。
Ktai Entry の代わりに Postie が使用できました。