↓もし、良かったらSNSでの紹介よろしくお願いします。

Nginx+WordPressでブログ環境を用意してみた。2018

bootstrap

はじめに

最近、本ブログをライブドアからワードプレスへ移行しました。
そのときの作業記録を元に今回はWordpressをNginxを使った環境構築について説明します。本当はApache+Wordpressで環境を構築するほうが楽そうですが、他のサービスをNginxで動かしているという理由でNginx+Wordpressで環境を構築しました。ドメインの切り分けなども特に手間がかからずにできました。

環境

  • CentOS 7
  • NginxとMysqlはインストール済み

各種ソフトウェアをインストール

phpをインストール

sudo yum install php

php-fpmをインストール

php-fpmを簡単に説明するとNginxとWordpressの仲介するソフトウェアです。

sudo yum install php-fpm

php-gdをインストール

php-gdは画像を編集を支援するphpモジュールです。画像のクリッピングの際に必要となるのでインストールしておきましょう。

 sudo yum install php-gd

WordPressをダウンロード+インストール

WordPressをダウンロードをしましょう。保存先はどこでも良いです。

$wget https://ja.wordpress.org/wordpress-latest-ja.tar.gz

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

$tar zxvf wordpress-latest-ja.tar.gz

展開したファイルを/var/www/配下に移動

$sudo mv wordpress /var/www/

ダウンロードしたファイルは不要なので削除

$rm wordpress-latest-ja.tar.gz

Mysqlの設定

WordPress用のデータベースを作成

まずルート権限でMysqlにログインしましょう。

$mysql -uroot -p
Enter password: 【rootユーザのパスワードを入力】

データベースの作成

mysql> create database wp;

次にデータベースwpへのアクセス権限を設定します。
wp配下のテーブルへ、ユーザーwpがローカルホストからアクセスできるようにします。
また、【wpユーザのパスワード】をここで設定します。
最後にFLUSH PRIVILEGESで設定を反映します。

mysql> grant all privileges on wp.* to wp@localhost identified by '【wpユーザのパスワード】';
mysql> FLUSH PRIVILEGES;

Nginxの設定

Nginxのファイルを記述しましょう。設定ファイルは複数ブログを運営するときのことを考えてブログごとに設定ファイルを分けて記述するのがおすすめです。ちなみに、サービスの切り分けはドメインにごとに行こなえるので簡単です。

/etc/nginx/conf.d/の配下にmyblog.confという風にファイルを作成して下記のように記述しました。

server {
listen 80;
server_name 【ドメイン(例:www.example.com)】;
index index.php;
root /var/www/wordpress;
location ~* /wp-config.php {
deny all;
}
location ~ \.php$ {
fastcgi_pass   127.0.0.1:9000;
fastcgi_index  index.php;
fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
include        fastcgi_params;
}
location @wordpress {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_split_path_info ^(.+\.php)(.*)$;
fastcgi_param SCRIPT_FILENAME $document_root/index.php;
include fastcgi_params;
}
location / {
try_files $uri $uri/ @wordpress;
}
}

php-fpmの設定

/etc/php-fpm.d/www.confの

; RPM: apache Choosed to be able to access some dir as httpd
user = apache
; RPM: Keep a group allowed to write in log dir.
group = apache

となっている部分を

; RPM: apache Choosed to be able to access some dir as httpd
user = nginx
; RPM: Keep a group allowed to write in log dir.
group = nginx

と書き換えます。ただし、nginxの実行ユーザーを変更している場合、user = nginxではなくuser=【nginxの実行ユーザー】に変えましょう。

WordPressの設定

WordPressの設定のサンプルファイルのファイル名をwp-config.phpに変更しましょう。

cp /var/www/wordpress/wp-config-sample.php /var/www/wordpress/wp-config.php

wp-config.phpで該当箇所を下記のように修正しましょう。

データベースの設定

/** WordPress のためのデータベース名 */
define('DB_NAME', 'wp');
/** MySQL データベースのユーザー名 */
define('DB_USER', 'wp');
/** MySQL データベースのパスワード */
define('DB_PASSWORD', '【mysqlのwpユーザのパスワード】');
/** MySQL のホスト名 */
define('DB_HOST', 'localhost');
/** データベースのテーブルを作成する際のデータベースの文字セット */
define('DB_CHARSET', 'utf8');
/** データベースの照合順序 (ほとんどの場合変更する必要はありません) */
define('DB_COLLATE', '');

セキュリティの設定

下記の部分はセキュリティ上、重要な設定です。 ‘put your unique phrase here’の部分をランダムな文字列に設定する必要があります。
https://api.wordpress.org/secret-key/1.1/salt/
へアクセスすると安全な設定を生成してくれます。

define('AUTH_KEY',         'put your unique phrase here');
define('SECURE_AUTH_KEY',  'put your unique phrase here');
define('LOGGED_IN_KEY',    'put your unique phrase here');
define('NONCE_KEY',        'put your unique phrase here');
define('AUTH_SALT',        'put your unique phrase here');
define('SECURE_AUTH_SALT', 'put your unique phrase here');
define('LOGGED_IN_SALT',   'put your unique phrase here');
define('NONCE_SALT',       'put your unique phrase here');

エラーログの有効化

エラーログを残しておくと何かと便利なので有効化の設定をします。

下記のコードを記述しましょう。場所はある程度適当で良いですが私は
セキュリティの設定の後に記述しました。

/**エラーログの有効化*/
define("WP_DEBUG_LOG", true);

ファイルアクセスの設定

wordpress/の所有者をnginx実行ユーザーにしましょう。ただし、nginxの実行ユーザーを変えている場合はコマンドのnginxの部分を変更してください。

sudo chown -R nginx wordpress/

起動

最後に起動するとWordpressの設定画面にアクセスできます。

$sudo service nginx start
$sudo service php-fpm start

余力があればSSL化も

SSL化の記事を書きました。余力があればSSL化も行っておきましょう。

https://www.tech-tech.xyz/archives/wordpress-ssl.html