VPSへWordPressを導入する方法|Ubuntu・Nginxでの構築手順

Ubuntu VPSへNginx、PHP、MariaDB、WordPressを導入し、独自ドメイン、HTTPS、更新、バックアップまで整える方法を解説します。
VPSへWordPressを導入すると、Webサーバー、PHP、データベースを自分で調整できます。一方、OS更新、障害対応、バックアップも自分で行います。記事作成だけに集中したい場合は、管理負担の少ないレンタルサーバーも比較してください。
本記事ではUbuntu、Nginx、PHP-FPM、MariaDBの構成を例に、公開までの流れを示します。対応バージョンは更新されるため、WordPress公式の推奨要件を確認してから導入してください。
構築前のチェック
- サポート中のUbuntu LTSを使用する
- sudo可能な一般ユーザーでSSH接続できる
- 2GB以上のメモリを目安に用途で調整する
- 独自ドメインのDNSを変更できる
- VPS外のバックアップ先を用意する
作業前にスナップショットを取得し、SSH・UFWの初期設定を完了します。
1. Nginx・PHP・MariaDBをインストールする
sudo apt update
sudo apt install nginx mariadb-server php-fpm php-mysql php-curl php-gd php-mbstring php-xml php-zip php-intl -yサービスを確認します。
sudo systemctl enable --now nginx mariadb
sudo systemctl status nginx mariadb
php -vPHPのバージョンと拡張機能がWordPressの最新要件および利用プラグインに対応するか確認します。
2. データベースと専用ユーザーを作る
MariaDBへ管理者として入り、WordPress用のDBとユーザーを作成します。例の名前と強いパスワードを置き換えてください。
CREATE DATABASE wordpress DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'wpuser'@'localhost' IDENTIFIED BY '長く固有のパスワード';
GRANT ALL PRIVILEGES ON wordpress.* TO 'wpuser'@'localhost';
FLUSH PRIVILEGES;
EXIT;DBを外部公開せず、WordPress専用ユーザーには対象DBだけの権限を付与します。パスワードをコマンド履歴や公開リポジトリへ残さないでください。
3. WordPressを公式配布元から取得する
一時ディレクトリで取得し、公開ディレクトリへ配置します。
cd /tmp
curl -O https://wordpress.org/latest.tar.gz
tar xzf latest.tar.gz
sudo mkdir -p /var/www/example.com
sudo cp -a wordpress/. /var/www/example.com/配布元URLとファイルの正当性を確認し、第三者サイトの改変パッケージは使わないでください。
4. wp-config.phpを設定する
cd /var/www/example.com
sudo cp wp-config-sample.php wp-config.phpDB名、ユーザー、パスワード、ホストを設定します。認証用ソルトはWordPress公式の生成サービスを利用し、既定値のままにしません。デバッグ表示は本番で無効にします。
5. ファイル所有者と権限を整える
環境に応じてWebサーバーユーザーと更新方法を決めます。単純に全ファイルを誰でも書き込み可能にしてはいけません。
sudo chown -R www-data:www-data /var/www/example.com
sudo find /var/www/example.com -type d -exec chmod 755 {} \;
sudo find /var/www/example.com -type f -exec chmod 644 {} \;wp-config.phpは必要以上に読める状態にせず、運用方法に合わせてさらに制限します。
6. Nginxのserver blockを作る
PHP-FPMのソケット名は導入バージョンに合わせます。
server {
listen 80;
server_name example.com www.example.com;
root /var/www/example.com;
index index.php index.html;
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php-fpm.sock;
}
location ~ /\.ht {
deny all;
}
}実際のソケットを確認し、設定をテストします。
ls /run/php/
sudo nginx -t
sudo systemctl reload nginx7. DNSとHTTPSを設定する
ドメインのAレコードをVPSのIPv4へ向け、名前解決後にTLS証明書を取得します。80番と443番をUFWと事業者側ファイアウォールで許可します。
HTTPS化後は、WordPressのサイトURL、HTTPからHTTPSへの転送、証明書の自動更新を確認します。DNS反映前に証明書取得を繰り返すと失敗制限にかかることがあるため、先に名前解決を確認してください。
8. WordPress初期設定を行う
ブラウザでドメインへアクセスし、サイト名と管理者を設定します。管理者名に推測しやすいadminを避け、長い固有パスワードと多要素認証を使います。
検索エンジンへの公開は、テストページやサンプル投稿を削除し、パーマリンク、サイトマップ、robots設定を確認してから行います。
9. セキュリティと更新を整える
- WordPress本体、テーマ、プラグインを更新する
- 未使用のテーマとプラグインを削除する
- ログイン試行とファイル変更を監視する
- XML-RPCなど不要な機能の公開範囲を検討する
- OS、Nginx、PHP、MariaDBも更新する
プラグインだけに防御を任せず、VPS側の更新と最小権限を維持します。
10. バックアップと復元テスト
wp-content、wp-config.php相当の設定、データベースをVPS外へ保存します。テーマやプラグインの更新前にも取得し、検証用VPSで復元できるか試します。
スナップショットは素早い切り戻しに便利ですが、唯一のバックアップにしないでください。
よくあるエラー
502 Bad Gateway
PHP-FPMが停止している、Nginxのソケット名が実環境と違う可能性があります。systemctl statusと/run/php/を確認します。
データベース接続確立エラー
DB名、ユーザー、パスワード、localhost、MariaDBの起動状態を確認します。権限を広げる前に、対象ユーザーでログインできるかを試します。
画像をアップロードできない
wp-content/uploadsの所有者、権限、ディスク空き容量、PHPのアップロード上限を確認します。777で一時回避せず、正しい所有者と必要最小限の権限へ直します。
まとめ
VPS上のWordPressは自由度が高い反面、Nginx、PHP、DB、TLS、更新、バックアップまで管理対象です。構築時間も含めて選び、公開前に復元テストを行いましょう。サービス選びはWordPress向けVPS比較も参考にしてください。