さくらのクラウドに Nginx + PHP-FPM + MariaDB の環境を作る

さて、ここからが本題の、「Webサーバとして最低限必要なもの」のインストールです。
このエントリーは、「さくらのクラウドに CentOS 7 をインストール」の続きです。基本的に CentOS 7 であれば、ほとんど同じ環境が再現できるのではないかなぁと思いますが、やはり環境によっては向き不向きのようなものが出てきます。
ここでは、 WordPress をマルチサイトで動かすことを前提としての事前作業を書いていきます。
環境によって出来る操作などが異なってくるため、この通りに行えば必ずうまくいくとも限りませんのでご了承ください。

前回までのおさらい

さくらのクラウドに CentOS 7 をインストール
さくらのクラウドの CentOS 7 でユーザー作成とSSHの設定をする
CentOS 7 に Vim エディタをインストール

前回までで、ようやく「Webサーバとして使うための事前準備」ができた状態となります。
今回は、Webサーバを構築し、WordPressをインストールするまでをいっきに説明します。
・・・のつもりでしたが、長くなりすぎるので分割することにしました。

まず、 root アカウントで作業ができるよう、suコマンドを実行しておいてください。

今回のための事前準備

CentOS 7 の標準リポジトリにないパッケージを使用するため、外部のリポジトリを使用するための準備を行います。
「リポジトリ」という言葉にあまり慣れていませんが、 Windows でいう EXE ファイルや、それを解凍した後の、必要な物が詰まったフォルダ、あるいは Program Files のようなものという解釈。
「外部リポジトリ」って言葉になってくると、ざっと調べた感じだと「github のようなところから必要な物をダウンロードするための機能」なのかしら?

epel リポジトリのインストール

インストールするアプリがCentOS標準のリポジトリのアプリと混合しないように、必要なときにのみ明示的に「–enablerepo」を指定しなければ「epel」リポジトリを使用出来ない設定にしておきます。

[epel] の6行目、

を変更します。

※ 勝手にアップデートを実行するのを防ぐ “priority = 0” と同じようなものと思っていましたが、違うようです。でも、コマンド入力で –enabled をつけないと実行されないという意味では同じようなものと思っていてもいいのかな?

remi リポジトリの追加

次の2つを実行します。

remi-php70.repo 、 remi-safe.repo 、 remi.repo が追加されています。
上記 ls の結果は一例です。必ずこの通りとは限りません。

PHP7 のインストール

yum を使って PHP7 をインストールします。

Nginx は PHP を php-fpm で動かします。忘れずにインストールします。
また、WordPressは画像のリサイズを自動で行いますが、それには gd モジュールが必要です。これも忘れずに。

PHPやモジュールのアップデートで更新をかける場合は、以下のようにします。
PHP7本体とGDモジュールの更新をかける際の例。

また、PHPのメジャーアップデートの適用のようなことを行う場合は

とすれば、次回の yum update から php7.1 が適用されます。

PHP のバージョンを確認

PHP7 のインストールが完了したら、バージョンの確認を行います。

※執筆当時、PHP7の最新版は7.0.4です。

文字コードの設定

php.ini の文字コードに関する設定を変更します。
デフォルトのままだと、WordPress で日本語の名前のファイルをアップロードした際に文字化けが発生してしまいます。

という行を探し、

に変更します。

php-fpm の設定

PHP7 のインストールと同時に行った php-fpm の設定を行います。
php-fpm の実行ユーザとグループを nginx にし、nginx との連携ができるようにします。

古いファイルの名前を変更し、新しいファイルに内容をコピーしてバックアップをとっておきます。
新しいファイルを編集します。

それぞれ user と group の名前を変更します。

Nginx のインストール

Nginx 公式からリポジトリをインストールし、その後に Nginx をインストールします。

Nginx リポジトリとパッケージのインストール

Nginx の設定をする

バーチャルホストとして1つのサーバに複数のドメインを割り当てる場合、Nginx の設定ファイルの作成には、2つの方法があります。
今回は、 WordPress でマルチサイトを構築する想定で、1つのファイルに複数の設定を行う方法を明記します。

まず、編集用のファイルを開き、デフォルトファイルをバックアップします。

WordPress 用の設定を書き込んでいきます。

サイトごとに設定ファイルを分ける場合には、
ファイル名に “example.jp.conf” や “hoge.example.jp.conf” 、また “fuga.example.jp.conf” など分かりやすいものにして、それぞれの設定を conf.d 直下に置くと読み込まれます。

「事前作業」と銘打っていますが、 Nginx の設定あたりは自身の環境と相談しながらのほうが、本当は望ましいと思います。
上記は、あくまでも設定作業を行った最終形態がこれだったというものです。

php-fpm と Nginx を起動

Nginx と php-fpm を起動します。

システムの再起動などを行った際に自動的にサービスが起動するよう、自動起動の設定を行います。

MariaDB の(再)インストール

※2016年12月28日、デフォルトの MariaDB 削除について追記。
今回は、データベースに MariaDB を使用します。 MySQL もインストールすることはできますが、CentOS 7 からは標準のデータベースサーバが MariaDB になったようです。
MariaDB は MySQL との互換性のあるデータベースで、 MySQL よりも処理性能がアップしており、拡張性が上がっています。
自由に使えるサーバで今更 MySQL を選ぶ理由もないので、 MariaDB を使うのですが、デフォルトで入っている MariaDB はバージョンが古いのでいちど削除します。

そして、インストールしましょう。

MariaDB を起動

インストールが完了したら、まず起動します。ついでに自動起動設定も行いましょう。

MariaDB の設定

MariaDB を起動したら、次は MariaDB の初期設定を行います。

上記を入力すると、いろいろ質問されますので以下のように答えていきます。

上記で “y” を入力する場面では、「空のままエンター」も同じ挙動です。

文字コードの設定

設定内容

[mysqld]の部分の設定を変更する

MariaDBを再起動

次のコマンドを入力し、再起動して設定を反映させます。

MariaDB に データベース名と管理ユーザ名を登録

MariaDB に、 WordPress で使用するデータベース名と管理ユーザ名を登録します。

最後に、設定を反映させるためのコマンドを入力します。

お疲れさまでした

以上で、 WordPress をマルチサイトで動かすための事前準備が整いました。
次回はいよいよ WordPress をインストールします。

参考にしたサイト

CentOS 7 MariaDB インストール、及び初期設定

CentOS7 + MariaDB + Nginx + PHP7 + GCP (+WordPress) の環境構築メモ – Foreignkey, Inc.

CentOS7 + Php7 + Nginx + Php-fpm環境にwordpressインストール | Server-memo.net

CentOS7 に Nginx をインストールする | SaintSouth.NET

nginxでwordpressのパーマリンクをデフォルト以外に対応する – Qiita

php-fpm+nginxでword pressのマルチサイトを作る – びぼろく!

余談

じつは、この構築記事を書くために頑張っていたのですが、変なところ(PHP-FPMの設定)で躓いていてしまいました。
以前にも書いたとおり、ソースビルドで頑張っていて苦戦していたのです。
そのうちに server-memo.net さんの記事が上がっていて、それを参考にさせていただきました。感謝の言葉しかありません。
そのため、この記事に書いてあることは server-memo.net さんとかぶっている部分が多々あります。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です