手当たり次第に書くんだ

飽きっぽいのは本能

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

Ubuntu 22.04 で WordPress を動かすには、Apache、PHP、MariaDB を個別に入れるだけでなく、DocumentRoot、PHP 拡張、database/user、wp-config.php、VirtualHost、バックアップ対象を合わせて確認します。

この記事では、Apache / PHP / MariaDB の基本設定が済んでいる前提で、WordPress 本体の配置、データベース接続設定、Apache VirtualHost、初期確認、バックアップの最小確認を扱います。Ubuntu 22.04 の既存環境を保守するための確認記事です。

関連する記事
この記事で確認すること
  • WordPress 構築前の Apache / PHP / MariaDB 前提
  • WordPress 本体の配置
  • wp-config.php の作成
  • Apache VirtualHost の設定
  • バックアップと動作確認
参考
書籍
参考書籍

Advanced Ubuntu Administration and Management Best Practices

Ubuntu Server の運用項目を体系的に確認したい場合の参考書籍です。価格や在庫はリンク先で確認してください。

Amazon で見る

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

WordPress 構築で確認するもの

WordPress は PHP アプリケーションですが、状態はファイルとデータベースの両方にあります。構築時点で、どこに何を置くか、何をバックアップするかを決めます。

  • Apache の VirtualHost と DocumentRoot
  • PHP 本体と必要な拡張モジュール
  • MariaDB の database と user
  • wp-config.php の secret と接続情報
  • wp-content と database のバックアップ

パッケージをインストールする

WordPress でよく使う PHP 拡張を導入します。すでに Apache / PHP / 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
php -m | grep -E 'mysqli|curl|gd|mbstring|xml|zip'

MariaDB に database と user を作成する

WordPress 用の database と user を作成します。パスワードは例なので、実際の値へ置き換えます。

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 -u wordpress -p -h 127.0.0.1 wordpress -e 'SHOW TABLES;'

WordPress 本体を配置する

WordPress 本体を取得し、DocumentRoot へ配置します。ここでは /var/www/wordpress を使います。

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 を作成する

wp-config-sample.php をもとに wp-config.php を作成し、database 接続情報を設定します。

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

認証用 secret key と salt は WordPress.org の API から取得し、wp-config.php の該当行へ反映します。

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

設定後、DB_NAMEDB_USERDB_PASSWORD が意図した値になっているか確認します。

sudo grep -E "DB_NAME|DB_USER|DB_PASSWORD|AUTH_KEY|SECURE_AUTH_KEY" /var/www/wordpress/wp-config.php

Apache VirtualHost を作成する

WordPress 用の VirtualHost を作成します。パーマリンクを使うため、AllowOverride Allrewrite モジュールを有効化します。

sudo tee /etc/apache2/sites-available/wordpress.conf >/dev/null <<'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

ファイル権限を確認する

WordPress 本体は Apache が読める必要があります。wp-config.php は他の通常ユーザーから読めない権限にします。

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
sudo ls -l /var/www/wordpress/wp-config.php

初期セットアップを開く

名前解決を用意し、ブラウザまたは curl で WordPress の初期セットアップ画面へアクセスします。

sudo tee -a /etc/hosts >/dev/null <<'EOF'
192.0.2.10 wordpress.example.local
EOF
curl -I http://wordpress.example.local/

初期セットアップ後は、管理ユーザー、サイト名、メールアドレス、検索エンジンへの公開設定を確認します。公開サイトでは、初期状態のまま長時間放置しないようにします。

TLS と WAF の位置づけ

本番公開する WordPress は HTTPS を前提にします。TLS 設定、HTTP から HTTPS へのリダイレクト、WAF は、基本動作を確認した後に段階的に追加します。

  • まず HTTP で WordPress と database 接続を確認する
  • 次に TLS VirtualHost を作成する
  • HTTP から HTTPS へリダイレクトする
  • WAF は検知モードで通常操作を確認してから遮断する
  • REST API やブロックエディタが 403 にならないか確認する

バックアップの最小確認

WordPress のバックアップでは、database と wp-content の両方を対象にします。テーマ、プラグイン、アップロードファイルは wp-content に入ります。

sudo install -d -m 0750 /var/backups/wordpress
sudo mariadb-dump --single-transaction wordpress | sudo tee /var/backups/wordpress/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/wordpress.sql /var/backups/wordpress/wp-content.tar.gz

動作確認する

HTTP 応答、Apache ログ、PHP エラー、MariaDB 接続を確認します。

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

運用上の注意

  • wp-config.php の権限と secret を確認する
  • database と wp-content を両方バックアップする
  • 公開前に TLS とリダイレクトを有効化する
  • WAF は REST API と管理画面の通常操作を確認してから遮断する
  • プラグイン更新前にバックアップを取得する

WordPress は OS、Apache、PHP、MariaDB、プラグインが重なる構成です。構築直後から、バックアップ、更新、WAF、TLS を別々の作業として扱えるようにしておくと保守しやすくなります。

まとめ

Ubuntu 22.04 で WordPress を構築する場合は、Apache / PHP / MariaDB の前提を確認したうえで、WordPress 本体、wp-config.php、VirtualHost、権限、バックアップを順番に見ます。

公開サイトでは、初期セットアップだけで終わらせず、TLS、WAF、バックアップ、更新手順まで確認してから運用に入ります。

関連する記事
Ubuntu 22.04 WordPress – Apache / PHP / MariaDB で CMS を構築する

コメントを残す

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

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

トップへ戻る