今日も今日とて仮想サーバを遊ばせているものです。
というわけ今回は、既存サイトを維持したままサブドメインにWordPress環境を安全に構築する手順を、実際のVPS環境を例に解説していきます。
Apache VirtualHost分離、Let's EncryptによるSSL統合、MySQL設定まで含め、再現可能な形でまとめました!
要件定義
【やりたいこと】
- VPS上にWordPressをインストールして公開したい
- ドメイン(mitsurugi-group.com)は既にWebサイトで使っているので、サブドメイン(wp.mitsurugi-group.com)で構築
- 完成後はブラウザ(/wp-admin)から視覚的にサイト編集したい
- 他の人もVPSにログインできて、WordPress管理画面から編集できるようにしたい
- IP直アクセスではなく、独自ドメインで公開したい
【現環境】
- OS:Linux (Ubuntu)
- SSL:let's encrypt(既存のwebサイトはこれを使ってる)
- PHP Version 8.3.6
- MySQL:ver.xでもろもろインストール済み
- XサーバVPS
- Apache 2.4
ドメインをVPSに向ける
まずはサブドメイン(wp.mitsurugi-group.com)を作ります。
XサーバのDNS管理画面で設定で以下の画像のように追加します。

確認は、コマンドプロンプトで以下のコードをうちます。

ipアドレスが返ってくればDNSとして正常に機能していることが確認できます。
Apache仮想ホストを分離
表題を嚙み砕くと『wp.mitsurugi-group.com 専用の 443 VirtualHost を作る』ということになります。
サブドメインを作ったら次は既存サイトと混ざらないようにVirtualHostを分けます。(80番ポート側は既存設定を流用できるため今回は省略)
<VirtualHost *:443>
ServerName wp.mitsurugi-group.com
SSLEngine on
DocumentRoot /var/www/wp
<Directory /var/www/wp>
AllowOverride All
Require all granted
</Directory>
SSLCertificateFile /etc/letsencrypt/live/mitsurugi-group.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/mitsurugi-group.com/privkey.pem
Include /etc/letsencrypt/options-ssl-apache.conf
</VirtualHost>teratermに入って、sites-enabled にリンクを作り、設定の反映を行います。
a2ensite wp.mitsurugi-group.com-le-ssl.conf
systemctl reload apache2SSL証明書発行(Let's Encrypt)
SSLの証明書を発行していきます。これは同じサーバ上で運用しているLet's Encryptをそのまま使っていきます。
teratermに入って、以下のコードで設定の反映を行います。(www.と)
certbot --apache \
-d mitsurugi-group.com \
-d www.mitsurugi-group.com \
-d wp.mitsurugi-group.com質問されたら「Expand」を選びます。
確認コードとして以下のコードで証明書に登録されているドメインを調べます。
openssl x509 -in /etc/letsencrypt/live/mitsurugi-group.com/fullchain.pem -noout -text | grep DNS画像のようにDNS先が明記されていれば完了です。

MySQLにWordPress用DB作成
DBの作成ですが、種類はMariaDBでもいいですが今回はMySQLで作成していきます。
MySQLにログインしてDBを作成します。
CREATE DATABASE wordpress
DEFAULT CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci;
CREATE USER 'wordpress'@'localhost' IDENTIFIED BY '強力なパスワード';
GRANT ALL PRIVILEGES ON wordpress.* TO 'wordpress'@'localhost';
FLUSH PRIVILEGES;少し脱線しますが、なぜApacheだけでは不足かというと、WordPressは静的なHTMLを配信するサイトではなく、動的にページを生成するWebアプリケーションだからです。
このようなシステムでは、HTTP通信を処理するWebサーバーだけでなく、アプリケーションを実行する環境(PHPなど)と、データを永続的に保存するデータベース(MySQLなど)が必要になります。
今回はWordPressというアプリケーションの設計に合わせて、それが前提としている実行環境(PHP)とデータベース(MySQL/MariaDB)、そしてWebサーバーを整備した、ということになります。
WordPressインストール
まずはteratermに入ってディレクトリを指定します。
cd /var/wwwWordPressの公式サイトからインストールして、
wget https://wordpress.org/latest.tar.gzダウンロードした圧縮ファイルを展開(/var/www/wordpressファイルができる)
tar xzf latest.tar.gzディレクトリ名をwpにする(/var/www/wpファイルができる)
mv wordpress wp所有者をApacheにする(これをしないと、もしWordPressのフォルダの所有者が「root」のままだとWordPressのテーマや画像変更等ができない)
chown -R www-data:www-data /var/www/wp念のためパーミッション(アクセス権)を設定をして完了
find /var/www/wp -type d -exec chmod 755 {} \;
find /var/www/wp -type f -exec chmod 644 {} \;完成
『https://wp.mitsurugi-group.com』にアクセルすると、以下のような画面がでればWordPressの環境構築は完了です。

続いては初期設定です。ここで、先ほど作成したDBと連携させていきます。

| データベース名 | wordpress |
|---|---|
| ユーザー名 | wordpress |
| パスワード | さっき決めたやつ |
| データベースのホスト名 | localhost |
| テーブル接頭辞 | wp_ |
を入力してください。

インストールすると、、、

完了です!
どうです?簡単でしたでしょ?
みっつー