手当たり次第に書くんだ

飽きっぽいのは本能

Ubuntu 22.04 WordPress – Apache / PHP / MariaDB で CMS を構築する

Ubuntu 22.04 で WordPress を構築する場合、重要なのは WordPress のインストールコマンドそのものではなく、Apache、PHP、MariaDB、ファイル権限、TLS、WAF の責務を分けて理解することです。

この記事では、単体サーバー上に WordPress を配置する基本構成を前提に、手動で確認しながら CMS として動作させるまでの流れを整理します。実際の運用では構成管理ツールで状態を管理することが多いですが、ここでは各設定の意味を追いやすいように手動手順として記載します。

参考
書籍
参考書籍

WordPress 仕事の現場でサッと使える!デザイン教科書 [WordPress 6.x対応版] 改訂第3版

WordPress のサイト構築、テーマ、カスタマイズ、運用項目を確認したい場合の参考書籍です。価格や在庫、WordPress の最新仕様との差分はリンク先や公式ドキュメントで確認してください。

Amazon で見る

このリンクは Amazon アソシエイトリンクです。

前提となる関連記事

WordPress は単独のアプリケーションではなく、Web サーバー、PHP 実行環境、データベースの上で動きます。この記事だけで手順は追えますが、各レイヤーを分けて確認したい場合は、先に次の記事を確認すると全体像がつかみやすくなります。

WordPress 構築で確認するもの

項目役割
ApacheHTTP / HTTPS の入口。VirtualHost、DocumentRoot、ログ、rewrite を管理する。
PHPWordPress 本体を実行するランタイム。Apache モジュールまたは PHP-FPM として動作する。
MariaDB投稿、設定、ユーザー、プラグイン設定などを保持するデータベース。
WordPress ファイルWordPress 本体、テーマ、プラグイン、アップロードファイルを配置する。
wp-config.phpデータベース接続情報、認証キー、デバッグ設定などを定義する。
TLS / WAF公開時の暗号化と防御層。管理画面や REST API との相性も確認する。

WordPress はファイルとデータベースの両方で構成されます。ファイルだけ、またはデータベースだけをバックアップしても復旧できないため、構築時点から両方を管理対象にする必要があります。

パッケージのインストール

Apache、PHP、WordPress が利用する PHP 拡張、MariaDB クライアント、ダウンロード用の curl をインストールします。MariaDB サーバーを同一ホストに置く場合は、MariaDB 構築記事の内容に沿って先にデータベースサーバーを準備します。

sudo apt update
sudo DEBIAN_FRONTEND=noninteractive apt-get install -y apache2 php libapache2-mod-php php-mysql php-curl php-gd php-mbstring php-xml php-zip mariadb-client unzip curl

MariaDB のデータベースとユーザー作成

WordPress 用のデータベースと接続ユーザーを作成します。ここではローカルホストから接続する単純な構成にしています。パスワードは実環境に合わせて変更します。

sudo mariadb <<'EOF'
CREATE DATABASE wordpress CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'wordpress'@'localhost' IDENTIFIED BY 'change-this-password';
GRANT ALL PRIVILEGES ON wordpress.* TO 'wordpress'@'localhost';
FLUSH PRIVILEGES;
EOF

リモートの MariaDB を使う場合は、接続元ホスト、ファイアウォール、MariaDB 側の bind-address、ユーザーの host 部分を合わせて確認します。

WordPress 本体の配置

WordPress 本体を取得し、Apache から配信するディレクトリに配置します。ここでは /var/www/wordpress を DocumentRoot として使います。

cd /tmp
curl -LO https://wordpress.org/latest.tar.gz
tar xf latest.tar.gz
sudo install -d -m 0755 /var/www/wordpress
sudo cp -a wordpress/. /var/www/wordpress/
sudo chown -R www-data:www-data /var/www/wordpress

wp-config.php の作成

サンプル設定をコピーし、データベース接続情報を設定します。sed で置換する場合は、設定後に wp-config.php の内容を必ず確認します。

cd /var/www/wordpress
sudo -u www-data cp wp-config-sample.php wp-config.php
sudo -u www-data sed -i "s/database_name_here/wordpress/" wp-config.php
sudo -u www-data sed -i "s/username_here/wordpress/" wp-config.php
sudo -u www-data sed -i "s/password_here/change-this-password/" wp-config.php

認証キーと salt は WordPress 公式の生成 API で取得できます。取得した値は wp-config.php の該当箇所へ反映します。

curl -s https://api.wordpress.org/secret-key/1.1/salt/

この値は公開情報ではありません。記事や設定例に実際の値を載せず、サーバー上の設定ファイルとして管理します。

Apache VirtualHost の作成

WordPress 用の VirtualHost を作成します。パーマリンクを使うため、Directory では AllowOverride All を許可し、rewrite モジュールを有効化します。

sudo tee /etc/apache2/sites-available/wordpress.conf <<'EOF'
<VirtualHost *:80>
    ServerName wordpress.example.local
    DocumentRoot /var/www/wordpress

    <Directory /var/www/wordpress>
        Options -Indexes +FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/wordpress-error.log
    CustomLog ${APACHE_LOG_DIR}/wordpress-access.log combined
</VirtualHost>
EOF

sudo a2enmod rewrite
sudo a2ensite wordpress.conf
sudo apache2ctl configtest
sudo systemctl reload apache2

複数サイトを同じ Apache 上で扱う場合は、ServerName、DocumentRoot、ログファイル名をサイトごとに分けます。

ファイル権限の整理

WordPress は管理画面からテーマやプラグインを更新できるため、権限を広げすぎると便利さと引き換えにリスクが増えます。最低限、所有者と通常権限を明示しておきます。

sudo chown -R www-data:www-data /var/www/wordpress
sudo find /var/www/wordpress -type d -exec chmod 0755 {} \;
sudo find /var/www/wordpress -type f -exec chmod 0644 {} \;
sudo chmod 0640 /var/www/wordpress/wp-config.php

本番運用でより厳密にする場合は、WordPress 本体、wp-content、uploads、wp-config.php の権限を分けて考えます。特に wp-config.php はデータベース接続情報を含むため、通常の静的ファイルと同じ扱いにしない方が安全です。

初期セットアップ

名前解決を設定したうえで、ブラウザから http://wordpress.example.local/ にアクセスします。初期セットアップ画面でサイト名、管理者ユーザー、メールアドレスを設定します。

  • 管理者ユーザー名を admin のままにしない。
  • 管理者パスワードは他のサービスと使い回さない。
  • 初期セットアップ後に一般設定、パーマリンク、タイムゾーンを確認する。
  • 不要なテーマとプラグインを削除する。
  • 公開前に TLS、バックアップ、更新方針を決める。

TLS と WAF の位置づけ

インターネットへ公開する WordPress は、HTTP のまま運用しない方がよいです。TLS は Apache 側で終端し、WordPress のサイト URL も HTTPS に合わせます。

WAF を入れる場合、WordPress の管理画面、ブロックエディタ、REST API、プラグイン更新で誤検知が起きることがあります。WAF は入れれば終わりではなく、ログを見ながらルール単位で調整する運用が必要です。

バックアップの最小確認

WordPress のバックアップでは、データベースと wp-content の両方を取得します。テーマ、プラグイン、アップロード画像は wp-content 側に含まれます。

sudo install -d -m 0750 /var/backups
sudo mariadb-dump --single-transaction wordpress | sudo tee /var/backups/wordpress.sql >/dev/null
sudo tar czf /var/backups/wordpress-wp-content.tar.gz -C /var/www/wordpress wp-content
sudo ls -lh /var/backups/wordpress.sql /var/backups/wordpress-wp-content.tar.gz

バックアップは取得できるだけでは不十分です。別環境で復元できるか、定期的に確認しておく必要があります。

動作確認

最後に HTTP 応答、Apache ログ、サービス状態を確認します。初期画面が表示されない場合は、まず Apache の VirtualHost、PHP 実行、MariaDB 接続、wp-config.php を切り分けます。

curl -I http://wordpress.example.local/
sudo tail -n 50 /var/log/apache2/wordpress-error.log
sudo journalctl -u apache2 -n 50 --no-pager

まとめ

Ubuntu 22.04 で WordPress を構築する場合、WordPress 本体の配置だけを見ると簡単に見えます。しかし実際の運用では、Apache、PHP、MariaDB、ファイル権限、TLS、WAF、バックアップがまとまって 1 つの CMS 基盤になります。

特に重要なのは、WordPress をアプリケーション単体として扱わず、Web サーバー、実行環境、データベース、公開経路の上に成り立つシステムとして見ることです。この見方をしておくと、障害時にもどの層で問題が起きているのかを切り分けやすくなります。

Ubuntu 22.04 WordPress – Apache / PHP / MariaDB で CMS を構築する

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

トップへ戻る