VPS、オンプレミスサーバでWordPressを動かす
数あるCMS(コンテンツ・マネジメント・システム)の中で今やデファクト・スタンダートとなっている「WordPress」の基本的なインストール〜セットアップ方法を紹介します。
レンタルサーバによっては、ボタン1つでWordPressの基本的なセットアップが完了するものもありますが、ここでは自分で一からセットアップしていく手順を紹介します。
なお、本章ではオンプレミスサーバ、仮想マシン、VPSなどにCentOS7をOSとしてLAMPサーバを構築し、その上にWordPressをセットアップしていくことを前提とします。
ベースLAMPサーバのセットアップ
次のページを参考に、CentOS7 をOSとしたLAMPサーバ(Linux, Apache, MySQL, Php)を構成します。
WordPress用データベースの作成
WordPressで使用するデータベースを作成します。
以下の例では、MySQLにWordPress用データベースを「wp_db」の名前で作成します。
WordPress用データベースを作成する前に、専用のMySQLユーザを「wpuser」の名前で事前に作成しておきます。
ターミナルよりMySQLに接続します。
今回はMySQLユーザ「root」で接続します。
下の例のように「mysql>」のプロンプトが返ってきたら接続完了です。
- 下の例で入力するrootユーザのパスワードはMySQLのrootユーザのものです。OSのrootユーザのパスワードではないので注意しましょう。
# mysql -u root -p
Enter password: <------------------- MySQLユーザ「root」のパスワードを入力
Welcome to the MySQL monitor. Commands end with ; or \g.
:
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
WordPressデータベースを操作するためのMySQLユーザを作成します。
次の例ではユーザ名を「wpuser」パスワードを「userwp」としていますが名前・パスワードはお好みで。
mysql> create user 'wpuser'@'localhost' identified by 'userwp';
Query OK, 0 rows affected (0.03 sec)
WordPressデータベースを作成します。
次の例ではデータベース名は「wp_db」としています(名前は任意で可)。
デフォルトの文字コード「utf8mb4」とソート順「utf8mb4_bin」指定しておきます。
mysql> create database wp_db default character set utf8mb4 COLLATE utf8mb4_bin;
Query OK, 1 row affected (0.03 sec)
WordPressデータベースを操作できるユーザへ権限を付与します。
権限は厳密に設定しても良いでしょうが、「all」でも大丈夫です。
mysql> grant all on wp_db.* to 'wpuser'@'localhost' with grant option;
Query OK, 0 rows affected (0.02 sec)
正しく設定されているか確認してみます。
mysql> show databases;
+------------------------+
| Database |
+------------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
| wp_db | <------ 表示されること
+------------------------+
5 rows in set (0.00 sec)
mysql> select user,host from mysql.user;
+------------------+-----------+
| user | host |
+------------------+-----------+
| mysql.infoschema | localhost |
| mysql.session | localhost |
| mysql.sys | localhost |
| root | localhost |
| wpuser | localhost | <---- 表示されること
+------------------+-----------+
5 rows in set (0.00 sec)
mysql> show grants for 'wpuser'@'localhost';
+-----------------------------------------------------------------------------+
| Grants for wpuser@localhost |
+-----------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO `wpuser`@`localhost` |
| GRANT ALL PRIVILEGES ON `wp_db`.* TO `wpuser`@`localhost` WITH GRANT OPTION |
+-----------------------------------------------------------------------------+
2 rows in set (0.00 sec)
一旦MySQLを切断して、作成したWordPressユーザで再度接続してみます。
mysql> quit <------------------------------ 切断する
Bye
# mysql -u wpuser -p <--------------------- 「wpuser」で接続
Enter password: <-------------------------- 「wpuser」のパスワードを入力
Welcome to the MySQL monitor. Commands end with ; or \g.
:
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> show databases;
+--------------------+
| Database | <------------------- 利用できるデータベースのみ表示される
+--------------------+
| information_schema |
| wp_db | <------------------- WordPress用データベースが表示されること
+--------------------+
2 rows in set (0.00 sec)
mysql> quit <------------------------------ 切断
最新版WordPressの入手
次のページから最新のWordPressのプログラムファイルを入手します。
今回のインストール先にはセットアップ時に「unzip」コマンドもインストール済みなので、ダウンロードするファイルは「zip」でも「tar.gz」でもどちらでも構いません。
WordPressのプログラムファイルをインストールするサーバに送る手段としてFTP/SFTPを利用しても構いませんが、ここではサーバに直接SSHでログインし、サーバに直接取り込む方法を採ります。
まずはインストール先のサーバ(移行、単に「サーバ」と呼びます)にSSHでログインします。
Mac, Linuxクライアントの場合はターミナルから下記コマンドを実行します。
Windowsクライアントの場合は、PuTTYなどのSSHクライアントを使う、などの方法でSSHログインします。
以下の例では、サーバ「srv01.local」に「root」ユーザでSSHログインする例を示します。
初めて当該サーバにログインする場合は、以下の例のように警告が出ますので、「yes」を入力して先に進みます。
# ssh root@srv01.local
The authenticity of host 'srv01.local (192.168.1.7)' can't be established.
ECDSA key fingerprint is SHA256:9zbukkjaJwX4JU7ZItHbGJiobgFwvq5eIxxxxxxxx.
Are you sure you want to continue connecting (yes/no)? yes <--- 「yes」入力
Warning: Permanently added 'srv01.local' (ECDSA) to the list of known hosts.
root@srv01.local's password: <------------------------------ パスワードを入力
Last login: Wed Jul 24 09:19:55 2019
[root@srv01 ~]#
- CentOS7であればインストール直後にSSHサービスが有効になっているので、特に何も設定せずにSSHログインが可能です。
先の「WordPress.ORG 日本語 ダウンロード」のページにあったインストール先「WordPress X.X.X をダウンロード」のリンクを右クリックし、表示されたコンテキストメニューから「リンクのURLをコピー」を選択し、リンク先のURLを取得します。
リンク先のURLは大抵「https://ja.wordpress.org/latest-ja.zip」です。
ターミナルに戻って次の操作を行い、最新のWordPressプログラムファイルを「/usr/local/src」ディレクトリに入手し、展開します。
# cd /usr/local/src <----------------------------- 保存先へ移動
# wget https://ja.wordpress.org/latest-ja.zip <--- wgetで取得
--2019-07-25 19:39:40-- https://ja.wordpress.org/latest-ja.zip
ja.wordpress.org (ja.wordpress.org) をDNSに問いあわせています... 198.143.164.252
ja.wordpress.org (ja.wordpress.org)|198.143.164.252|:443 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 200 OK
長さ: 12806154 (12M) [application/zip]
`latest-ja.zip' に保存中
100%[======================================>] 12,806,154 315KB/s 時間 24s
2019-07-25 19:40:05 (528 KB/s) - `latest-ja.zip' へ保存完了 [12806154/12806154]
# ls -l <-------------------------------------------------------- 確認
-rw-r--r--. 1 root root 12806154 7月 24 23:00 latest-ja.zip <--- 取得できている
# unzip latest-ja.zip <------------------------------------------ 圧縮展開
# ls -l <-------------------------------------------------------- 再度確認
-rw-r--r--. 1 root root 12806154 7月 24 23:00 latest-ja.zip
drwxr-xr-x. 5 root root 4096 7月 24 23:00 wordpress <-------- 展開後
これで最新のWordPressを入手できました。
WordPressを配置
入手したWordPressのプログラムファイルをウェブサーバの公開ディレクトリへ移動します。
CentOS7 のApacheの初期設定状態であれば、「/var/www/html」がドキュメントルートですが、今回は「/var/www」ディレクトリ直下に「wp」ディレクトリ以下にWordPressを配置し、「/var/www/wp」を新たなドキュメントルートとしてみます。
# pwd <-------------------------------------------- ①
/usr/local/src
# cp -rp wordpress /var/www/wp <------------------- ②
# ls -l /var/www <--------------------------------- ③
:
drwxr-xr-x. 5 root root 4096 7月 24 23:00 wp <--- ④
# chown -R apache:apache /var/www/wp/ <------------ ⑤
# ls -l /var/www <--------------------------------- ⑥
:
drwxr-xr-x. 5 apache apache 4096 7月 24 23:00 wp
- ① 現在の場所を確認。WordPressを保存・展開した場所であること。
- ② 「wordpress」ディレクトリを「/var/www」ディレクトリへ「wp」という名でコピー
「-rp」オプションをつけること - ③ コピーされたか確認
- ④ 「wp」ディレクトリが表示されればOK
- ⑤ ディレクトリ「wp」の所有者とグループを「apache」に変更
「-R」オプションを忘れないように - ⑥ 確認。所有者、グループが「apache」になっていること。
SELinuxの設定
CentOS 7 ではSELinuxがデフォルトで有効になっています。このままではコピーしたWordPressファイルへのSELinuxの書き込み権限がないためインストールがうまくいきません。
次の例では、「var/www/wp」ディレクトリにSELinuxの書き込み権限を付与する例を示します。
- ファイルの書き込み権限は上記手順の⑤で「apache」ユーザ・グループに付与済みです。
- セキュリティ上SELinuxを無効にすることはなるべく避けましょう。
semanageコマンドがインストールされているかどうかを確認。
インストールされていなければ「CentOS 7 の基本設定:基本ソフトウェアのインストール」を参考にインストールしておきます。
# which semanage
/usr/sbin/semanage
現在の「/var/www/wp」のSELinuxファイル権限を確認します。
操作前は「/var/www/wp」ディレクトリのファイル権限は「httpd_sys_content_t:s0」になっているはずです。
# ls -Z /var/www
:
drwxr-xr-x. apache apache system_u:object_r:httpd_sys_content_t:s0 wp
「/var/www/wp」ディレクトリのファイル権限を「httpd_sys_rw_content_t」(httpdデーモンが当該コンテンツの読み書きを可能にする)に変更します。
# semanage fcontext -a -t httpd_sys_rw_content_t "/var/www/wp(/.*)?"
設定を反映します。反映結果が以下に表示されます。
# restorecon -RFv /var/www/wp*
:
pd_sys_content_t:s0->system_u:object_r:httpd_sys_rw_content_t:s0
再度「/var/www/wp」のSELinuxファイル権限を確認。
今度は「httpd_sys_rw_content_t:s0」になっていることを確認。
# ls -Z /var/www
:
drwxr-xr-x. apache apache system_u:object_r:httpd_sys_rw_content_t:s0 wp
DocumentRootの変更
今回、「http://サーバ名/」でアクセスすることでWordPressのコンテンツが参照できるように設定しますので、ApacheのDocumentRootをWordPressをインストールしたディレクトリに変更します。
- 「http://サーバ名/wp/」でアクセスできるようにしたい場合は、現在のドキュメントルート(初期設定では「/var/www/html」)以下にWordPressプログラムファイルを配置するか、Apacheでエイリアスを設定します。
以下の例では。Apacheの設定ファイル「/etc/httpd/conf/httpd.conf」を編集してDocumentRootを「/var/www/wp」に変更します。
※.変更箇所は2箇所あります。
# vi /etc/httpd/conf/httpd.conf
----------------------------------------------------------------------
:
#
# DocumentRoot: The directory out of which you will serve your
# documents. By default, all requests are taken from this directory, but
# symbolic links and aliases may be used to point to other locations.
#
#DocumentRoot "/var/www/html" <---------------- 先頭に「#」をつけてコメントアウト
DocumentRoot "/var/www/wp" <------------------- 「/var/www/wp」に設定
:
# Further relax access to the default document root:
#>>> Edited by kazu
#<Directory "/var/www/html"> <----------------- 先頭に「#」をつけてコメントアウト
<Directory "/var/www/wp"> <-------------------- 「/var/www/wp」に設定
:
----------------------------------------------------------------------
設定ファイルをチェックします
# httpd -t
Syntax OK <------------------------- これが返ってきたらOK
Apacheをリロードします(再起動でも可)。
# systemctl reload httpd
ブラウザで「http://サーバ名/」にアクセスしてみます。
次のページが表示されればOKです。
WordPress自体のセットアップを開始しましょう。
次の手順 → WordPressのセットアップ