はじめに
ここで紹介する手順は、技術検証用にローカル環境へ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
ファイルを編集し、ドキュメントルートディレクトリとアクセス制御の設定を変更します。
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アクセスを許容し、サーバ証明書と秘密鍵を指定します。
<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に変更しておきます。
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のタイムゾーン設定を行います。
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
ファイルの記述は、以下のようになります。
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設定を行っておいてください。
- https://wordpress.example.com/wp-admin/install.php へアクセス
- Site title(サイト名)、ユーザ名(管理者)、パスワード、メールアドレス、検索エンジンの表示を設定します。
- 各設定後、
InstallWordpress
ボタンをクリックします。 - Loginボタンからログイン画面を表示して、2.で設定したユーザ名・パスワードでログインします。
- Dashboard画面が表示されれば、ログイン成功です。
アクセスできない場合は、firewalldなどアクセス制御ではじかれていないか確認してください。
セットアップ完了
Wordpressを使用する環境が整いました。
今回はこれで終了です。