1つの MySQL を使って複数の WordPress サイトを構築してみた

先日、スターサーバーさんでサーバーを借り、WordPress を導入しました。複数ある趣味のウェブサイト用で、当サイトもそのうちの1つです。

WordPress でサイトを構築する場合は、1つの WordPress につき1つの MySQL を使うのが一般的です。しかし、スターサーバーさんのライトプランでは、使える MySQL が1個までとなっています。

趣味用ということもあってコストを抑えたかったので、1つの MySQL でサイトを2つ構築してみました。今回はその方法を書き残しておきたいと思います。

1. サーバーを契約し、ドメインを取得する

1-1. サーバーの契約

早速始めていきましょう。サーバーの契約自体は難しくないので簡単にご紹介します。

スターサーバーさんで契約する場合、最初に運営会社ネットオウルのアカウントを作成することになります。作成したアカウントにログインすると、メンバー管理ツール画面が開きます。スターサーバー管理 > 新規お申し込み から、サーバーを契約しましょう。

1-2. ドメインの取得

契約したら、スターサーバー管理 > サーバーアカウント一覧 から、サーバー管理ツールにログインします。

まずは ドメイン > ドメイン設定 で、ドメインを設定しましょう。契約と同時に「~.stars.ne.jp」という初期ドメインを貰えますが、これは公開するには不適当です。無料で提供されているネットオウルのドメインを取得します。

ドメインを取得した後の画面で、FTPアカウントのパスワードが表示されます。これは後から確認できないので、メモしておいてください。もし忘れても再設定をすることは可能です。

複数の WordPress サイトを構築する場合、その分だけドメインが必要です。ライトプランでは、3つまでネットオウルのドメインを取得できます。

ドメインを取得してから利用可能になるまで少し時間がかかるため、この作業は最初にやった方が良いです。説明書きには、数時間から2日程度かかると書いてあります。私は40分ほどかかりました。

1-3. SSL設定

ドメインが利用可能になったら、ドメイン > SSL設定 からSSLを設定します。サイトのアドレスで http ではなく https を使えるようにするためです。

設定は簡単で、「無料独自SSL追加」タブから申し込むだけでSSLが使えるようになります。このとき、CSR情報を入力する必要はありません。まだドメインが利用可能になっていない場合はこの作業が失敗しますので、しばらく待ちましょう。

これで「https://取得したドメイン.jp」というアドレスが使えます。ただし、https でもアクセスできるようになっただけで、常に https になる常時SSL化はまだできていません。それについては後述します。


2. MySQL を追加する

2-1. MySQL 追加

WordPress で使うデータベースを設定します。ここから WordPress の設置までの作業は、インストールマニュアル WordPress 日本語版 にも詳しく載っていますので、ぜひご覧になってください。

また、複数の WordPress サイトを構築する場合は、作業の一部を自動で行ってくれる「簡単インストール」機能を使うことはできません。それについては、以下のウェブページが参考になりました。感謝申し上げます。

スターサーバーの「ライトプラン」で複数のWordPressサイトを運用する方法

それではやっていきましょう。ホームページ > データベース設定 から、MySQL追加 タブを開きます。

任意のデータベース名を入力します。文字コードは UTF-8 のままでOKです。

2-2. MySQL ユーザーの追加

データベースを作成したら、そのユーザーを設定します。これはネットオウルのアカウントや WordPress のログイン情報とはまた別のものです。MySQL のユーザーIDとパスワードは、サイトの構築が済めば頻繁に入力することはありません。セキュリティ重視で設定しましょう。

MySQL一覧に戻り、権限追加可能ユーザの欄で「権限追加」ボタンを押せば完了です。

この MySQL を、複数の WordPress サイトで共用することになります。この先 WordPress のインストールを行っていきますが、取得したドメインごとにその作業を行うことで、複数のサイトを構築することができます。


3. FTPソフトで WordPress をアップロードする

3-1. WordPress のダウンロード

以下のウェブサイトを開き、「WordPress を入手」ボタンを押してダウンロードします。ダウンロードしたファイルは、7z 等を使って解凍しておいてください。

WordPress.org

3-2. FTPソフトのインストール

FTPソフトは、契約したサーバーにアクセスするためのソフトウェアです。それを使って WordPress のファイルをアップロードします。

FTPソフトはいくつかありますが、当サイトでは WinSCP をお勧めします。

WinSCP

3-3. WinSCP の設定

WinSCP を起動したら、まず言語設定を変更します。オプション > 環境設定 から言語を「English – 英語」にしてください。この後FTPS接続を行うために必要で、日本語のままだと WinSCP がクラッシュします。

最初はクラッシュの原因がわからず困っていましたが、下記のウェブページに情報があって大変助かりました。

WinSCPプロジェクトの日本語情報サイト

WinSCP を再起動して、接続するための設定を行います。

File protocolFTP
EncryptionTLS/SSL Explicit encryption
Host nameサーバー情報 > ホスト名
User nameFTPアカウント設定 > FTPアカウント一覧 > アカウント名

Encryption を設定することで、セキュリティに配慮したFTPSで接続することができます。

「Login」ボタンを押すとパスワードを求められますので、ドメインを取得した際に表示されたFTPアカウントパスワードを入力します。パスワードを忘れてしまった場合は、FTPアカウント一覧の「編集」ボタンを押すと、再設定を行うことができます。

複数のサイトを構築する場合、ホスト名は同じで、ユーザ名とパスワードを切り変えてログインすることになります。

3-4. WordPress ファイルのアップロード

WinSCP では、左側にローカルファイル、右側にサーバーファイルが表示されます。

サーバー側には “index.html” と “default_page. png” との2つのファイルがあります。これらは、まだウェブサイトを構築していないときに表示するページ用のファイルです。存在していると WordPress のホームページを表示できないので、右クリックから削除してください。

ローカル側で、解凍しておいた WordPress のフォルダを表示します。このフォルダには WordPress のファイルがいくつも入っています。フォルダ名が WordPress のインストールフォルダ名になりますので、必要であれば任意の名前に変更しておきます。

これをフォルダごと、サーバー側へドラッグ&ドロップします。

この図は、WinSCP の言語設定が日本語の時のものです。

サーバー側にフォルダがコピーされるのを待ちます。ファイルの容量は大きくないものの、この作業には時間がかかります。私は20分くらいかかりました。


4. WordPress の初期設定を行う

4-1. 初期設定画面へのアクセス

WordPress の初期設定を行います。

お使いのウェブブラウザで、「https://取得ドメイン.jp/WordPressインストールフォルダ」へアクセスしてください。初期設定画面に進みますので、以下のように設定します。

データベース名データベース設定 > MySQL一覧 > データベース名
ユーザー名データベース設定 > MySQL一覧 > MySQLユーザ名
パスワードMySQLユーザのパスワード
データベースのホスト名データベース設定 > MySQL情報 > MySQLx.xホスト名
テーブル接頭辞構築するサイト別に付ける任意の名前

テーブル接頭辞は、構築するサイトごとに異なる名前を設定してください。この接頭辞を分けることで、1つの MySQL 内に別々の WordPress 用データベースを構築することができます。

この後はウィザードにしたがって進めてください。WordPress のユーザー名とパスワードを決めると、WordPress のログイン画面が表示されます。

4-2. サイトアドレスの修正

WordPress にログインできたら、サイトアドレスを修正します。

設定 > 一般設定 を開き、以下のように設定します。サイトアドレスが、公開するホームページアドレスとなります。

WordPress アドレス (URL)http を https に変更する。
サイトアドレス (URL)http を https に変更する。
最後の部分を消して「~.jp/」で終わるようにする。

1-3 でドメインにSSL設定をしておきましたので、アドレスに https を使うことができます。これをさらに常時SSL化しますが、.htaccess の設定と深く関わるので、次項で説明します。


5. サーバーファイルの設定と常時SSL化を行う

5-1. 設定ファイルのダウンロード

WinSCP を使って、設定ファイルをダウンロードします。

まず WinSCP の オプション > 環境設定 を開き、パネル 項目で「隠しファイルを表示する」にチェックを入れます。これで .htaccess という隠しファイルが見えるようになります。

この図は、WinSCP の言語設定が日本語の時のものです。

サーバー側で WordPress のインストールフォルダを開き、”.htaccess” と “index.php” とをローカル側へダウンロードします。

5-2. ファイルの編集

まずは、ダウンロードしたファイルのコピーを安全な場所にバックアップしてください。

次に、”.htaccess” のファイル名を “htaccess” に変更してからテキストエディタで開きます。「.」が付いたままだと編集できない可能性があります。

常時SSL化を行うため、「# BEGIN WordPress」という行を探し、その前に以下のように追記してください。

RewriteEngine On
RewriteCond %{HTTPS} !on
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

# BEGIN WordPress
~~~~~
# END WordPress

追記内容は、マニュアルの Webサイトの常時SSL化 に書かれています。また、追記する位置については以下のウェブページを参考にさせていただきました。感謝申し上げます。

SSL化で.htaccessにhttpからhttpsへリダイレクト設定してもうまくいかない、500エラー時に確認すること

さらに、”index.php” を編集していきます。以下の部分を探し、「/wp-blog-header.php」の前に WordPress のインストールフォルダ名を入れてください。

/** Loads the WordPress Environment and Template */
require __DIR__ . '/WordPressインストールフォルダ名/wp-blog-header.php';

これは、WordPress のインストールフォルダと、公開するサイトアドレスとが異なるために必要になる設定です。

5-3. 設定ファイルのアップロード

編集した2つのファイルをアップロードします。

アップロード先は、ダウンロードした場所とは違うので注意してください。

WinSCP で、サーバー側のルートディレクトリを表示します。先ほどは WordPress のインストールフォルダからダウンロードしましたので、一番上の矢印が付いたフォルダをダブルクリックするとルートディレクトリに移ります。ここまで上記の通りに行っていれば、ルートディレクトリには WordPress のインストールフォルダのみがあるはずです。

サーバー側でルートディレクトリを表示したら、編集した2つのファイルをアップロードします。そして、アップロードした “htaccess” を右クリックして名前の変更を行い、「.」を入れて “.htaccess” に戻せば完了です。

以上で WordPress のインストールはできました。複数サイトを構築する場合は、ドメインごとに WordPress のインストール作業を行います。

構築後の WordPress に再度ログインする際は、ブラウザで「https://取得ドメイン.jp/WordPressインストールフォルダ/wp-login.php」にアクセスしてください。


6. セキュリティ対策を行う

6-1. WordPress のユーザー設定

私はセキュリティ対策の専門家ではありません。ここでは、最低限やっておいた方が良いと考えているものだけご紹介していきます。

まずは、WordPress のログインIDが公開状態になっているのを修正します。

WordPress の管理画面で ユーザー > プロフィール を開き、「ニックネーム」と「ブログ上の表示名」という項目を探します。それらを、ログインIDとは別のものに変更してください。

それから、プラグイン の項目へ行って「Edit Author Slug」を検索し、インストールします。すると、プロフィール画面に「投稿者スラッグ」という項目が出るようになるので、これもログインIDとは別のものに変更してください。記事内には表示されないため、無意味な文字列でも構いません。

6-2. パーミッションの設定

WordPress に関連するファイルへのアクセスを制限する設定です。この作業は、WinSCP でサーバーファイルにアクセスして行います。

サーバー側のファイルやフォルダを右クリックしてプロパティを開くと、その中にパーミッションの項目があります。数値を書き換えることで、アクセス制限を行うことができます。

この図は、WinSCP の言語設定が日本語の時のものです。

特に以下の2つのファイルは重要なので、先に設定しましょう。パーミッションの数値には諸説ありますが、次の数値が推奨されていることが多いです。

ファイル名パーミッション
.htaccess604
wp-config.php600

.htaccess は複数の個所にありますので、すべてのフォルダを開いてチェックしてください。

他のファイルやフォルダについては、マニュアルの WEBサーバーの仕様 や、WordPress.org の ファイルパーミッションの変更 に推奨値が書かれています。

6-3. HSTSの設定

常時SSL化に関連し、HSTS (HTTP Strict-Transport-Security) というセキュリティ設定があります。これは、ウェブサイトに http でアクセスされた際、次回からあらかじめ https でアクセスするようブラウザに対して通知するものです。その効果など、詳しくは以下のウェブページが参考になります。

Strict-Transport-Security (MDN web docs)

この設定を行うには、”.htaccess” の編集が必要です。5-2 で編集した部分の上に、以下の記述を追加します。

Header set Strict-Transport-Security "max-age=31536000"

すると、最終アクセス後 31536000秒 (= 1年) の間、そのブラウザからは https でアクセスされるようになります。この情報は各ブラウザ側に保存されます。

さらに、HSTSには「プリロード」というサービスもありますので、独自ドメインを契約している方は検討してみてください。ネットオウルのドメインを取得した場合には、それらすべてがサブドメインに当たるため、プリロードへ登録することができません。

6-4. BASIC認証

ログイン画面を開く前に、認証ダイアログを表示する設定です。セキュリティ効果としては微妙ですが、導入が簡単なのでやっておきましょう。

スターサーバーさんでは、サーバー管理ツールの「パスワード制限」から設定できるようになっています。WordPress のインストールフォルダ内に「wp-admin」というフォルダがありますので、「有効にする」ボタンを押して、IDとパスワードを設定します。

このBASIC認証の設定を自前で行うのは、そこそこ面倒な作業です。スターサーバーさんでは標準機能で提供されているので、ありがたく利用させてもらいましょう。

6-5. FTP接続の無効化

サイトの構築が終わり、あとは記事を書いていくだけとなったら、FTP接続を無効化しておきます。接続を無効化しても、WordPress 管理画面からの操作には何ら影響はありません。

スターサーバーさんでは、サーバー管理ツールの「FTPアカウント設定」から行うことができます。アカウントの「編集」ボタンを押し、利用設定を「無効」にするだけです。パスワードは、空欄のままにすれば変更されません。

.htaccess の編集等が必要になったときには、ここから再び有効化すればアクセスできるようになります。

その際、アカウント一覧 から WebFTP にログインしてファイルマネージャーを開けば、FTPソフトのようにファイルを操作することができます。ファイルマネージャーは5MBまでのファイルしかアップロードできませんが、一度構築が済んでいれば問題にはならないと思います。編集が終わったら、また無効化しておきましょう。

コメント