動作確認環境
- 仮想環境 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
を任意に変更し、localhost
は127.0.0.1
に変更します。
// ** 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');
/** 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セキュリティの小部屋