この記事では、VPSを安全に運用するために
「さくらのVPSを立ち上げた状態から、WordPressを公開するまで」
に実施すべきステップの全体像をガイドします。
第1回では、VPSにおける基本的なセキュリティ強化設定を紹介しました。
第2回(この記事)では、WordPressを導入し、nginxを介してインターネット公開するための流れを整理します。
個々の細かな手順(コマンドや設定ファイルの詳細)は割愛していますが、流れを理解することで「何をやればよいか」が一望できる構成になっています。
実際の構築時には公式ドキュメントや各サービスのリファレンスも併せてご参照ください。
なお、ご紹介する手順は筆者の環境をベースに作成しています。
参考にされる場合は自己責任でお願いします。
また、必ずしも全ての環境において最適、最高水準という訳ではありませんので、その点はご了承ください。
今回は Web公開環境の構築 がテーマです。
前提条件
- さくらのVPS / 1Gプラン
- Rocky Linux 9
- 初期設定済み → (第1回)初期設定とセキュリティ強化を参照
1. nginxの導入と公開確認
Web公開の入り口としてnginxを導入します。
dnf install nginxでインストールsystemctl enable --now nginxで常時稼働化- デフォルトで
/usr/share/nginx/html/index.htmlに仮ページがあるので、ブラウザからアクセス確認
「VPSから外部にHTTPレスポンスを返せる」状態になります。
2. Let’s EncryptによるHTTPS化
もはやインターネット上のWebサイトでは必須のHTTPS化対応です。
certbotとpython3-certbot-nginxを導入certbot --nginx -d example.comで証明書発行- 必要に応じて HSTS や TLS バージョン制御(TLS1.2/1.3限定)を設定
サーバを再起動すると certbot-renew.timer が自動的に起動し、自動更新が有効になります。
3. MariaDBの導入と初期設定
WordPress用のデータベースを準備します。
dnf install mariadb-serverで導入systemctl enable --now mariadbmysql_secure_installationによりrootパスワード設定・匿名ユーザー削除・テストDB削除- WordPress用DBとユーザを作成
障害や不正侵入時の影響を抑えるため、WordPress専用DBとユーザを用意することをお勧めします。
4. PHP(php-fpm)の導入
WordPressを動かすアプリケーション実行環境です。
dnf install php php-mysqlnd php-fpm php-gd php-mbstring php-xmlsystemctl enable --now php-fpm- nginxとphp-fpmの連携設定を行い、
.phpファイルを正しく処理できるように調整- nginx: 設定ファイル
/etc/nginx/conf.d/php-fpm.confを作成してsocketファイルをlistenするように設定 - php-fpm: 設定ファイル
/etc/php-fpm.d/www.confuser,group,listen.owner,listen.groupをnginxに変更
- nginx: 設定ファイル
5. WordPress設置と権限設計
WordPress本体を配置しパーミッションを変更します。
- 配置場所例:
/var/www/html配下 - オーナーとパーミッションの変更例
- オーナー:
nginx:nginx - 基本: 644/755
wp-config.phpは 600
- オーナー:
管理画面からのWordPress本体の更新が制限されますが、筆者はセキュリティ確保の観点からこの運用を許容しています。
6. wp-cliの導入
WordPress更新をコマンド化するためのツールを導入します。
curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar/usr/local/bin/wpに配置し、実行権限を付与- 動作確認:
wp --info - 利用例:
wp core updatewp plugin update --allwp theme update --allwp core update-db
7. cron.dによるWordPress自動更新
WordPressの更新を自動化し、放置による脆弱性リスクを低減します。
筆者の環境ではwp-update.sh 内にアップデートコマンドを列挙しcron.dで起動しています。
例:/etc/cron.d/wpcli-update
- 毎日午前3時にWordPressを自動更新
- 0 3 * * * root /opt/admin/bin/wp-update.sh
8. SELinuxの確認と対応
筆者の環境では、SELinuxの設定変更をせずにWordPressをインターネット公開できました。
設置場所やプラグイン等によっては、次の調整が必要になるケースもありそうです。
httpd_can_network_connect/httpd_can_network_connect_dbの有効化uploadsディレクトリにhttpd_sys_rw_content_tを付与
不具合があった場合は、まず ausearch -m avc -ts recent を確認し、何がブロックされているか確認します。
9. まとめ
「第1回 初期設定とセキュリティ強化」「第2回 Web公開環境の構築」を通して、さくらのVPSを立ち上げ、Webサイトを公開するまでの最小限の流れ を一通りご紹介しました。
- nginxでHTTPS化したWebサイトを公開
- WordPressの導入と自動アップデート環境
- SELinuxの有効化
個々の詳細手順やトラブルシュートについては、各サービスの公式ドキュメントや専門記事もあわせてご参照ください。
本記事へのフィードバックや詳細な解説依頼は「Contact」よりお知らせください。