Apache で WordPress を動かす

Apache で 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`;

Apache のインストール

$ sudo yum -y install httpd

設定ファイル

# /etc/httpd/conf/httpd.conf

# ユーザーとグループの設定です
User apache
Group apache

# Web サーバーにアクセスしたクライアントに返す情報です。
# レスポンスヘッダには「Server: Apache」という名前しか返されません。
ServerTokens Prod

# エラーメッセージ出力時にフッタを表示しないようにします。
ServerSignature Off
# /etc/httpd/conf.d/wordpress.conf

<VirtualHost *:80>
  ServerName example.com; # 取得したドメインを指定してください
  DocumentRoot /var/www/wordpress
  <Directory "/var/www/wordpress">
    AllowOverride All # .htaccess による設定変更を許可
    Options -Indexes
  </Directory>

  # wp-config.phpへのアクセスをすべて拒否します。
  <Files wp-config.php>
    order allow,deny
    deny from all
  </Files>
</VirtualHost>

設定のチェック

$ sudo apachectl configtest
Syntax OK

Apache の起動、自動起動設定

$ sudo service httpd start
$ sudo chkconfig httpd on

WordPress のインストール

https://ja.wordpress.org/ から最新版をダウンロードします。

$ cd /var/www
$ 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 apache:apache 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で設定したドメイン] をブラウザで開きます。

f:id:kzy52:20141129110600p:plain

Basic 認証の設定

管理画面にBasic 認証を設定します。

鍵の生成

ユーザー名を「wordpress」 パスワードを「password」にします。

$ sudo htpasswd -cb /var/www/wordpress/.htpasswd wordpress password
# /var/www/wordpress/.htaccess

<Files "wp-login.php">
  AuthType Basic
  AuthName "Please enter your name and password"
  AuthUserFile /var/www/wordpress/.htpasswd
  Require valid-user
</Files>

設定を反映

$ sudo apachectl configtest
$ sudo service httpd graceful

参考

PHP: Runtime Configuration - Manual