VPSで複数のWordPressサイトを構築する

VPS に Apache や MySQL など必要な環境を整えたので,いよいよ WordPress のインストールです.

私の場合は別のサーバで WordPress を使っていたので,そのデータをインポートします.また,独自ドメインを使って複数のサイトを同一 VPS で運用したいと思うので,その設定もしていきます.

WordPress のインストール

WordPress 本体ファイルの展開

初めて使う人は WordPress.org から必要なファイルを持ってきて,VPS 上で展開するという作業を行います.コマンドは以下の通り.

terminal
# cd /var/www/html
# wget https://ja.wordpress.org/wordpress-X.X.X-ja.tar.gz
# tar xvzf wordpress-X.X.X-ja.tar.gz **rm wordpress-X.X.X-ja.tar.gz

* # は root での操作の意

まず,ドキュメントルートに移動し,ファイルをダウンロードしてきます.それを展開すればもう終わり,簡単ですね.

この時点で,/var/www/html/wordpress というディレクトリができています.このディレクトリの名前は好きに変更して構いません.

データベースの作成

phpMyAdmin を使って新しいデータベースを作ります.名前は何でもいいですが,インストール時に聞かれるので覚えておいてください.

パーミッションの設定

terminal
[/var/www/html/wordpress]# chown -R apache:USER *
[/var/www/html/wordpress]# chmod -R g+w *

WordPress を展開したディレクトリ以下を Apache で操作できるように権限を追加します.

設定内容は前回の 775 に似ていますが,ディレクトリなどに与える権限は実行ファイルに与えるものと異なるため,このような表記になっています.

インストール

http://123.456.789.012/wordpress に接続すると,インストールの案内が出ます.任意のユーザー名,パスワード,先ほど作ったデータベース名などを入れて設定しましょう.

WordPress のインポート

以前から使っているテーマや投稿内容などをそのまま引き継ぎたかったので,最初からインストールするのではなく,サーバから持ってきたデータを SFTP クライアント, phpMyAdmin で VPS に入れる形でインストールしました.

主に移動しなければならないのは,WordPress 本体のファイル群とデータベースの二つです.

データベースの移動

phpMyAdmin を使うと楽に移動できます.

前に使っていたサーバの phpMyAdmin で WordPress のデータベースを選択し,エクスポートします.それを VPS の phpMyAdmin でインポートすれば完了です.

本体ファイルの移動

私は Windows を使っているため WinSCP で.

  • 転送プロトコル: SFTP
  • ホスト名: XXX.XXX.XXX.XXX
  • ポート番号: 22
  • ユーザ名: (一般ユーザ)

FTP は通信内容を読まれるかもしれないので,それを防ぐために SFTP を使います.SSL/TLS を用いた FTPS とかもあるようですが別物です.

ポート番号は SSH と同じです.デフォルト値を変更している場合は別のポート番号になります.

wordpress-setup-1.jpg

本体ファイルを持ってきた後はこんな感じになります.

wp-config.php の編集

これでほぼ完成なのですが,いざ繋いでみるとデータベース接続エラーで読み込めません.以前のデータベースの設定を引き継いでいるため,書き換える必要があります.

we-config.php
/** 決めたとき,もしくはインポートしたときのデータベース名 */
define('DB_NAME', 'wordpressdb');

/** MySQL のユーザー名 */
define('DB_USER', 'root');

/** MySQL のパスワード */
define('DB_PASSWORD', 'PASSWORD');

/** MySQL のホスト名 (ほとんどの場合変更する必要はありません.) */
define('DB_HOST', '');

/** データベーステーブルのキャラクターセット (ほとんどの場合変更する必要はありません.) */
define('DB_CHARSET', 'utf8');

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

これで接続すると WordPress の画面が出るはずです.(たぶん 404)

複数のサイト構成にする

この時点でドキュメントルートは一つなので,複数のサイトを作ることができません.そこで Apache のバーチャルホスト設定の出番です.

設定には独自ドメインが少なくとも一つ必要になります.まだ DNS サーバを移さなくてよいですが,後に必要になることを忘れないでください.

バーチャルホスト設定

設定ファイルを新規作成します.

terminal
# cd /etc/httpd/conf.d
# vim vhost.conf

これは Apache 2.4 での設定です.2.2 の場合は適用できません.Apache のバージョン確認は以下のように行うことができます.

terminal
# httpd -v

ファイルに書く内容は,次の例を参考にしてください.

#NameVirtualHost *:80
<VirtualHost *:80>
    DocumentRoot /var/www/html/blog
    ServerName blog.abc.com
    CustomLog logs/blog-access.log common
    ErrorLog  logs/blog-error.log
    AddDefaultCharset UTF-8
    <Directory "/var/www/html/blog/">
        AllowOverride All
        Require all granted
    </Directory>
</VirtualHost>

<VirtualHost *:80>
    DocumentRoot /var/www/html/hp
    ServerName www.abc.com
    ServerAlias abc.com *.abc.com
    CustomLog logs/hp-access.log common
    ErrorLog  logs/hp-error.log
    AddDefaultCharset UTF-8
    <Directory "/var/www/html/hp/">
        AllowOverride All
        Require all granted
    </Directory>
</VirtualHost>

(一番上の NameVirtualHost *:80 は Apache 2.3.11 以降必要なくなったため,コメントアウト)

独自ドメイン abc.com を利用して,www.abc.com をホームページにしています.ホームページのファイルは /var/www/html/hp に保存しています.ちなみに,abc.com で接続しても www.abc.com に繋がります.

URL の正規化は .htaccess を使う例がよくありますが,これは Directory セクションで AllowOverride ディレクティブに All が指定されているときに有効な手段です.ドキュメントルートに置くため,内部で設定しておく方が個人的には良いと思っています.

また,サブドメイン blog.abc.com も設定しています.blog.abc.com の内容は /var/www/html/blog にあります.

後は再起動するだけです.

terminal
# systemctl restart httpd.service

それぞれに WordPress をインストールすることもできますし,別々の運用もできます.自由の幅が広がりますね!

参考

1 台の Apache Web Server に複数のドメインを設定する | Qiita

DNS レコード設定

さくらの VPS を利用している場合ドメイン 5 つくらいは無料で DNS サーバを使えるので,それで設定できます.

エントリ タイプ データ
@ NS ns1.dns.ne.jp.
NS ns2.dns.ne.jp.
A 123.456.789.012
www A 123.456.789.012
blog A 123.456.789.012

こんな感じで NS レコードと A レコードを設定すれば OK です.

ロリポップではこれができないので,嬉しいです.お名前.com では契約しているドメインでできますが,ネームサーバがお名前.com のものになってしまうので,やはり辛い...

最後に

全 3 回でようやく終わりました.自力でサーバのセットアップはやったことなかったので少し時間はかかりましたが,それでもインターネットの力のおかげもあって 5 時間で終わったので VPS の使いやすさと記事を書いてくれている方たちのありがたみを痛感しています.

セットアップより寧ろ記事を書いている時間のほうが実は長かったりするのですが,これでようやく念願の VPS 運用ができるようになって一安心です.

一つ気になるのは,さくらインターネットのコントロールパネルが前時代的でちょっと使いづらいことくらいですね.