⚙️ サイトの基本設定
1) テーマとプラグイン導入
2) パーマリンク設定
3) SSL(HTTPS)対応(Let’s Encrypt)
🎯 学習目標
- WordPressのテーマ導入と有効化、プラグイン選定と導入ができる
- パーマリンクを「投稿名」にし、
.htaccessとmod_rewriteを正しく動作させる - Let’s Encrypt で無料SSLを導入し、HTTP→HTTPSリダイレクト と WPのURL更新 を完了できる
✅ 0. 事前チェック(1分)
# Apache 稼働
sudo systemctl status httpd
# mod_rewrite 有効
sudo httpd -M | grep rewrite
# DocumentRoot 確認(例:/var/www/html)
grep -n 'DocumentRoot' /etc/httpd/conf/httpd.conf
rewrite_moduleが見つからない場合 →LoadModule rewrite_module modules/mod_rewrite.soを有効化(httpd.conf)→sudo systemctl reload httpd
1) テーマとプラグイン導入
1-1. テーマ導入(管理画面)
http://<EC2のIP>/wp-admin/に管理者でログイン- 外観 > テーマ > 新規追加 から
- 例:Twenty Twenty-Four(公式)や Astra を検索→インストール→有効化
- 外観 > カスタマイズ でサイトアイコン/色/フォントなど最小調整
(任意)WP-CLIでテーマ導入
cd /var/www/html
wp theme install twentytwentyfour --activate
# 例:Astra
wp theme install astra --activate
1-2. プラグイン導入(最小構成の例)
まずは最小で。増やしすぎるとパフォーマンス/保守性が低下します。
| 目的 | 候補例 | 備考 |
|---|---|---|
| セキュリティ | WPcode + DISALLOW_FILE_EDIT, (もしくは) Wordfence / iThemes Security | ログイン保護、2FA、編集禁止を基本に |
| バックアップ | UpdraftPlus | S3連携可。定期バックアップ設定 |
| キャッシュ | WP Super Cache / W3 Total Cache | 小規模なら Super Cache が簡単 |
| 画像圧縮 | EWWW Image Optimizer | 画質/圧縮バランス良し |
| SEOメタ | All in One SEO / Yoast SEO | メタ/サイトマップ生成 |
導入手順(管理画面):
プラグイン > 新規追加 で検索 → 今すぐインストール → 有効化
WP-CLI例:
cd /var/www/html
wp plugin install updraftplus --activate
wp plugin install wp-super-cache --activate
wp plugin install ewww-image-optimizer --activate
最初にやるセキュリティ最小化:
wp-config.phpに既に設定済みならOK:define('DISALLOW_FILE_EDIT', true);
2) パーマリンク設定(投稿名)
2-1. 管理画面で設定
- 設定 > パーマリンク
- 「投稿名」 を選択 → 変更を保存
2-2. .htaccess と AllowOverride
- 保存時に
.htaccessが自動生成されればOK。 - 生成されない/リライトが効かない場合:
Apache設定(/etc/httpd/conf/httpd.conf)<Directory "/var/www/html"> ブロックを確認し、AllowOverride All に変更。
<Directory "/var/www/html">
AllowOverride All
Require all granted
</Directory>
反映:
sudo systemctl reload httpd
手動で .htaccess を作成(/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
検証:任意の投稿を作成 → http://<IP>/%postname%/ 形式で開ければ成功。
3) SSL(HTTPS)対応(Let’s Encrypt)====> ドメインなし運用なので説明のみ
前提:独自ドメインを紐づけ済み(Route53 などで A レコード→EC2 の Elastic IP)。
Let’s Encrypt はIP直アクセス不可。必ずドメインが必要です。
3-0. 前準備(VirtualHost と ServerName)
/etc/httpd/conf.d/wordpress.conf(新規作成推奨):
<VirtualHost *:80>
ServerName example.com
ServerAlias www.example.com
DocumentRoot /var/www/html
<Directory "/var/www/html">
AllowOverride All
Require all granted
</Directory>
ErrorLog /var/log/httpd/wp_error.log
CustomLog /var/log/httpd/wp_access.log combined
</VirtualHost>
反映:
sudo systemctl reload httpd
example.comがサーバの Elastic IP を向いているか(DNS 反映)をnslookup example.com/digで確認。
3-1. Certbot の導入(Amazon Linux 2)
方法A:EPEL から certbot(推奨)
sudo amazon-linux-extras install epel -y
sudo yum install -y certbot python3-certbot-apache
certbot --version
方法B:snap が使える場合(参考)
# AL2 では非推奨。利用する場合は snapd セットアップが必要。
3-2. 証明書発行(Apache プラグイン)
# www あり/なしを一括取得
sudo certbot --apache -d example.com -d www.example.com
対話:
- メールアドレス入力、利用規約同意
- HTTP→HTTPS リダイレクト を「有効化」を選択すると、自動で設定追記
自動設定される例(/etc/httpd/conf.d/ssl.conf または vhostに追記):
<VirtualHost *:443>
ServerName example.com
DocumentRoot /var/www/html
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/example.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem
<Directory "/var/www/html">
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
# 80→443 リダイレクト設定(自動付与される場合あり)
<VirtualHost *:80>
ServerName example.com
Redirect permanent / https://example.com/
</VirtualHost>
反映:
sudo systemctl reload httpd
検証:
https://example.com/にアクセス → 鍵マーク表示http://example.com/→ 自動でhttps://にリダイレクト
3-3. WordPress 側URLのHTTPS化
- 設定 > 一般 の WordPress アドレス(URL) と サイトアドレス(URL) を
https://example.comに更新 → 保存
(ALB/CloudFront 経由でTLS終端する場合は、wp-config.phpに以下を追加すると誤検知を防止)if ( isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && 'https' === $_SERVER['HTTP_X_FORWARDED_PROTO'] ) { $_SERVER['HTTPS'] = 'on'; } - 既存内部リンクの HTTPS 置換(任意)
- 新規サイトなら不要。移行の場合、Better Search Replace プラグインや WP-CLI を利用
# 例:WP-CLIで一括置換(バックアップ推奨) cd /var/www/html wp search-replace 'http://example.com' 'https://example.com' --all-tables
3-4. 自動更新(certbot renew)確認
Let’s Encryptは90日有効。certbot は自動更新用のタイマー/cronを設定します。
# 想定コマンド:systemd timer または cron が設定済み
sudo systemctl list-timers | grep certbot
# 手動テスト
sudo certbot renew --dry-run
🔍 トラブルシュート(SSL/HTTPS)
| 症状 | 主因 | 対処 |
|---|---|---|
certbot: Could not bind to port 80 | 80番ポート占有/vhost不備 | Apache稼働確認、VirtualHostのServerName/DocumentRootを整備 |
Challenge failed | DNS未反映/誤設定 | Aレコードが正しくElastic IPを向くまで待機(数分〜数十分) |
| 鍵は付くが「保護されていない要素」 | 画像/CSSにhttp混在 | テーマ/ウィジェット/固定ページ内のURLをhttpsへ、Search-Replace |
| WPがhttpに戻る | CDN/ALB終端でHTTPS検知不可 | wp-config.php の HTTP_X_FORWARDED_PROTO 判定を有効化 |
| 速度低下 | 不要プラグイン/キャッシュ未設定 | キャッシュ有効化、画像圧縮、プラグイン整理 |
🧹 仕上げ(推奨の初期設定)
- タイムゾーン/言語:設定 > 一般 で「東京」「日本語」
- 固定ページ:「ホーム」「ブログ」を作成 → 設定 > 表示設定 で静的ホーム設定(任意)
- ディスカッション:コメント/ピンバックの扱いを決める
- メディア:サムネイルサイズ等をテーマに合わせ調整
- プラグイン最小化:未使用は停止→削除
- バックアップ:UpdraftPlusでS3退避スケジュールを設定
- MFA(2段階認証):Wordfence等で有効化
- セキュリティ:
DISALLOW_FILE_EDIT、管理者IDは “admin” を避ける
✅ チェックリスト
- テーマを導入し有効化、基本外観を調整
- 必要最小のプラグインを導入・有効化(セキュリティ/バックアップ/キャッシュ等)
- パーマリンクを「投稿名」に設定、
.htaccessとmod_rewriteを確認 - VirtualHost の
ServerName/DocumentRootを整備 certbot --apacheで証明書発行、80→443 リダイレクト有効- WPのサイトURL/ホームURLを
https://に変更 certbot renew --dry-runで自動更新テストOK- 画像/内部リンクの混在コンテンツを解消
付録:WP-CLI でまとめてセットアップ(任意・時短)
cd /var/www/html
# プラグイン一気に導入
wp plugin install updraftplus wp-super-cache ewww-image-optimizer --activate
# パーマリンクを投稿名に
wp rewrite structure '/%postname%/' --hard
wp rewrite flush --hard
# 一般設定(例)
wp option update timezone_string 'Asia/Tokyo'
wp option update blogdescription 'AWS LAMP WordPress Training'
# HTTPS への URL 置換(慎重に!事前バックアップ必須)
# wp search-replace 'http://example.com' 'https://example.com' --all-tables