エックスサーバー無料VPSから無料Oracle Cloud(OCI)へWordPressを移行する手順とCSS崩れなどのMixed Content問題回避策

無料VPSからOracle Cloud OCIへWordPressを移行する手順とMixed Content対策 インフラ・サーバー

はじめに

エックスサーバーの無料VPSサービスが新規受付を休止したため、代替となる永久無料のクラウドインフラとして Oracle Cloud Infrastructure(OCI)の Always Free(VM.Standard.A1.Flex) へWordPressサイトを移行しました。

Oracle Cloud Infrastructure(OCI)の無料枠(Always Free)は、クラウドサービスの中でも圧倒的な高スペックを提供していることで有名です。

しかし高スペックのインスタンスはなかなか空かないため作成できないのが現状です。

それでもちょっとした工夫でインスタンスを作成する事ができたので、その方法を紹介しつつ、WordPressの引っ越し手順、トラブルシューティングについて解説していきます。

1. 無料で使えるスペック一覧

OCIのAlways Freeで提供されているインスタンス(仮想サーバー)は大きく分けて2種類あります。

① 【超・高スペック】Ampere A1 Flex(ARMベース)

世界中のエンジニアやブロガーが狙っている「本命」のサーバーです。

  • CPUs: 合計 4 OCPU(最大)
  • メモリ: 合計 24 GB(最大)
  • 最大スペック時の月額利用費: 0円(毎月 3,000 OCPU時間 & 18,000 GB時間の無料枠が自動適用)

※この枠は柔軟(Flex)に分割可能です。

  • 1台でフルに使う: 4 OCPU / 24 GB RAM × 1台(最強の無料VPS)
  • 2台に分散して使う: 2 OCPU / 12 GB RAM × 2台(WordPress複数運用や冗長化に最適)

② AMD Compute インスタンス(x86ベース)

従来型の一般的なCPUを採用した補助的なサーバーです。

  • インスタンス数: 2台まで
  • スペック: 1台につき 1/8 OCPU(AMD) / 1 GB メモリ
  • 用途: 非常に軽量なWebサイト、VPNサーバー、簡単なDNS/リバースプロキシ用

③ ストレージ・ネットワーク等の共通無料枠

  • ブートボリューム(ディスクストレージ): 合計 200 GB(全VMの合計)
  • アウトバウンド転送量:10 TB まで無料
  • IPアドレス: パブリックIPv4アドレス(インスタンス毎に1つ)、IPv6利用可能

2. 高スペック(ARM)が「空かない」理由

ARMプロセッサを採用した VM.Standard.A1.Flex (4 OCPU / 24GB RAM) は、非常に人気が高いため 「Out of capacity(容量不足)」 というエラーが出てインスタンスを作成できないケースが多発しています。

主な原因

  1. 圧倒的なコスパ(完全無料) 他社の有料VPS(月額数千円〜1万円相当)並みのスペックが「永年無料」で手に入るため、世界中からユーザーが殺到しています。
  2. リージョンの容量上限 東京(ap-tokyo-1)や大阪(ap-osaka-1)などの人気リージョンでは、オラクル側が用意したARMサーバーの物理リソース枠が常に満杯に近い状態です。
  3. 放置・自動確保スクリプトの横行 空きが出るのを待つために、APIを連打して自動で空きリソースを確保するスクリプト(TerraformやPythonプログラム等)を回しているユーザーが多数存在します。

3. 空きがないときの対策・攻略法

もし作成時に「Out of capacity」と表示されて作れない場合は、以下の方法を試してみてください。

  1. スペック(OCPU / メモリ)を下げる
    「4 OCPU / 24GB」の一括作成は枠が空きにくいですが、「2 OCPU / 12GB」「1 OCPU / 6GB」 に設定を小さくして試すと、すんなり作成できることがあります。(後から構成を変更することも可能です)
  2. 有料アカウント(Pay-As-You-Go / 従量課金)にアップグレードする
    クレジット(有料)アカウントにアップグレードすると、無料枠のリソース割り当て優先度が大幅に上がります
    • アップグレードしても、「4 OCPU / 24GB / 200GB」の範囲内であれば請求は0円のままです(無料枠を超過しない限り課金されません)。
    • 無料ユーザー特有の「一定期間CPU利用率が低いとインスタンスが強制停止(削除)される仕様」の対象外になるメリットもあります。
  3. 時間を置いて試す / OCI CLIなどのツールを使う OCI Command Line Interface (CLI) や Terraform などを用いて、空きが出るまで数分おきに自動リトライする環境を作るユーザーも多くいます。

自分は 2 OCPU / 12GB を選択 Pay-As-You-Goにアップグレード をすることでインスタンスを作成することができました。
AMD Compute インスタンス(x86ベース) 1/8 OCPU(AMD) / 1 GB はすぐに作成できますが、この性能でWordPressサイトを運用するのは難しいと思います。

本記事では、OCIでのVPS構築からDockerを用いた環境構成、SSL化、データの引っ越し、そして移行時にハマりがちな「CSS崩れ(HTTPSリダイレクト・Mixed Content)」の解決コマンドまでを詳しく解説します。

1. サーバー構成と移行の流れ

インフラ・環境スペック

  • VPS: Oracle Cloud Infrastructure (OCI) Always Free
    • シェイプ: VM.Standard.A1.Flex (ARM64)
    • スペック: 2 OCPU / 12 GB RAM / 200 GB Storage
    • OS: Ubuntu 24.04 LTS
  • ミドルウェア・コンテナ:
    • Docker / Docker Compose
    • Nginx Proxy Manager (NPM) ※リバースプロキシ & SSL管理
    • WordPress (latest)
    • MySQL 8.0

エックスサーバーと比較してかなりスペックが高く、WordPressサイト運用はもちろん様々なプロジェクトのデプロイが可能です。

エックスサーバーVPSとオラクルVPSの比較

全体の流れ

  1. OCIで無料VPS(インスタンス)を立ち上げる
  2. Docker & Nginx Proxy Manager の構築
  3. WordPress & MySQL コンテナのセットアップ
  4. SSL(HTTPS)化とドメイン設定
  5. 旧サーバーからのデータ移行(DB・メディアファイル)
  6. CSS崩れ・URL一括置換の修正コマンド実行

2. OCI(オラクルクラウド)でのVPS構築

以下のオラクルクラウドのVPSサービスサイトにアクセスしてアカウントを作成します。

クラウド・サービスに無料でアクセス
Oracle Cloud Free Tierは無期限で使用できるAlways Freeクラウド・サービスを企業に提供します。

初期のコンソール画面が全て英語になっている場合は右上のプロファイルから言語を日本語にすると見やすいです

ナビゲーションメニューコンピュートインスタンスインスタンスの作成を選択

VPSのインスタンス作成画面のスクリーンショット

1. 基本情報

イメージ: Ubuntu 24.04 Canonical を指定。

シェイプ: 仮想マシン Ampere VM.Standard.A1.Flex(Always Free)を選択。
VM.Standard.A1.Flexの横の矢印をクリックするとOCPUの数を選択することができます。必要に応じて 1 から 4 を選択してください

VPSのシェイプの選択画面のスクリーンショット

ここが見つけにくいです!
VM.Standard.A1.Flex の横にある小さい矢印をクリックするとOCPUの数を変更できる部分が出てきます。自分もこれだけで30分探しました。

2. セキュリティ

セキュリティに関するオプションの設定画面です。すべてデフォルトのまま変更不要で大丈夫です。

3. ネットワーキング

ネットワークとSSH鍵(接続設定)の重要なステップです。基本はデフォルトのままでいいですが確認をしておくと安心です。

パブリックIPv4アドレス割当て

  • パブリックIPv4アドレス割当てチェック(選択)が入っていることを確認してください。これがないと外部からネット接続(SSH等)ができません。
  • SSHキーの追加
    • 手元のPCやスマホからサーバーへSSH接続するための鍵を設定します。
    • 簡単な方法(オラクルで自動生成する場合)
      1. キー・ペアを自動で生成 を選択。
      2. 表示されている 秘密キーのダウンロード ボタンを必ず押してファイルを保存してください。※この鍵がないと後でサーバーに入れなくなります

4. ストレージ

ブートボリューム(ストレージ)の設定画面です。こちらもデフォルトのままで問題ありません

次のステップ

  1. 画面一番下にある Next(次へ)をクリックします。
  2. 最後の確認画面(Review)が表示されるので、内容を確認して Create(作成) ボタンを押してください!

作成時の注意点(Out of capacity) もし Create を押した後に Out of capacity for shape…(在庫切れ) という赤字のエラーメッセージが出た場合は、地域(大阪/東京など)で一時的にARMサーバーが満杯になっています。 その場合は、アカウントをPAYG(従量課金)へアップグレードする(※無料枠内なら0円維持)か、少し時間をおいて再度「Create」を試してみてください。

対処法:PAYG(従量課金)へアップグレードする

アカウントを「Pay As You Go(PAYG)」にアップグレードすると、優先的にリソースが割り当てられるため、即座に作成できるようになります。

  • 料金について: PAYGにしても、今回設定したスペック(2 OCPU / 12 GB RAM / 50 GB ストレージ)であれば Always Free(無料枠)の範囲内なので、料金は請求されず $0 のまま利用できます。

手順

  • 画面左上のメニュー > 「請求とコスト管理」支払いのアップグレードと管理」 へ進む。
Pay As You Goへの変更方法のリンク位置のスクリーンショット
  • 下の方にある「アカウントのアップグレード」 をクリック。
  • クレジットカード情報を登録してPAYGに切り替える(カードの有効性確認で一瞬少額のデポジットが発生しますが、すぐに返金されます)。
  • 切り替え完了のメールが届いた後、再度インスタンス作成を実行する。

自分の場合は2時間後くらいに切り替え完了のメールが届きました。

3. ターミナルやSSHクライアントからで接続確認

うまくインスタンスを作成出来たら、SSHでのログインをして確認しましょう。

# SSHログイン
ssh -i 秘密鍵のパス ubuntu@IPアドレス

ポート開放

最初はSSHの22しか開いていないので以下の手順でオラクルVPSのポート開放をします。

左上メニュー「ネットワーキング」「仮想クラウド・ネットワーク へ進み、今回使っている VCNをクリック。

左側のメニューで 「セキュリティ・リスト」 を選択し、Default Security List for… をクリック。

ポート開放するためのページへのリンクのスクリーンショット

「イングレス・ルールの追加」 ボタンをクリックし、以下のように設定します。

項目設定値
Source TypeCIDR
Source CIDR0.0.0.0/0
IP ProtocolTCP
Destination Port Range80,443
DescriptionHTTP, HTTPS(任意)

一番下の 「イングレス・ルールの追加」 を押して追加を完了します。

A レコード変更(DNS設定)

お名前.com や Cloudflare などの自身が使っている DNS 管理画面で、ドメインの A レコードを新しい OCI(VPS)のパブリック IP アドレスに書き換えます(浸透まで数分〜数十分待ちます)。

4. DockerによるWordPressの構築

以下の記事を参考に、VPSの初期設定やDockerを使ってWordPress環境の構築を行います。

WordPressのコンテナを立ち上げ、自身のドメインにアクセスして、WordPressの初期の言語設定画面が表示されるまで進めます。

5. Nginx Proxy Manager によるSSL化

リバースプロキシとして NPM を配置し、SSL証明書(Let’s Encrypt)の発行と各コンテナへのルーティングを一括管理します。
以下の記事で詳しく解説していますので参考にしてください。

httpsでドメインにアクセスできるようになればOKです。

6. 旧サーバーからのデータ引っ越し

お手元に wp_db.sqlwp_files.tar のようなバックアップファイルがある前提で進めていきます。

ちなみにバックアップファイルの作り方は、以下の記事で定期的に取る方法を解説していますのでぜひご覧ください。

バックアップファイルを VPS に転送

ターミナルまたはPowerShellから、以下の scp コマンドで VPS 上のホームディレクトリへ転送してください。

scp -i 秘密鍵のパス wp_db.sql ユーザー名@IPアドレス:~/
scp -i 秘密鍵のパス wp_files.tar ユーザー名@IPアドレス:~/

データベース(SQL)のインポート

旧サーバーで取得した backup.sql を MySQL コンテナ内へ流し込みます。

docker exec -i wordpressのデータベースのコンテナ名 mysql -u MySQLにログインするユーザー名 -p'データベースのパスワード' データベース名 < ~/wp_db.sql

docker-compose.ymlにデータベースの名前やパスワードなどは書かれているので確認してください。

ファイル(wp-content)の最短直接解凍 & 権限変更

旧環境の画像データやテーマ、プラグインが含まれる wp-content をホスト側の ./wp-content ディレクトリへ配置します。

# 既存の初期ディレクトリを消し、直接解凍して権限を変更する
rm -rf ~/wordpress/wp-content && \
mkdir ~/wordpress/wp-content && \
tar -zxvf ~/wp_files.tar.gz -C ~/wordpress/wp-content --strip-components=1 && \
sudo chown -R 33:33 ~/wordpress/wp-content

6. CSSが崩れる・表示が重い現象の対策

実は自分もデータ移行を終えてサイトにアクセスした際、デザインが完全に崩れ、画像も読み込まれない状態になりました。

原因:
Nginx Proxy Manager(リバースプロキシ)を経由して HTTPS 化を行ったため、WordPress 内部で「現在の通信が HTTPS であること」を正しく認識できず、http:// へリダイレクトループを起こしたり、Mixed Content エラーでCSS/JSがブロックされていたためです。

リバースプロキシ経由のHTTPS化でWordPressがHTTPと誤認識し、リダイレクトループやMixed ContentによってCSS・JS・画像が読み込めず、サイトのレイアウトが崩れる仕組み

① wp-config.php にプロキシヘッダーの設定を追加

wp-config.php の先頭に以下のコードを挿入して、リバースプロキシ経由の HTTPS 通信を認識させます。

docker exec -it ワードプレスのコンテナ名 sed -i "2i \\if (isset(\$_SERVER['HTTP_X_FORWARDED_PROTO']) && \$_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https') { \$_SERVER['HTTPS'] = 'on'; }\ndefine('WP_HOME', 'https://自分の独自ドメイン');\ndefine('WP_SITEURL', 'https://自分の独自ドメイン');" /var/www/html/wp-config.php

② データベース内の URL(http ➔ https)を一括置換

データベース内に残った旧環境の http:// 記述を https:// へ書き換えます。

# サイトURL設定の書き換え
docker exec -i データベースのコンテナ名 mysql -u MySQLのユーザー名 -p'MySQLのパスワード' データベース名 -e "UPDATE wp_options SET option_value = REPLACE(option_value, 'http://自分の独自ドメイン', 'https://自分の独自ドメイン') WHERE option_name = 'home' OR option_name = 'siteurl';"
# 記事本文中のリンク・画像パスの書き換え
docker exec -i データベースのコンテナ名 mysql -u MySQLのユーザー名 -p'MySQLのパスワード' データベース名 -e "UPDATE wp_posts SET post_content = REPLACE(post_content, 'http://自分の独自ドメイン', 'https://自分の独自ドメイン');"

③ キャッシュ削除と所有権の変更

ファイルのパーミッションエラーや古いキャッシュをクリアして再起動します。

# キャッシュファイルの削除
sudo rm -rf ~/wordpress/wp-content/cache/*
# ディレクトリ所有権を www-data (UID 33) に変更
sudo chown -R 33:33 ~/wordpress/wp-content
# コンテナの再起動
cd ~/wordpress && docker compose restart

まとめ

エックスサーバーの無料VPSから OCI へ移行したことで、2 OCPU / 12 GB RAM という非常に強力な環境を無料で手に入れることができました。

リバースプロキシ構成特有の SSL・CSS読み込みエラーで一瞬焦りましたが、プロキシヘッダーの設定とデータベースのURL置換を行うことで無事に解決しました。移行後はページの読み込み速度も大幅に向上し、大満足の結果となっています。

Docker構成にしておくことで、今後のバックアップや環境移転も容易になります。無料VPSの移行先を探している方は、ぜひチャレンジしてみてください!

コメント