RHEL7/CentOS7でのWordPress環境構築

Linux

久々にWordpress環境を立ち上げたので構築手順を残しておきます。

昔同じくWordpress環境を構築したのがもう15年ほど前になるので、ホント変わった(使いやすくなった)なぁという感想です。

OS (CentOS7.2)

本手順ではCentOS7.2(7.2.1511)を使っていますが、OSのインストールの詳細については割愛します。

インストールグループ指定
  1. Basic GUIサーバ
  2. 開発ツール
あと起動後のSELinuxの無効化もお忘れなく。

また、本手順ではサーバのIPアドレスは192.168.1.1であるものとします。

MariaDB (v10.3)

ディストロ標準のMariaDBはv5.5系で色々と問題ありなので、v10.x系のyumリポジトリを作成してインストール。リポジトリの作成方法は公式サイトにRepository Configuration Toolがあります。ここで表示されるyumリポジトリの内容を、サーバ上の/etc/yum.repos.d/MariaDB.repoとして配置した後、下記コマンドにてインストールします。

yum install MariaDB-Server MariaDB-client

次に/etc/my.cnfの設定。※ここでは最低限に留めます。

vim /etc/my.cnf
===============================
[client]
default-character-set = utf8

[mysqld]
character-set-server = utf8
===============================

デーモンの自動起動設定後、起動します。

systemctl enable mariadb
systemctl start mariadb

初期設定用のセキュアスクリプトを流します。

mysql_secure_installation
プロンプト内での設定内容
  • 現在のrootパスワード:<空っぽ>(OSのrootパスワードとは別モノです)
  • rootパスワード設定:********(※MariaDBのDBAとしてのパスワードです)
  • 匿名(Anonymous)ユーザの削除
  • rootユーザのリモートログインブロック
  • テストデータベースの削除
  • privテーブルのリロード

設定ができたらmysqlコマンドにてDBの作成と権限付与を行います。ここではApacheのバーチャルホストで2サイトを運用する前提なので、DBも2つ作成しています。

mysql -u root -p
> create database wordpress;
> grant all privileges on wordpress.* to wordpress@localhost identified by '<wordpress2アカウントのパスワード>';
> create database wordpress2;
> grant all privileges on wordpress2.* to wordpress2@localhost identified by '<wordpress2アカウントのパスワード>';

PHP (v7.2.10)

PHPもディストロ同梱はv5.4系。さすがにこれはマズいので、v7.2系を使います。yumのbaseリポジトリが前提になっていることを前提に(依存rpmの追加に必要なので)、必要なrpmを追加します。また、PHPはyum管理下に置きたいので、remiリポジトリを使用します。

なお、PHPのSSL関連モジュールの依存関係の都合上、OpenSSLをアップデートさせておく必要があります。
流れとしては、OpenSSLアップデート⇒EPELリポジトリ登録、PHPインストール、となります。

yum update openssl
yum install epel-release-latest-7.noarch.rpm
yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm
yum install yum install --enablerepo=remi,remi-php72 php php72 php72-php php-intl php-mbstring php-pdo php-gd php-mysqlnd php-xml

バージョンを確認します。

php -v
PHP 7.2.10 (cli) (built: Sep 11 2018 11:22:20) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies

php.iniの設定をします。

vim /etc/php.ini
======================================
date.timezone = "Asia/Tokyo"
mbstring.language = Japanese
mbstring.internal_encoding = UTF-8
mbstring.http_input = pass 
mbstring.http_output = pass 
mbstring.encoding_translation = Off 
mbstring.detect_order = auto 
mbstring.substitute_character = none
mbstring.func_overload = 0 
mbstring.strict_detection = Off 
mbstring.http_output_conv_mimetype=
======================================

Apache (v2.4.6-40)

ここではバーチャルホストで2サイト「example1.com」「example2.com」を運用する前提で記します。前者がメインサイト、後者がサブサイトという位置づけです。

ドキュメントルートは、

メインサイト:/var/www/html/example1.com
サブサイト:/var/www/html/example2.com

というディレクトリ構成とします。

まずは主要設定ファイルのhttpd.confを編集します。

vim /etc/httpd/conf/httpd.conf
==============================================
# 変更前
# Options Indexes FollowSymLinks
# 変更後
Options Includes ExecCGI FollowSymLinks
 
# 変更前
# AllowOverride None
# 変更後
AllowOverride All
 
# 以下のようにコメントアウト
# AddDefaultCharset UTF-8
 
# 以下を追記
AddType text/css .css
AddType text/javascript .js

# 変更前
# DocumentRoot /var/www/html
# 変更後
DocumentRoot /var/www/html/example1.com
==============================================

次に、バーチャルホストの設定を行います。初めにバーチャルホスト全体の定義です。定義するバーチャルホスト名以外でのアクセス(IPでの直アクセスなど)を拒否します。

cd /etc/httpd/conf.d/
vim virtualhost-00.conf
==================================
<VirtualHost _default_:80>
  ServerName any
  <Location />
    Require all denied
  </Location>
</VirtualHost>
==================================

メインサイトのバーチャルホスト定義

vim virtualhost-example1.com.conf
=================================================
<VirtualHost *:80>
  ServerName example1.com
  DocumentRoot /var/www/html/example1.com
</VirtualHost>
=================================================

続いてサブサイトのバーチャルホスト定義。
ここではログ(アクセスログ、エラーログ)をメインサイトとは別のファイルに出力するよう設定します。

vim virtualhost-example1.com.conf
=================================================================
<VirtualHost *:80>
  ServerName example2.com
  DocumentRoot /var/www/html/example2.com
  ErrorLog logs/example2.com-error_log
  CustomLog logs/example2.com-access_log combined env=!no_log
</VirtualHost>
=================================================================

 

WordPress (v4.9.8-ja)

WordPress日本語サイトから最新のtarを入手します。ここではv4.9.8-jaとします。tarを解凍し、Apacheのconfで指定したドキュメントルートは以下に配置します。

tar zxf wordpress-4.9.8-ja.tar.gz
chown -R apache:apache wordpress
cp -pr wordpress /var/www/html/example1.com
cp -pr wordpress /var/www/html/example2.com

Apacheの自動起動登録をし、起動します。

systemctl enable httpd
systemctl start httpd

Webブラウザからアクセスし、Wordpressの初期設定を行います。

メインサイト:http://example1.com
サブサイト:http://example2.com
テスト段階でまだドメイン登録が完了していない場合などは、クライアントのhostsファイルにFQDNを直書きしてから確認してください。
例)
192.168.1.1 example1.com
192.168.1.1 example2.com

WordPress初期設定画面にて、以下の設定を行います。(example2.comの設定は下記”wordpress”を”wordpress2″に読み替えて設定してください)

Wordpress初期設定
  • データベース名:wordpress
  • ユーザー名:wordpress
  • パスワード:<DB構築時に設定したパスワード>
  • DBのホスト名:localhost
  • テーブル接頭辞:wp_ ※デフォルトのまま
  • サイトのタイトル:<任意のサイトタイトル>
  • ユーザー名:<Wordpress管理用のユーザ名>
  • パスワード:<任意のパスワード>
  • メールアドレス:<任意のメールアドレス>
  • 検索エンジンでの表示:チェックを外す ※任意