2026年5月20日

2026年5月20日

WordPressを別のサーバーに移行する方法

はじめに

WordPressサイトの引越し(サーバー移行)はデータベース・ファイル・設定の3つを正しく移行する必要があります。URLが変わる場合はデータベース内のURL一括置換も必要です。移行プラグインと手動移行の両方の手順を解説します。

症状・原因

  • ホスティングを乗り換えたい
  • 共有サーバーからVPS/専用サーバーに移行したい
  • ドメインを変更したい
  • 開発環境から本番環境にサイトをデプロイしたい

解決手順

ステップ1:移行前の準備

# 移行元サーバーで確認すること

# WordPressバージョンの確認
wp core version

# PHPバージョンの確認(移行先と合わせる)
php -v

# データベースサイズの確認
wp db size

# プラグイン一覧を記録
wp plugin list --format=csv > /tmp/plugins.csv

# テーマ一覧を記録
wp theme list --format=csv > /tmp/themes.csv

# wp-config.php の設定を記録
grep -E "DB_|table_prefix|WP_DEBUG" /var/www/html/wp-config.php

ステップ2:All-in-One WP Migrationで移行する(最簡単)

All-in-One WP Migration の使い方:

【移行元サイト】
1. プラグイン → All-in-One WP Migration インストール・有効化
2. All-in-One WP Migration → エクスポート
3. 「エクスポート先」→「ファイル」を選択
4. .wpress ファイルがダウンロードされる(全データ含む)

【移行先サイト】
1. 新サーバーにWordPressをインストール
2. All-in-One WP Migration をインストール・有効化
3. All-in-One WP Migration → インポート
4. .wpress ファイルをドラッグ&ドロップ
5. 「インポート続行」→ 完了

注意: 無料版は512MBまで(有料版は無制限)
大容量サイトはファイル分割またはWP-CLIを使用

ステップ3:WP-CLIで手動移行する(確実な方法)

# ===== 移行元サーバーでの作業 =====

# データベースをエクスポート
wp db export /tmp/wp_export.sql

# wp-content をアーカイブ
tar -czf /tmp/wp-content.tar.gz -C /var/www/html wp-content \
  --exclude="wp-content/cache" \
  --exclude="wp-content/uploads/backups"

# wp-config.php の設定をメモ
cat wp-config.php | grep -E "DB_|table_prefix"

# ファイルをSFTP/SCPで移行先に転送
scp /tmp/wp_export.sql user@new-server:/tmp/
scp /tmp/wp-content.tar.gz user@new-server:/tmp/
# ===== 移行先サーバーでの作業 =====

# WordPressをダウンロード・展開
wp core download --locale=ja
wp config create \
  --dbname=new_db \
  --dbuser=new_user \
  --dbpass=new_password \
  --dbhost=localhost \
  --locale=ja

# データベースを作成
wp db create

# バックアップをインポート
wp db import /tmp/wp_export.sql

# wp-content を展開
rm -rf /var/www/html/wp-content
tar -xzf /tmp/wp-content.tar.gz -C /var/www/html

# URLを移行先ドメインに変更
wp search-replace 'https://old-example.com' 'https://new-example.com' \
  --skip-columns=guid \
  --report-changed-only

# パーミッション修正
chown -R www-data:www-data /var/www/html
find /var/www/html -type f -exec chmod 644 {} \;
find /var/www/html -type d -exec chmod 755 {} \;
chmod 600 /var/www/html/wp-config.php

ステップ4:移行後の確認

# サイトの動作確認
wp post list | head -5
wp user list
wp plugin status

# パーマリンク設定を更新(.htaccessを再生成)
wp rewrite flush --hard

# キャッシュをクリア
wp cache flush

# SSL証明書の取得(新ドメインの場合)
sudo certbot --nginx -d new-example.com

# curlでサイトの応答確認
curl -I https://new-example.com/
curl -I https://new-example.com/wp-admin/

ステップ5:DNS切り替えと旧サーバーの停止

# DNS切り替えの手順:

# 1. 新サーバーのIPアドレスを確認
curl ifconfig.me  # または
hostname -I

# 2. ドメインレジストラのDNS設定を変更
#    Aレコード: example.com → 新サーバーのIP
#    CNAMEレコード: www → example.com(または新IPのAレコード)
#    TTL: 移行前に300秒(5分)に下げておく

# 3. DNS伝播を確認(全世界に伝播するまで最大48時間)
dig example.com +short  # Linux
nslookup example.com    # Windows

# 4. 旧サーバーで301リダイレクトを設定(念のため)
# .htaccess に追加:
# RewriteRule ^(.*)$ https://new-example.com/$1 [R=301,L]

# 5. 新旧両サーバーで /etc/hosts を使って事前テスト
# 192.168.1.100 example.com  ← 一時的に追加してテスト

注意事項

  • URLを変更する場合(ドメイン変更)、wp search-replace--skip-columns=guid を必ず付けてください。guidを変更するとRSSフィードの既読情報がリセットされます
  • 移行後24〜48時間はDNS伝播期間中のため、旧サーバーも停止しないでください。アクセスが旧サーバーに来る可能性があります
  • メールアドレスを含む投稿・コメントのURLも一括置換されます。本番移行前にテスト環境で--dry-runオプションで影響範囲を確認してください

まとめ

小規模サイトはAll-in-One WP Migrationが最も簡単です。大規模・確実性重視の場合はwp db exporttar → SCP転送 → wp db importwp search-replace の手動移行を選択します。移行後はwp rewrite flush --hardでパーマリンクを再生成し、DNS切り替え後48時間は旧サーバーを停止しないようにします。

お気軽にご相談ください

お見積りへ お問い合わせへ