前提は 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分)
- 一般:サイトアドレス(将来 HTTPS 化時は
https://に変更) - パーマリンク:「投稿名」推奨(
.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
- ユーザー:管理者とは別に「編集者」ロールを作成(運用分離)
- プラグイン:後で導入(セキュリティ・バックアップ・キャッシュ等)
6. 代表的なトラブルと対処
| 症状 | 主因 | 対処 |
|---|---|---|
| データベース接続確立エラー | DB名/ユーザー/パスワード/ホストが不一致、MariaDB停止 | wp-config.php 再確認、systemctl status mariadb、mysql -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:apache、chmod 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. チェックリスト
wpdbとwpuser@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"