WordPressの環境構築

VPSにWordPressをサブドメインで構築する方法

 今日も今日とて仮想サーバを遊ばせているものです。

というわけ今回は、既存サイトを維持したままサブドメインに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管理画面で設定で以下の画像のように追加します。

Xサーバvps

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

Xサーバvps

ipアドレスが返ってくればDNSとして正常に機能していることが確認できます。

Apache仮想ホストを分離

表題を嚙み砕くと『wp.mitsurugi-group.com 専用の 443 VirtualHost を作る』ということになります。

サブドメインを作ったら次は既存サイトと混ざらないようにVirtualHostを分けます。(80番ポート側は既存設定を流用できるため今回は省略)

/***/sites-available/wp.mitsurugi-group.com-le-ssl.conf
コピーしました!
<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 apache2

SSL証明書発行(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先が明記されていれば完了です。

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/www

WordPressの公式サイトからインストールして、

コピーしました!
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の環境構築は完了です。

WordPressの環境構築

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

WordPressの環境構築
データベース名wordpress
ユーザー名wordpress
パスワードさっき決めたやつ
データベースのホスト名localhost
テーブル接頭辞wp_

を入力してください。

WordPressの環境構築

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

WordPressの環境構築

完了です!

どうです?簡単でしたでしょ?

みっつーみっつー

御剣グループ代表になりたい。