VPS、オンプレミスサーバでWordPressを動かす

最終更新日:2019年07月27日
レベル:★★★☆☆
オンプレミスサーバ、仮想マシン、VPSなどにWordPressをセットアップする方法を紹介します。

数あるCMS(コンテンツ・マネジメント・システム)の中で今やデファクト・スタンダートとなっている「WordPress」の基本的なインストール〜セットアップ方法を紹介します。

レンタルサーバによっては、ボタン1つでWordPressの基本的なセットアップが完了するものもありますが、ここでは自分で一からセットアップしていく手順を紹介します。
なお、本章ではオンプレミスサーバ、仮想マシン、VPSなどにCentOS7をOSとしてLAMPサーバを構築し、その上にWordPressをセットアップしていくことを前提とします。

ベースLAMPサーバのセットアップ

次のページを参考に、CentOS7 をOSとしたLAMPサーバ(Linux, Apache, MySQL, Php)を構成します。

CMS用にLAMPサーバを構築する(CentOS7編)

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のプログラムファイルを入手します。

WordPress.ORG 日本語 ダウンロード

今回のインストール先にはセットアップ時に「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のセットアップ

 

ー 以上 ー

 CMSを使ったホームページ制作
 VPS, AWS等クラウドシステム構築
等々のご依頼承っております