AWS2-2 WordPressインストール(手動):実習

前提は EC2(Amazon Linux 2)/Apache/PHP8.x/MariaDB(MySQL互換) が稼働済み、DocumentRoot は /var/www/html

🧩 WordPressインストール(手動)

― MySQLデータベース作成/wp-config.php 設定/初期ログイン ―

🎯 学習目標

  • WordPress 用の DB・ユーザーを最小権限で作成 できる
  • wp-config.php安全に編集 できる(ソルト、接頭辞、運用オプション)
  • ブラウザから 初期セットアップを完了 し、ダッシュボードにログインできる

0. 事前確認(1分)

# Apache 稼働
sudo systemctl status httpd
# PHP 稼働・拡張
php -v
php -m | egrep 'mbstring|mysqlnd|json|curl|zip|xml|openssl|gd|imagick'
# MariaDB 稼働
sudo systemctl status mariadb

不足拡張があれば(例):sudo yum install -y php-gd php-xml php-zip php-intl ImageMagick php-pecl-imagick


1. WordPress 本体の配置(未配置なら)

cd /var/www/html
sudo curl -LO https://wordpress.org/latest.tar.gz
sudo tar xzf latest.tar.gz
sudo rsync -a wordpress/ ./
sudo rm -rf wordpress latest.tar.gz
# 所有権・権限(開発: ec2-user、実行: apache グループ想定)
sudo chown -R ec2-user:apache /var/www/html
find /var/www/html -type d -exec sudo chmod 755 {} \;
find /var/www/html -type f -exec sudo chmod 644 {} \;
# アップロード先準備
mkdir -p /var/www/html/wp-content/uploads
sudo chown -R ec2-user:apache /var/www/html/wp-content/uploads
sudo chmod -R 775 /var/www/html/wp-content/uploads

2. MySQL(MariaDB)データベース作成(最小権限)

mysql -u root -p

SQL(そのまま貼り付け可。必要なら名前を変更):

-- ① データベース(UTF8MB4 推奨)
CREATE DATABASE wpdb DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

-- ② 接続ユーザー(ローカルのみ許可)
CREATE USER 'wpuser'@'localhost' IDENTIFIED BY 'StrongPassw0rd!';

-- ③ 必要最小権限を付与(wpdb のみ)
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, ALTER, INDEX
ON wpdb.* TO 'wpuser'@'localhost';

FLUSH PRIVILEGES;
EXIT;

接続テスト(任意):

mysql -u wpuser -p -e "SHOW GRANTS FOR 'wpuser'@'localhost';"
mysql -u wpuser -p -e "SHOW DATABASES;" wpdb

RDS を使う場合
CREATE USER 'wpuser'@'%' IDENTIFIED BY '...';(ホストは %)+セキュリティグループで EC2→RDS を許可。
DB_HOST は RDS のエンドポイント(例:mydb.xxxxxx.ap-northeast-1.rds.amazonaws.com)。


3. wp-config.php の作成・編集

3.1 サンプルから生成

cd /var/www/html
cp wp-config-sample.php wp-config.php
nano wp-config.php

3.2 必須:DB 定数を編集

define( 'DB_NAME',     'wpdb' );
define( 'DB_USER',     'wpuser' );
define( 'DB_PASSWORD', 'StrongPassw0rd!' );
define( 'DB_HOST',     'localhost' );     // RDSならエンドポイント名
define( 'DB_CHARSET',  'utf8mb4' );
define( 'DB_COLLATE',  '' );              // 通常は空でOK

3.3 必須:認証用ユニークキーとソルト(8行)

ターミナルで生成 → 丸ごと置換:

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

3.4 推奨:テーブル接頭辞を変更(表層防御)

$table_prefix = 'wpx4_';  // 任意(英数字+_)

3.5 運用オプション(推奨例)

define( 'WP_ENVIRONMENT_TYPE', 'production' );
define( 'DISALLOW_FILE_EDIT', true );  // 管理画面からの直接編集を禁止
define( 'WP_DEBUG', false );
define( 'WP_DEBUG_LOG', true );
define( 'WP_DEBUG_DISPLAY', false );
define( 'WP_MEMORY_LIMIT', '128M' );
define( 'WP_MAX_MEMORY_LIMIT', '256M' );

/* 逆プロキシ/ALB 経由HTTPSの検出(必要時のみ)
if ( isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && 'https' === $_SERVER['HTTP_X_FORWARDED_PROTO'] ) {
  $_SERVER['HTTPS'] = 'on';
}
*/

保存後、Apache を再読み込み(必要時):

sudo systemctl reload httpd

4. インストールウィザード(初期セットアップ)

ブラウザでアクセス:

http://<EC2のパブリックIP>/wp-admin/install.php

画面の指示に従い入力:

  • サイトのタイトル:例「AWS LAMP WP」
  • ユーザー名(管理者):admin は避ける(例:siteadmin
  • パスワード:強力なものを採用
  • メールアドレス:受信可能なもの
  • 検索エンジンの表示:学習環境ならオフでも可

インストール実行 → ログイン → ダッシュボード表示 で成功。


5. 初期ログイン後の基本設定(5分)

  1. 一般:サイトアドレス(将来 HTTPS 化時は https:// に変更)
  2. パーマリンク:「投稿名」推奨(.htaccess 自動生成要・Apache の AllowOverride All 必須)
    • .htaccess が作成されないとき: sudo nano /var/www/html/.htaccess 内容: # BEGIN WordPress <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] </IfModule> # END WordPress 権限: sudo chown ec2-user:apache /var/www/html/.htaccess sudo chmod 664 /var/www/html/.htaccess
  3. ユーザー:管理者とは別に「編集者」ロールを作成(運用分離)
  4. プラグイン:後で導入(セキュリティ・バックアップ・キャッシュ等)

6. 代表的なトラブルと対処

症状主因対処
データベース接続確立エラーDB名/ユーザー/パスワード/ホストが不一致、MariaDB停止wp-config.php 再確認、systemctl status mariadbmysql -u wpuser -p テスト
403 Forbidden所有権/権限不正、SELinux、.htaccess/var/www/html の所有権・755/644、.htaccess 内容、Amazon Linux は SELinux 既定無効
パーマリンクが効かないmod_rewrite/.htaccess`sudo httpd -M
画像アップロード失敗wp-content/uploads 書込不可所有権 ec2-user:apachechmod 775
管理画面で更新できない権限・FS_METHOD原因が権限なら正す。どうしても必要な時のみ define('FS_METHOD','direct');

7. ベストプラクティス(導入直後〜運用)

  • 管理者ID は “admin” を避け、MFA を導入(セキュリティプラグインでも可)
  • DISALLOW_FILE_EDIT を有効化(本番)
  • バックアップ:DBダンプ+wp-content を S3 に保存/AMI・スナップショット
  • HTTPS:Let’s Encrypt(certbot)で早期に有効化
  • キャッシュ:小規模でも Object Cache/ページキャッシュで速度改善

8. 片付け(検証用ファイルの削除)

以前に残っていれば 必ず削除

sudo rm -f /var/www/html/info.php /var/www/html/dbtest.php

9. チェックリスト

  • wpdbwpuser@localhost を作成、最小権限付与
  • wp-config.php に DB 定数・ソルト・接頭辞・運用オプションを設定
  • 所有権と権限(dirs 755 / files 644、uploads は書込可)
  • インストールウィザード完了、ダッシュボードにログイン
  • パーマリンク設定・.htaccess 動作確認
  • セキュリティ初期設定(MFA/編集禁止/強固PW)

付録A:AllowOverride(.htaccess を使う場合)

/etc/httpd/conf/httpd.conf の該当 <Directory "/var/www/html"> を確認:

AllowOverride All

変更後は:

sudo systemctl reload httpd

付録B:WP-CLI(任意・時短)

cd /usr/local/bin
sudo curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar
sudo php wp-cli.phar --info
sudo chmod +x wp-cli.phar
sudo mv wp-cli.phar /usr/local/bin/wp

# 例:インストール一括(/var/www/html に配置済み前提)
cd /var/www/html
wp core config --dbname=wpdb --dbuser=wpuser --dbpass=StrongPassw0rd! --dbhost=localhost --dbprefix=wpx4_
wp core install --url="http://YOUR_IP" --title="AWS LAMP WP" --admin_user="siteadmin" --admin_password="StrongPassw0rd!" --admin_email="you@example.com"