Ubuntu で、既存WordPress環境に別のWordPressシステムを追加構築する(Apache2 VirtualHost利用)
Ubuntu 24.04 LTS上で稼働する既存WordPress環境に、Apache2 の VirtualHost を用いて、別のドメインで新しいWordPressシステムを追加構築する手順を説明する。PHP 8.3とMariaDBを用い、データベース作成、WordPressのダウンロードと配置、Apache2の設定、WordPressのインストール、Let's EncryptによるSSL/TLS化までを扱う。
方針:1つの Ubuntu マシン(IPアドレスは1つ)に、異なる2つのホスト名(例: www.example.com と www.hoge-client.com)を割り当てる。そのためのドメイン名取得と DNS サーバ設定は、前もって済ませておく必要がある。 Webサーバ(Apache2)側では、リクエストされたホスト名(ServerName または ServerAlias)に応じて、表示するコンテンツのディレクトリを切り替えるように設定する。 ホスト名によってディレクトリを変えるために Apache2 の VirtualHost 機能を使う。 そして、それぞれのディレクトリに別の WordPress システムをインストールする。
このページでは、すでに WordPress が動いている Ubuntu マシンで、そのWordPressの設定には手を加えずに、新しくWordPressシステムを追加で動かす手順を説明する。追加インストールの設定値は次の通りである。
- MariaDB データベース名: added_database
- MariaDB データベースのコレーション: utf8mb4_general_ci
- MariaDB ユーザ名: added_dbuser
- DocumentRoot: /var/www/html/added
- Apache2 設定ファイル: /etc/apache2/sites-available/added-wordpress.conf
- Apache2 ServerName: hoge-client.com
- Apache2 ServerAlias: www.hoge-client.com
目次:
前準備
DNS サーバ
WordPressをインストールするホスト名を、DNS サーバに登録しておく必要がある。ドメイン名は前もって取得しておく(以下のホスト名は例であり、そのままでは使用できない)。テスト環境では、クライアントマシンの `/etc/hosts` ファイルを編集して名前解決を行うこともできる。
- Apache2 ServerName: hoge-client.com
- Apache2 ServerAlias: www.hoge-client.com
システム、パッケージの更新
端末を開き、次のように操作する(端末を開くには右クリックメニューが便利である)。システム更新は、セキュリティ修正を適用するために定期的に実行する。
# パッケージリストの情報を更新
sudo apt update
sudo apt -yV upgrade
Apache2, MariaDB のインストール
Ubuntu での Apache2, MariaDB のインストール手順は、 別ページで説明している。
PHPのインストールと設定
WordPressはPHPで動作するため、PHP本体と拡張モジュールをインストールする。Ubuntu 24.04 LTS の標準パッケージは PHP 8.3 であり、これは WordPress が推奨する PHP バージョン(8.3 以上)を満たす。WordPress が推奨する拡張機能には、curl、dom、exif、fileinfo、gd、imagick、intl、mbstring、mysqli、openssl、xml、zip などがある。
sudo apt update
sudo apt install -y php libapache2-mod-php php-mysql php-gd php-curl php-xml php-mbstring php-zip php-intl php-imagick
インストール後、ApacheがPHPファイルを処理できるように、PHPモジュールが有効になっていることを確認する。libapache2-mod-php のインストールで自動的に有効化されるが、次のコマンドで確認できる。
sudo a2enmod php8.3
sudo systemctl restart apache2
また、DirectoryIndex の設定で index.php が index.html より先に来ていることを確認する。これは `/etc/apache2/mods-enabled/dir.conf` で設定されている。
# /etc/apache2/mods-enabled/dir.conf の例
DirectoryIndex index.php index.html index.cgi index.pl index.xhtml index.htm
WordPress用データベースの新規作成
- 端末を開く。
- MariaDB にログインする。
MariaDB の root は Unix ソケット認証のため、sudo で起動する(パスワードを求められた場合は Ubuntu のパスワードを入れる)。
sudo mysql -u root*(⚠️ link removed: this file was never actually generated — ask me to produce it again)* - WordPress用のデータベースとユーザーを作成する。
データベース名: added_database
データベースのキャラクタセット: utf8mb4、コレーション: utf8mb4_general_ci(utf8mb4 を使用することで、絵文字を含むすべての文字を格納できる)
ユーザー名: added_dbuser
「[PASSWORD]」のところは適切なパスワードを設定する。権限は、そのデータベースに対してのみ与える。
create database added_database character set utf8mb4 collate utf8mb4_general_ci; create user 'added_dbuser'@'localhost' identified by '[PASSWORD]'; grant all privileges on added_database.* TO 'added_dbuser'@'localhost'; flush privileges; exit;*(⚠️ link removed: this file was never actually generated — ask me to produce it again)*
WordPress のダウンロードと配置、設定
- WordPress の Web ページを開く。
- 「Download WordPress」をクリックする。
*(⚠️ link removed: this file was never actually generated — ask me to produce it again)*
- 最新版をダウンロードする。
*(⚠️ link removed: this file was never actually generated — ask me to produce it again)*
- zip ファイルのダウンロードが始まる。ファイル名とディレクトリ名を確認する。
*(⚠️ link removed: this file was never actually generated — ask me to produce it again)*
- ダウンロードした WordPress の zip ファイルを展開し、ディレクトリに配置する。
以下のコマンドを実行する。「`wordpress-*.zip`」の部分は、ダウンロードしたファイル名に読み替える。所有者は Apache2 の実行ユーザである www-data とし、ディレクトリは 755、ファイルは 644 とする。
unzip wordpress-*.zip sudo mv wordpress /var/www/html/added sudo chown -R www-data:www-data /var/www/html/added sudo find /var/www/html/added -type d -exec chmod 755 {} \; sudo find /var/www/html/added -type f -exec chmod 644 {} \;*(⚠️ link removed: this file was never actually generated — ask me to produce it again)* - Apache2 の VirtualHost 設定ファイル /etc/apache2/sites-available/added-wordpress.conf を新規作成する。
1つのサーバー上で複数のサイトを運用するために VirtualHost を使う。サイトごとに ServerName、ServerAlias、DocumentRoot を指定する。「hoge-client.com」と「www.hoge-client.com」のところは、サイト名に合わせて設定する。`
` セクションで AllowOverride All を設定すると、.htaccess ファイルによるパーマリンク設定などが動作する。 ServerAdmin webmaster@localhost DocumentRoot /var/www/html/added ServerName hoge-client.com ServerAlias www.hoge-client.com /var/www/html/added> Options +FollowSymlinks AllowOverride All Require all granted ErrorLog ${APACHE_LOG_DIR}/added-error.log CustomLog ${APACHE_LOG_DIR}/added-access.log combinedサイトごとにエラーログとアクセスログのファイルを分けておくと、問題が起きたときの切り分けが容易になる。
*(⚠️ link removed: this file was never actually generated — ask me to produce it again)* - 設定ファイルの構文をテストする。
次のコマンドで、設定ファイルの構文エラーの有無を確認する。「Syntax OK」と表示されれば問題ない。
sudo apache2ctl configtest - /etc/apache2/sites-available/added-wordpress.conf を有効化し、Apache の rewrite モジュールを有効化する。
a2enmod コマンドで rewrite モジュールを有効化する。これにより WordPress のパーマリンク機能が動作する。
sudo a2ensite added-wordpress.conf sudo a2enmod rewrite sudo systemctl restart apache2.service*(⚠️ link removed: this file was never actually generated — ask me to produce it again)* - Apache2 の動作確認を行う。
Web ブラウザで VirtualHost 設定で指定した ServerName または ServerAlias のホスト名、例えば http://www.hoge-client.com を開く。WordPress の初期設定画面が表示されれば、Apache2 の設定は正しく機能している。
確認したら Web ブラウザを閉じる。
*(⚠️ link removed: this file was never actually generated — ask me to produce it again)* - wp-config.php の設定を行う。
- サンプルファイルのコピー
WordPress ディレクトリにある `wp-config-sample.php` をコピーし、`wp-config.php` という名前で保存する。
sudo cp /var/www/html/added/wp-config-sample.php /var/www/html/added/wp-config.php*(⚠️ link removed: this file was never actually generated — ask me to produce it again)* - /var/www/html/added/wp-config.php を編集し、データベース接続情報を書き換える。
「[PASSWORD]」のところは、MariaDB ユーザー作成時に設定したパスワードを書く。DB_CHARSET には utf8mb4、DB_COLLATE には utf8mb4_general_ci を指定する。$table_prefix はデータベーステーブルの接頭辞であり、1つのデータベースに複数のWordPressを共存させるときに区別のために使う。
// ** MySQL settings - You can get this info from your web host ** // /** The name of the database for WordPress */ define('DB_NAME', 'added_database'); /** MySQL database username */ define('DB_USER', 'added_dbuser'); /** MySQL database password */ define('DB_PASSWORD', '[PASSWORD]'); /** MySQL hostname */ define('DB_HOST', 'localhost'); /** Database charset to use in creating database tables. */ define('DB_CHARSET', 'utf8mb4'); /** The Database Collate type. Don't change this if in doubt. */ define('DB_COLLATE', 'utf8mb4_general_ci'); /** * WordPress Database Table prefix. * * You can have multiple installations in one database if you give each * a unique prefix. Only numbers, letters, and underscores please! */ $table_prefix = 'wp_';※ WordPress のバージョンによっては `wp-config-sample.php` に DB_CHARSET や DB_COLLATE の定義が含まれていない場合がある。その場合は上記のように追記する。
※ `wp-config.php` には認証用ユニークキー(AUTH_KEY など)の項目がある。https://api.wordpress.org/secret-key/1.1/salt/ で生成された値に置き換える。
*(⚠️ link removed: this file was never actually generated — ask me to produce it again)*
- サンプルファイルのコピー
WordPress のインストール
- Web ブラウザで Apache2 の動作確認で開いた URL(例: http://www.hoge-client.com)を再度開く。
- WordPress の初期設定画面が表示されるので、「日本語」を選び、「続ける」をクリックする。
*(⚠️ link removed: this file was never actually generated — ask me to produce it again)*
- サイトのタイトル、WordPress のユーザー名、パスワード、電子メールアドレスを設定し、「WordPress をインストール」をクリックする。
*(⚠️ link removed: this file was never actually generated — ask me to produce it again)*
- 「成功しました!」と表示されるので確認する。「ログイン」をクリックしてログイン画面に進む。
*(⚠️ link removed: this file was never actually generated — ask me to produce it again)*
- いま設定したユーザー名とパスワードで WordPress の管理画面にログインする。
*(⚠️ link removed: this file was never actually generated — ask me to produce it again)*
- ダッシュボードが表示されることを確認する。これで WordPress のインストールは完了である。
*(⚠️ link removed: this file was never actually generated — ask me to produce it again)*
- ファイルアップロードの上限サイズを変更する場合は、php.ini(Ubuntu 24.04 では /etc/php/8.3/apache2/php.ini)の upload_max_filesize と post_max_size の両方を変更し、Apache2 を再起動する。
sudo systemctl restart apache2
Let's Encrypt に関する設定
- 端末を開く。
- Let's Encrypt を利用するための Certbot をインストールする。Ubuntu 24.04 LTS では certbot と python3-certbot-apache パッケージを使用する。
sudo apt update sudo apt install -y certbot python3-certbot-apache - SSL/TLS 証明書を取得する。
「hoge-client.com」と「www.hoge-client.com」のところは、サイト名に合わせて設定する。Certbot は Apache プラグインを使用して、SSL 用の VirtualHost(ポート443)の設定と、HTTP から HTTPS へのリダイレクト設定を自動で追加する。コマンド実行中に、リダイレクト設定などについて質問されるので回答する。証明書の取得には、指定したホスト名がこのサーバのIPアドレスに解決され、ポート80が外部から到達できる必要がある。
sudo certbot --apache -m admin@hoge-client.com -d hoge-client.com -d www.hoge-client.com - Certbot によって生成または修正された設定ファイルを確認する。
Certbotは、`/etc/apache2/sites-available/` に `-le-ssl.conf` というサフィックスの付いたSSL用のVirtualHost設定ファイル(HTTPS、ポート443用)を生成する。ファイル名はサイト名によって異なる。生成されたファイルの内容を確認する。以下はその例である。
# /etc/apache2/sites-available/added-wordpress-le-ssl.conf の設定例ServerAdmin webmaster@localhost DocumentRoot /var/www/html/added ServerName hoge-client.com ServerAlias www.hoge-client.com /var/www/html/added> AllowOverride All Require all granted ErrorLog ${APACHE_LOG_DIR}/added-error.log CustomLog ${APACHE_LOG_DIR}/added-access.log combined SSLCertificateFile /etc/letsencrypt/live/hoge-client.com/fullchain.pem SSLCertificateKeyFile /etc/letsencrypt/live/hoge-client.com/privkey.pem Include /etc/letsencrypt/options-ssl-apache.confまた、元の `added-wordpress.conf` (HTTP、ポート80用)には、HTTPからHTTPSへのリダイレクト設定が追記されている。
# /etc/apache2/sites-available/added-wordpress.conf にCertbotが追記した内容例ServerAdmin webmaster@localhost DocumentRoot /var/www/html/added ServerName hoge-client.com ServerAlias www.hoge-client.com /var/www/html/added> AllowOverride All Require all granted ErrorLog ${APACHE_LOG_DIR}/added-error.log CustomLog ${APACHE_LOG_DIR}/added-access.log combined RewriteEngine on RewriteCond %{SERVER_NAME} =hoge-client.com [OR] RewriteCond %{SERVER_NAME} =www.hoge-client.com RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]HTTPS化した後は、WordPress 管理画面の「設定」→「一般」にある WordPress アドレスとサイトアドレスを、https:// で始まる URL に変更する。
- 証明書の更新テストを行う。
次のコマンドを実行する。これはテスト実行であり、実際に証明書が更新されるわけではない。
sudo certbot renew --dry-run - 自動更新の設定を確認する。
証明書の自動更新は、certbot パッケージに含まれる systemd タイマーで処理されるため、Cron の設定は不要である。次のコマンドでタイマーの状態を確認できる。
systemctl status certbot.timer