WordPress
centos7

Wordpressのインストール・セットアップ(CentOS7)

はじめに

ここで紹介する手順は、技術検証用にローカル環境へWordpressをセットアップする手順です。
インターネット上で不特定多数に公開するための手順ではありませんので注意してください。

Wordpressは、PHPで記述されています。データストアには、MySQLを使用していますので、WordPressを動作させるために以下のインストール・セットアップが必要です。

  • ApacheHTTPServer
  • PHP
  • MySQL

ここでは、以下のバージョンを使用してセットアップを行います。

  • CentOS 7.1
  • Wordpress 4.8.3
  • ApacheHTTPServer 2.4
  • PHP 7
  • MySQL 5.7

Wordpressのインストール先を /opt/wordpress とします。
サーバ名を wordpress.example.com としてセットアップします。

ApacheHTTPServerのインストール・セットアップ

ApacheHTTPServerがインストールされているか確認します。

# rpm -qa | grep httpd

インストールされていない場合は、インストールします。

# yum install -y httpd

ドキュメントルートディレクトリをあらかじめ作成しておきます。

# mkdir -p /opt/wordpress

/etc/httpd/conf/httpd.confファイルを編集し、ドキュメントルートディレクトリとアクセス制御の設定を変更します。

/etc/httpd/conf/httpd.conf
DocumentRoot "/opt/wordpress"
(省略)
<Directory />
    AllowOverride none
#    Require all denied ← コメントアウト
</Directory>

ApacheHTTPServerの自動起動設定・サービス起動

# systemctl enable httpd.service
# systemctl start httpd.service

SSLを使用する場合

HTTPSでアクセスするためには、サーバ証明書が必要です。
ここでは検証用に、オレオレ証明書を作成してHTTPSでアクセスできるようにします。

SSLモジュールインストール

sslモジュールがインストールされていない場合、インストールします。

# yum install -y mod_ssl

サーバ証明書の作成(オレオレ)

opensslがインストールされている必要があります。インストールされていない場合、インストールしてください。

# yum install -y openssl openssl-devel

サーバ秘密鍵を作成

以下のコマンドを実行して、サーバ秘密鍵を作成し、パスワードを設定します。

# cd /etc/httpd/conf
# openssl genrsa -aes128 1024 > server.key
Enter pass phrase:

証明書リクエストを作成

以下のコマンドを実行して、証明書リクエストを作成します。
Common NameでサーバのFQDNを指定します。

# openssl req -new -key server.key > server.csr
(省略)
Common Name (eg, your name or your server's hostname) []:wordpress.example.com

証明書を作成

# openssl x509 -in server.csr -days 3650 -req -signkey server.key > server.crt
Enter pass phrase for server.key: <秘密鍵のパスフレーズ>

httpd起動時にパスフレーズをたずねられないようにする

# mv server.key server.key.bak
# openssl rsa -in server.key.bak > server.key
Enter pass phrase for server.key.bak: <秘密鍵のパスフレーズ>

ssl設定ファイルの編集

/etc/httpd/conf.d/ssl.conf ファイルを編集して、HTTPSアクセスを許容し、サーバ証明書と秘密鍵を指定します。

/etc/httpd/conf.d/ssl.conf
<VirtualHost _default_:443>
(省略)
  SSLCertificateFile /etc/httpd/conf/server.crt
  SSLCertificateKeyFile /etc/httpd/conf/server.key
(省略)

ApacheHTTPServerを再起動します。

# systemctl restart httpd.service

PHPのインストール

WordpressのPHPバージョン要件が、PHP7以上です。
CentOSの標準リポジトリからはインストールできません。

PHP7をインストールできるようにするため、まず、epelリポジトリをインストールします。

# yum install -y epel-release

epelリポジトリを普段使用しないようにenable=0に変更しておきます。

/etc/yum.repos.d/epel.repo
enabled=1
↓
enabled=0

PHP7をインストールできるようにするため、Remiリポジトリをインストールします。

# rpm -ivh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
# yum --enablerepo=epel,remi-php70 info php

※ epelリポジトリでエラーとなる場合は、/etc/yum.repos.d/epel.repo の baseurlのをアンコメントして有効化し、metalinkをコメントアウトします。

PHP7と関連モジュールをインストールします。

# yum --enablerepo=epel,remi-php70 -y install php php-cli php-devel php-common php-mbstring php-mysqlnd php-fpm php-gd php-gmp php-mcrypt php-opcache php-pdo php-xml

PHPのタイムゾーン設定を行います。

/etc/php.ini
date.timezone = Asia/Tokyo

MySQLのインストール

ここでは、MySQL5.7をインストールします。

MariaDBがインストールされている場合、削除します。

# rpm -qa | grep mariadb
mariadb-libs-5.5.41-2.el7_0.x86_64

# yum remove mariadb-libs

MySQLリポジトリの追加・MySQLインストール

CentOS標準リポジトリの場合、MySQLをインストールすることができません。
MySQL5.7をインストールするために、yumリポジトリを追加します。

# wget http://dev.mysql.com/get/mysql57-community-release-el7-8.noarch.rpm
# yum localinstall -y mysql57-community-release-el7-8.noarch.rpm

# yum install -y mysql57-community-release
# yum install -y mysql-community-server mysql-community-devel

MySQLの自動起動設定追加・サービス起動

# systemctl enable mysqld.service
# systemctl start mysqld.service

MySQL初期化

# mysqld --user=mysql --initialize

rootの一時パスワードがログへ出力されるので控えておきます。

# less /var/log/mysqld.log
[Note] A temporary password is generated for root@localhost: afrQdh-b3<>T

mysql_secure_installation を実行

# mysql_secure_installation
  • rootパスワードの再設定
  • VALIDATE PASSWORD pluginの設定
  • anonymousユーザの削除
  • testデータベース削除
  • Privileges(権限)の再読み込み を実行します。 yかnで選択していきます。 ローカルで使用するテスト環境等の場合は、面倒なのでrootパスワードの再設定くらいでよいかな。

MySQLの設定をいじりたい場合は、/etc/my.cnf ファイルを編集してサービスを再起動してください。
ここでは省略します。

Wordpressデータベースの作成

データベースおよびユーザの作成

wordpressデータベースを作成します。
また、wordpressユーザを作成し、データベースへの権限を与えます。

# mysql -u root -p
Enter password:

mysql> create database wordpress;

mysql> grant all privileges on wordpress.* to wordpress identified by 'password' with grant option;

mysql> flush privileges;

mysql> quit

Wordpressのセットアップ

Wordpressのダウンロード・解凍

wordpress.org から WordPress パッケージをダウンロードします。
ここでは、tar.gz形式をダウンロードします。
ダウンロードしたときの最新バージョンは、4.8.3でした。

# cd tmp
# wget http://wordpress.org/latest.tar.gz

インストール先(/opt)へ解凍します。

# cd /opt
# tar xzf /tmp/latest.tar.gz

wp-config.phpファイルを編集

/opt/wordpressに wp-config.phpファイルを作成し、設定を行います。
元となるサンプルファイルwp-config-sample.phpがあるのでコピーします。

# cd /opt/wordPress
# cp wp-config-sample.php wp-config.php

DBの設定
MySQLの設定で指定したデータベース名、ユーザ名、パスワードを記述します。

認証ユニークキーの設定
以下のURLへアクセスし表示される内容を使用して設定を行います。
https://api.wordpress.org/secret-key/1.1/salt/

wp-config.phpファイルの記述は、以下のようになります。

wp-config.php
define('DB_NAME', 'wordpress');

define('DB_USER', 'wordpress');

define('DB_PASSWORD', 'password');

define('DB_HOST', 'localhost');

define('AUTH_KEY',         '4+Ju:g,XePI|60}}K.S8b+f!6:OM`cR#L_]+,ozm...');
define('SECURE_AUTH_KEY',  '><HY~R#h s];#`LW%LV%}*vl;W.G:w?ihs+y7&xe...');
define('LOGGED_IN_KEY',    'u ?jcw<cv]sK7r.0&-/v1s>=IbG&!qk?yos,H}Y8...');
define('NONCE_KEY',        '*&b:=^KMf94Funs8(elX^|bMl1]v?ZRqozr9CUSH...');
define('AUTH_SALT',        '+aArlG&LP[>a,xnxTnPHe4vX6&*!MPT5LutNs3`7...');
define('SECURE_AUTH_SALT', 't(#8Tn]z9c-A[N.2v_8;SY.LPH|]KalzgZ5ZQJ!4...');
define('LOGGED_IN_SALT',   '96#|T]l>1A!MFX*ks.nv$*!bDh[?.+){9,ONs=`4...');
define('NONCE_SALT',       '-[|d`?Q(`.0AIojozQ>*E|T.H:Y$^Af5-/:[ee_d...');

インストールアクセスポイントへアクセス

下記のインストールアクセスポイントへブラウザでアクセスします。
SSL証明書が、オレオレ証明書のため、警告画面が出ますが、無視してください。

wordpress.example.comでアクセスできるよう、ブラウザ(クライアント)側のhosts設定を行っておいてください。

1. https://wordpress.example.com/wp-admin/install.php へアクセス
2. Site title(サイト名)、ユーザ名(管理者)、パスワード、メールアドレス、検索エンジンの表示を設定します。
3. 各設定後、InstallWordpressボタンをクリックします。
4. Loginボタンからログイン画面を表示して、2.で設定したユーザ名・パスワードでログインします。
5. Dashboard画面が表示されれば、ログイン成功です。

アクセスできない場合は、firewalldなどアクセス制御ではじかれていないか確認してください。

セットアップ完了

Wordpressを使用する環境が整いました。
今回はこれで終了です。