WordPress
nginx
mariadb
php-fpm
PHP7

CentOS7.4 on Microsoft AzureにWordPressをインストール

今日はWordPressをインストールしてみたいと思います。
今後も同じ事をすると思うので、メモしておきます。

インストール先環境

  • CentOS 7.4 on Microsoft Azure

準備

epelリポジトリの追加

epelリポジトリをインストール。

# yum install epel-release

明示的にepelリポジトリを指定しないと使用できないように、リポジトリの設定を変更する。
私の場合、下記2つのファイルが存在していたので確認。

  • epel.repo
  • epel-testing.repo

epel.repoのみ有効化部分を発見したので、無効化。

# vi /etc/yum.repos.d/epel.repo

[epel]セクションの「enabled」を1から0に変更。

remiリポジトリの追加

remiリポジトリをインストール。

# rpm --import http://rpms.famillecollet.com/RPM-GPG-KEY-remi
# rpm -ivh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm

remiリポジトリもepelリポジトリ同様に設定を変更する。
私の場合、下記5つのファイルが存在していたので確認。

  • remi-php54.repo
  • remi-php70.repo
  • remi-php71.repo
  • remi-php72.repo
  • remi.repo
  • remi-safe.repo

remi-safe.repoのみ有効化部分を発見したので、無効化。

# vi /etc/yum.repos.d/remi-safe.repo

[remi-safe]セクションの「enabled」を1から0に変更。

nginx

nginxのインストール

epelリポジトリを使用してnginxをインストール。

# yum install --enablerepo=epel nginx

WordPressインストール用ディレクトリを作成

今回は「blog」というディレクトリを作成してみます。

# mkdir /usr/share/nginx/blog
# chown nginx:nginx /usr/share/nginx/blog/

WordPressをダウンロード

最新版を取得。

# cd /usr/share/nginx/blog/
# wget https://ja.wordpress.org/latest-ja.tar.gz

WrodPressを解凍

# tar xvzf latest-ja.tar.gz
# chown -R nginx:nginx wordpress

nginxの設定

展開したWordPressをnginxのバーチャルホストとして設定。

# cd /etc/nginx/conf.d
# vi blog.conf

設定内容は次の通り。
「server_name」と「root」は適宜読み替えて下さい。

blog.conf
server {
  listen 80;
  server_name blog.hoge.com;
  root /usr/share/nginx/blog/wordpress;
  index index.php;

  charset utf-8;

# wordpress パーマネントリンク設定
  try_files $uri $uri/ /index.php?q=$uri&$args;

# wp-config.phpへのアクセス拒否設定
  location ~* /wp-config.php {
    deny all;
  }

# php-fpm用設定
  location ~ \.php$ {
    fastcgi_pass 127.0.0.1:9000;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_param PATH_INFO $fastcgi_script_name;
    include fastcgi_params;
  }
}

nginxを起動

nginxを起動し、自動起動設定も行う。

# systemctl start nginx.service
# systemctl enable nginx.service

php

php7、php-fpmをインストール

remiリポジトリを使用してphp7をインストール。
php-fpmも併せてインストール。

# yum install --enablerepo=epel,remi-php72 php php-mbstring php-pear php-fpm php-mcrypt php-mysql

php-fpmの設定

php-fpmをnginx上で動作するように設定。

# cd /etc/php-fpm.d/
# vi www.conf

設定内容は次の通り、実行ユーザー・グループをnginxに変更。

www.conf
;user = apache
user = nginx
;group = apache
group = nginx

php-fpmを起動

php-fpmを起動し、自動起動設定も行う。

# systemctl start php-fpm.service
# systemctl enable php-fpm.service

MariaDB

MariaDBをインストール

MariaDBをインストール。

# yum install mariadb mariadb-server

MariaDBを起動

MariaDBを起動し、自動起動設定も行う。

# systemctl start mariadb.service
# systemctl enable mariadb.service

MariaDBの設定

「mysql_secure_installation」を実行し、MariaDBを安全な状態に設定。

# mysql_secure_installation

現在のrootユーザーのパスワード。
まだ未設定なので「Enter」キーを押下。

Enter current password for root (enter for none):

rootユーザーのパスワードを設定するか否か。
設定するので「y」キーを押下し、パスワードを設定。

Set root password? [Y/n]
New password:
Re-enter new password:

最初から設定されているanonymousユーザーを削除するか否か。
削除するので「y」キーを押下。

Remove anonymous users? [Y/n]

rootユーザーでのリモートログインを禁止するか否か。
禁止するので「y」キーを押下。

Disallow root login remotely? [Y/n]

最初から設定されているtestデータベースを削除するか否か。
削除するので「y」キーを押下。

Remove test database and access to it? [Y/n]

今設定した各種設定を直ぐに反映させるか否か。
反映させるので「y」キーを押下。

Reload privilege tables now? [Y/n]

MariaDBの文字コードを設定

WordPressのデータが文字化けしないようにMariaDBの文字コードを設定。

# cd /etc/my.cnf.d/
# vi server.cnf

設定内容は次の通り、[mysqld]セクションに下記を追加。

server.cnf
character-set-server = utf8

設定を反映させる為にMariaDBを再起動。

# systemctl restart mariadb.service

WordPress用の設定

MariaDBにWordPress用のデータベースとデータベース管理ユーザーを作成。

まず、MariaDBにrootユーザーで接続。

# mysql -u root -p
Enter password:

次に、WordPress用データベースとしてblogを作成。

MariaDB [(none)]> CREATE DATABASE blog;

最後に、WordPress用データベース管理ユーザーを作成。

MariaDB [(none)]> GRANT ALL PRIVILEGES ON blog.* TO "hogeuser"@"localhost" IDENTIFIED BY "hogepassword";

作成したユーザー情報を反映させ、作業を終了。

MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> exit

WordPress

WordPressの設定

wp-configの設定を行う。

まず、wp-config-sample.phpをコピーして、wp-config.phpを作成する準備。

# cd /usr/share/nginx/blog/wordpress/
# cp -p wp-config-sample.php wp-config.php

次に、wp-config.phpに下記項目を設定。

設定項目 設定内容
define(DB_NAME) blog
define(DB_USER) hogeuser
define(DB_PASSWORD) hogepassword
define(AUTH_KEY) WordPressの秘密鍵サービス(https://api.wordpress.org/secret-key/1.1/salt/)の自動生成結果
define(SECURE_AUTH_KEY)
define(LOGGED_IN_KEY)
define(NONCE_KEY)
define(AUTH_SALT)
define(SECURE_AUTH_SALT)
define(LOGGED_IN_SALT)
define(NONCE_SALT)
$table_prefix blog_

wp-config.phpを開く。

# vi wp-config.php
wp-config.php
<?php
/**
 * WordPress の基本設定
 *
 * このファイルは、インストール時に wp-config.php 作成ウィザードが利用します。
 * ウィザードを介さずにこのファイルを "wp-config.php" という名前でコピーして
 * 直接編集して値を入力してもかまいません。
 *
 * このファイルは、以下の設定を含みます。
 *
 * * MySQL 設定
 * * 秘密鍵
 * * データベーステーブル接頭辞
 * * ABSPATH
 *
 * @link http://wpdocs.osdn.jp/wp-config.php_%E3%81%AE%E7%B7%A8%E9%9B%86
 *
 * @package WordPress
 */

// 注意:
// Windows の "メモ帳" でこのファイルを編集しないでください !
// 問題なく使えるテキストエディタ
// (http://wpdocs.osdn.jp/%E7%94%A8%E8%AA%9E%E9%9B%86#.E3.83.86.E3.82.AD.E3.82.B9.E3.83.88.E3.82.A8.E3.83.87.E3.82.A3.E3.82.BF 参照
)
// を使用し、必ず UTF-8 の BOM なし (UTF-8N) で保存してください。

// ** MySQL 設定 - この情報はホスティング先から入手してください。 ** //
/** WordPress のためのデータベース名 */
define('DB_NAME', 'blog');

/** MySQL データベースのユーザー名 */
define('DB_USER', 'hogeuser');

/** MySQL データベースのパスワード */
define('DB_PASSWORD', 'hogepassword');

/** MySQL のホスト名 */
define('DB_HOST', 'localhost');

/** データベースのテーブルを作成する際のデータベースの文字セット */
define('DB_CHARSET', 'utf8');

/** データベースの照合順序 (ほとんどの場合変更する必要はありません) */
define('DB_COLLATE', '');

/**#@+
 * 認証用ユニークキー
 *
 * それぞれを異なるユニーク (一意) な文字列に変更してください。
 * {@link https://api.wordpress.org/secret-key/1.1/salt/ WordPress.org の秘密鍵サービス} で自動生成することもできます。
 * 後でいつでも変更して、既存のすべての cookie を無効にできます。これにより、すべてのユーザーを強制的に再ログインさせることになりま
す。
 *
 * @since 2.6.0
 */
define('AUTH_KEY','McVW=3+b_RA6E!l<s`P38#Ep[2wpF1591mTvk}t20*nH5Q3#V2$ {|-|6EFO~#+ ');
define('SECURE_AUTH_KEY','JTgsPKc{+xOC&srLSh-21guBH-?WZ6}P=C{7vE1<I+.f2)$|Yz)t?{-7nB+7ej-@');
define('LOGGED_IN_KEY','[~Kfh@%:aO9l>Sg8,DlDi$=,)iJQB VsZEHpUj]o-Qj]-(rbY+o~|VLM:iS>4XhI');
define('NONCE_KEY','2|;SrI;-lg!cD>%s2eJ; L`8u A+TPinEkjcqGZjB`/JMxDqN4Q84tlh5e>w+;d&');
define('AUTH_SALT','q&Ezg9I(r$EHG1os?I}BY%7-/Jj]C*<f@ro,e,R=97t(O8`-9ys4T%[hg|{<u:h4');
define('SECURE_AUTH_SALT',' =oFw|ujGbbV^RDhzpD&Q7|*R*<J|-`n-n=;v;~m{IeGYWh%;M`pDv)[s4qn}!)e');
define('LOGGED_IN_SALT','0#~BU J~iP-B1n@@`m@{Li6uP%$9cG6*1k ;h+-jh*xd]I ,ws?e$GJw|M=T!C?T');
define('NONCE_SALT','Y50H1L_X(s/_bpi]_{VWRzyAP@DZ]B,KDMX%Tn,k+GCl4:aJs*9icD`GF+a!p<[n');

/**#@-*/

/**
 * WordPress データベーステーブルの接頭辞
 *
 * それぞれにユニーク (一意) な接頭辞を与えることで一つのデータベースに複数の WordPress を
 * インストールすることができます。半角英数字と下線のみを使用してください。
 */
$table_prefix  = 'blog_';

/**
 * 開発者へ: WordPress デバッグモード
 *
 * この値を true にすると、開発中に注意 (notice) を表示します。
 * テーマおよびプラグインの開発者には、その開発環境においてこの WP_DEBUG を使用することを強く推奨します。
 *
 * その他のデバッグに利用できる定数については Codex をご覧ください。
 *
 * @link http://wpdocs.osdn.jp/WordPress%E3%81%A7%E3%81%AE%E3%83%87%E3%83%90%E3%83%83%E3%82%B0
 */
define('WP_DEBUG', false);

/* 編集が必要なのはここまでです ! WordPress でブログをお楽しみください。 */

/** Absolute path to the WordPress directory. */
if ( !defined('ABSPATH') )
        define('ABSPATH', dirname(__FILE__) . '/');

/** Sets up WordPress vars and included files. */
require_once(ABSPATH . 'wp-settings.php');

blogの初期設定

まず、下記URLにアクセスします。

WordPress - インストールページ

wordpress_install.png

※私の場合、Microsoft Azure でLinux仮想マシンを構築したてでしたので、受信セキュリティ規則においてHTTP(TCP 80ポート)が開いておらず、最初アクセスできませんでした。もし、同じような現象に遭遇した場合、チェックしてみて下さい。

次に、blogの初期設定を行う。
下記を入力し、「インストール」ボタンをクリック。

設定項目 設定内容
タイトル hoge blog
ユーザー名 hogewpuser
パスワード hogewppassword
メールアドレス hogewpuser@hoge.com
検索エンジンでの表示 チェックOFF(※今回はお試し環境の為)

「成功しました!」と表示されたら、初期設定が完了です。

wordpress_install_success.png

「ログイン」ボタンをクリックして、WordPressの管理ページへログインできます。

お疲れ様でした!