WordPress
MySQL
CentOS
Apache

CentOS 7 WordPressのインストール

動作確認環境

  • 仮想環境 VMware Workstation Player 14.1.1
  • OS Windows 10 Pro 64bit

仮想環境

  • OS CentOS 7.4 (1708) minimalインストール
  • メモリ 2GB
  • HDD 250GB

前提条件

  • gcc 7.2.0
  • cmake 3.10.2
  • MySQL 5.7.21
  • OpenSSL 1.1.0.g
  • Apache 2.4.29
  • PHP 7.2.3

WordPressのダウンロード

最新バージョンの確認
日本語 « リリース — WordPress

Apacheの初期ディレクトリにインストールするとします。/usr/local/apache2/htdocsディレクトリに移動する。

/usr/local/apache2/htdocs

ファイルをダウンロードする。

wget https://ja.wordpress.org/wordpress-4.9.4-ja.tar.gz

ダウンロードしたファイルを展開する。

tar zxvf wordpress-4.9.4-ja.tar.gz

展開したディレクトリはwordpressで作成されます。
必要に応じて変更してください。
所有を変更します。

chown -R apache:apache wordpress

Apacheの設定

httpd.confで設定します。

vi /usr/local/apache2/conf/httpd.conf

以下の内容を追記します。

DocumentRoot "/usr/local/apache2/htdocs/wordpress"
<Directory "/usr/local/apache2/htdocs/wordpress">
     AllowOverride All
</Directory>

wordpressに移動し、ファイルをコピーし、所有を変更する。

cd wordpress
cp wp-config-sample.php wp-config.php
chown -R apache:apache wp-config.php

wp-config.phpの設定をします。

vi wp-config.php

database_name_here, username_here, password_hereを任意に変更し、localhost127.0.0.1に変更します。

wp-config.php
// ** MySQL 設定 - この情報はホスティング先から入手してください。 ** //
/** WordPress のためのデータベース名 */
define('DB_NAME', 'database_name_here');

/** MySQL データベースのユーザー名 */
define('DB_USER', 'username_here');

/** MySQL データベースのパスワード */
define('DB_PASSWORD', 'password_here');

/** MySQL のホスト名 */
define('DB_HOST', 'localhost');
wp-config.php(設定例)
/** WordPress のためのデータベース名 */
define('DB_NAME', 'wp_knutdb_zvy1vb4u');

/** MySQL データベースのユーザー名 */
define('DB_USER', 'wp_knut_mv43no3x');

/** MySQL データベースのパスワード */
define('DB_PASSWORD', 'LVMc47NIpmRR');


/** MySQL のホスト名 */
define('DB_HOST', '127.0.0.1');

通常だとファイルの書き込みにFTPが必要なので、directにします。

vi wp-config.php

以下の文を追記します。

define('FS_METHOD', 'direct');

サーバのIPアドレスで接続すると「データベース接続確立エラー」と表示されます。

MySQLの設定

MySQLにログインするには、初期の設定では、rootユーザにパスワードが無いため、ログインできません。パスワード無しでログインできるようにします。

vi /etc/my.cnf

[mysqld]の下にskip-grant-tablesを追記します。

[mysqld]
skip-grant-tables

これでrootでもパスワードなしでログインできます。
mysql -u rootと入力し、mysql>が表示されuse mysqlを入力します。

mysql -u root
[(none)] mysql>use mysql

入力すると、以下の文が表示される。

Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed

rootのパスワードを設定するため、以下のコマンドを入力する。

update user set authentication_string=password('パスワード') WHERE user='root';

成功すると、以下の文が表示される。

Query OK, 1 row affected, 1 warning (0.01 sec)
Rows matched: 1  Changed: 1  Warnings: 1

Warning (Code 1681): 'PASSWORD' is deprecated and will be removed in a future release.

設定をflush privilegesで保存します。

flush privileges;

成功すると、以下の文が表示される。

Query OK, 0 rows affected (0.00 sec)

quitで終了する。

rootのパスワードを設定したので、先ほどのmy.cnfからskip-grant-tablesを削除するかコメントアウトする。

MySQLの操作

MySQLにログインします。

mysql -u root -p

パスワードを入力します。
wp-config.phpで設定したデータベース、ユーザを作成します。(作成例)

データベースの作成

create database wp_knutdb_zvy1vb4u CHARACTER SET utf8;

成功すると、以下の文が表示される。

Query OK, 1 row affected (0.00 sec)

ユーザの作成

create user 'wp_knut_mv43no3x'@'localhost' identified by 'LVMc47NIpmRR';

成功すると、以下の文が表示される。

Query OK, 0 rows affected (0.00 sec)

作成したユーザへ権限の付与

grant all privileges on wp_knutdb_zvy1vb4u.* to 'wp_knut_mv43no3x'@'localhost';

成功すると、以下の文が表示される。

Query OK, 0 rows affected (0.00 sec)

quitで終了する。

ブラウザでサーバのIPアドレス/WordPressのインストールディレクトリにアクセスすると、「WordPress › インストール」画面が表示され、指示に従いタイトル、ユーザ名等を入力する。
パスワードはメモしておくこと。

入力が終わり「WordPressをインストール」をクリックする。
「Forbidden」が表示された方は、対策が必要です。

対策

原因はセキュリティ対策で導入したModSecurityが原因です。httpd.confを編集します。

vi /usr/local/apache2/conf/httpd.conf

WordPressを操作や書き込みをするIPアドレス追記する。(先頭でも可能)
注意:DMZで仮想サーバを構築した場合、ルータのIPアドレスがアクセス元になります。(access_logで確認)
(例:IPアドレスが192.168.10.1の場合)

SecRule REMOTE_ADDR "^192\.168\.10\.1$" "phase:1,id:133,nolog,allow"

これで再度アクセスし、「WordPressをインストール」をクリックすると画面が切り替わり、「成功しました !」と表示される。

必要なディレクトリ等の操作

このままの状態では、不具合が発生するため、ディレクトリの作成、パーミッションの変更が必要になります。
wp-contentに移動します。

cd wp-content

upgrade, uploadsディレクトリを作成し、権限を変更します。

mkdir upgrade
mkdir uploads
chown -R apache:apache upgrade
chown -R apache:apache uploads

WordPressディレクトリ内部のパーミッションを一括で変更します。
他の解説サイトだと様々なパーミッションが紹介されていますが、この設定だとプラグインの更新やテーマの導入でエラーが発生しません。

cd ..
find ./ -type d -exec chmod 707 {} \;
find ./ -type f -exec chmod 707 {} \;

参考

【WordPress】プラグインをインストールしようとしたら「パッケージを展開しています… ディレクトリを作成できませんでした。」とエラーが出た時の対処法 | 駆け出しwebクリエイター黒ブタの気まぐれブログ
LAMP構築-Linux(CentOS)へWordPressをインストール | 俺の開発研究所
ModSecurity で IP アドレスをホワイトリストに追加しチェックをスルーする方法 | Webセキュリティの小部屋


目次