Nginx + PHP-FPM で WordPress を動かしてみました。
環境
CentOS 6.6
Remiリポジトリの追加
以下のページ通りにRemiリポジトリとEPELリポジトリを追加しておきます。 (Remiリポジトリを利用するにはEPELリポジトリが必要)
【Linux】EPEL, Remi, RPMforgeリポジトリを追加する方法 - kzy52's blog
PHP のインストール
$ sudo yum -y --enablerepo=remi install php php-mbstring php-mysql
設定ファイル
# /etc/php.ini ; デフォルトの文字コード default_charset = "UTF-8" ; タイムゾーンの設定 date.timezone = "Asia/Tokyo" [mbstring] ; デフォルト言語の設定 mbstring.language = Japanese ; 内部文字エンコーディングの設定 ; PHP 5.6.0以降では非推奨になっているので設定しないようにしてください。代わりにdefault_charsetを設定します。 ;mbstring.internal_encoding = EUC-JP ; HTTP入力文字エンコーディングの設定 ; PHP 5.6.0以降では非推奨になっているので設定しないようにしてください。代わりにdefault_charsetを設定します。 ;mbstring.http_input = auto ; HTTP出力文字エンコーディングの設定 ; PHP 5.6.0以降では非推奨になっているので設定しないようにしてください。代わりにdefault_charsetを設定します。 ;mbstring.http_output = SJIS
MySQL のインストール
$ sudo yum -y --enablerepo=remi install mysql-server
設定ファイル
# /etc/my.cnf [mysqld] character-set-server = utf8 skip-character-set-client-handshake [mysql] default-character-set = utf8
MySQL の起動、自動起動設定
$ sudo service mysqld start $ sudo chkconfig mysqld on
セキュリティ強化
$ sudo mysql_secure_installation Enter current password for root (enter for none): Enter Set root password?(rootパスワード設定する?) [Y/n] Y Remove anonymous users?(匿名ユーザー削除する?) [Y/n] Y Disallow root login remotely?(リモートからのrootログインを拒否する?) [Y/n] Y Remove test database and access to it?(テストDB削除する?) [Y/n] Y Reload privilege tables now?(設定した内容を反映するか?) [Y/n] Y
データベース作成
データベースを「wordpress」ユーザー名を「wpadmin」パスワードを「password」で作成します。
$ mysql -u root -p > CREATE DATABASE `wordpress` DEFAULT CHARACTER SET `utf8` COLLATE `utf8_unicode_ci`; > CREATE USER `wpadmin`@`localhost` IDENTIFIED BY 'password'; > GRANT ALL ON `wordpress`.* TO `wpadmin`@`localhost`;
Nginx のインストール
$ sudo yum -y install nginx
設定ファイル
# /etc/nginx/conf.d/wordpress.conf server { listen 80; server_name example.com; # 取得したドメインを指定してください root /var/www/wordpress; index index.php; location / { if (!-e $request_filename) { rewrite ^/(.+)# /index.php?q=$1 last; break; } } # wp-config.phpへのアクセスをすべて拒否します。 location ~* /wp-config.php { deny all; } location ~ \.php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_param SCRIPT_FILENAME /var/www/wordpress$fastcgi_script_name; fastcgi_param PATH_INFO $fastcgi_script_name; include fastcgi_params; } }
設定のチェック
$ sudo nginx -t nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
Nginx の起動、自動起動設定
$ sudo service nginx start $ sudo chkconfig nginx on
PHP-fpm のインストール
$ sudo yum -y --enablerepo=remi install php-fpm
設定ファイル
# /etc/php-fpm.d/www.conf
user = nginx
group = nginx
PHP-fpm の起動、自動起動設定
$ sudo service php-fpm start $ sudo chkconfig php-fpm on
WordPress のインストール
https://ja.wordpress.org/ から最新版をダウンロードします。
$ sudo mkdir /var/www $ cd /var/www $ sudo wget https://ja.wordpress.org/latest-ja.tar.gz $ sudo tar zxfv latest-ja.tar.gz $ sudo rm -rf latest-ja.tar.gz $ sudo chown -R nginx:nginx wordpress
設定ファイル
$ cd /var/www/wordpress $ sudo cp wp-config-sample.php wp-config.php
# wp-config.php // データベース情報を設定します。 define('DB_NAME', 'wordpress'); define('DB_USER', 'wpadmin'); define('DB_PASSWORD', 'password'); define('DB_HOST', 'localhost'); define('DB_CHARSET', 'utf8'); // 「put your unique phrase here」を 適当な文字列に置き換えます。 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'); // プレフィックスは変更しておいた方がいいです。 $table_prefix = 'wp_';
動作確認
http://[wordpress.confで設定したドメイン] をブラウザで開きます。
Basic 認証の設定
管理画面にBasic 認証を設定します。
鍵の生成
ユーザー名を「wordpress」 パスワードを「password」にします。
$ sudo htpasswd -cb /var/www/wordpress/.htpasswd wordpress password
# /etc/nginx/conf.d/wordpress.conf server { ... # これを追加します。 location ~* /wp-login\.php|/wp-admin/((?!admin-ajax\.php).)*$ { auth_basic "Please enter your name and password"; auth_basic_user_file "/var/www/wordpress/.htpasswd"; } location ~ \.php$ { ... }
設定を反映
$ sudo nginx -t $ sudo service nginx reload