rakumoコンサルティング部 Tech Blog

GCPの構築ノウハウをそろりと公開 コンサル部によるテックブログ

構築済のWordPressをGoogle App Engineに移行する(2)

rakumoコンサルティング部の小山(@koyhoge)です。

既存のWordPressGCPに移行する解説記事の2回目です。

前回に引き続き、具体的な移行作業について解説します。

今回の移行手順

今回の移行手順は以下の順番で進んでいきます。こうして並べると手順が多いように感じますが、特にセットアップ系は慣れればさほど大変ではありません。クラウドサービスを使う際にはどうしても必要なことなので慣れていきましょう。

  • WordPressのデータエクスポート
  • GCP環境のセットアップ
    • プロジェクトの作成
    • CloudSQLの設定
    • GAEコンソールの設定
    • Cloud SDK のインストール
  • WPonGAEのセットアップ
  • GAEにデプロイ
  • GAE上のWordPressのインストール
  • データを新環境にインポート
  • DNSの切り替え

ではこれらの手順を順番に追っていきます。

WordPressデータのエクスポート

まず最初に、動作しているWordPressのデータをエクスポート機能を使ってファイルに書き出します。ダッシュボードの「ツール」メニューから「エクスポート」を選択し、

WordPressのエクスポートメニュー

エクスポート管理画面の「すべてのコンテンツ」を選択して「エクスポートファイルをダウンロード」ボタンを押します。すると<ブログ名>.wordpress.<日付>.xml というファイルがダウンロードされます。識別子から分かるように、これはコンテンツの情報を格納したXMLファイルになります。

WordPressのエクスポート画面

このXMLデータは、後の手順でGAE上の新環境にインポートすることになります。

GCPの環境セットアップ

それではいよいよ移行先の GCP 環境の設定を行っていきます。GCPのアカウント作成に関しては詳しく解説しませんが、まだアカウントをお持ちでない場合は、GCPのトップページの「無料トライアル」からアカウントを作成して下さい。

プロジェクトの作成

GCPに限らずGoogleAPIを使用するには、まず開発者向けダッシュボードで「プロジェクト」を作成する必要があります。各種リソースや課金情報はプロジェクト単位で管理されます。新規にアカウントを作成した場合は「My First Project」というプロジェクトが自動で作成されています。

新しくプロジェクトを作成するには、GCPのコンソール画面の上部メニューからプロジェクトの選択ボタンを押し、

プロジェクト選択ボタン

そこで表示されるダイアログの右端にある「+」ボタンクリックします。

プロジェクト新規作成ボタン

プロジェクト名を入力する画面になるので、任意の文字列を入力します。今回のプロジェクト名は「wp-on-gae」としました。

プロジェクト名の入力

ここから先、いくつかの GCPサービスの設定をしていきますが、すべてこの「wp-on-gae」プロジェクトで行うこととします。

Cloud SQLの設定

まずはWordPressのバックエンドデータベースであるMySQLの移行先として、Cloud SQLの設定をしましょう。Cloud SQLクラウド上で動作するフルマネージドなRDBMSで、

GCPコンソールの左上にある「三」のような形の「ハンバーガーメニュー」ボタンを押して、サービスメニューを開き、

GCPサービスメニュー

下の方にスクロールすると表示される「SQL」を選択します。

SQLメニュー

まだCloud SQLインスタンスが存在しない場合は、新規作成画面になります。

Cloud SQLインスタンス新規作成

まず MySQLPostgreSQLの選択画面になりますので、MySQLを選択します。

データベースエンジンの選択

MySQL インスタンスタイプの選択」では「第2世代を選択」を選びます。

インスタンスタイプの選択

MySQL 第2世代インスタンスの作成」で必要項目を入力します。

  • インスタンスID」は「wp-on-gae-mysql」としました。
  • 「rootパスワード」は右端の「生成」ボタンを押して自動生成しました。
  • 「リージョン」は、東京リージョンにしたいので「asia-northeast1」としました。
  • 「ゾーン」はどれでも良いですが、今回は「asia-northeast1-c」にしました。

MySQLインスタンスの設定

必要事項を入力して「作成」ボタンを押すと、しばらく時間をおいたあと、無事にMySQLインスタンスが立ち上がります。

インスタンス作成完了

インスタンスのリスト表示内の「インスタンス接続名」は後で必要になるのでメモっておきます。今回は「wp-on-gae-187408:asia-northeast1:wp-on-gae-mysql」でした。

GAEの設定

次に WordPress の実行環境となる Google App Engine(GAE) の設定を行います。サービスメニューから「App Engine」を選択しGAE の設定画面に入ります。

App Engineメニュー

「初めてのアプリへようこそ」という画面でチュートリアルがはじまるように見えます。とりあえず「言語を選択」して先に進みます。

App Engine へようこそ

WordPressPHPで作られているので「PHP」を選択します。

PHPを選択

次に「ロケーションを選択」します。国内からのアクセスを想定するので「asia-northeast1」を選択します。

ロケーション選択

「App Engine サービスを準備しています」というメッセージが表示されてしばらくすると、準備が整います。

App Engine サービスを準備しています

しかしこのWebコンソールからは、動作しているアプリケーションの各種状況は確認できますが、アプリケーションのデプロイそのものはできません。デプロイは次にインストールする gcloud コマンドで、コマンドラインから行います。

Cloud SDK のインストール

GAE のデプロイに必要な gcloud コマンドのために、Google Cloud SDKを手元のマシンにインストールします。以下のページのガイドラインに従って進めます。

https://cloud.google.com/sdk/downloads?hl=jacloud.google.com

今回はLinux環境にインストールするので、以下のコマンドを実行します。

$ curl https://sdk.cloud.google.com | bash

以下のようにインストール先を聞いてきます。

Installation directory (this will create a google-cloud-sdk subdirectory) (/home/koyama):

意味: インストールするディレクトリを指定して下さい(そこに google-cloud-sdk ディレクトリが作成されます) (省略時は /home/koyama):

自分のホームディレクトリの下で問題ないので、そのままエンター。

大量にファイルが展開された後、フィードバックのためのデータを匿名化して収集してよいかと質問されます。

/home/koyama/google-cloud-sdk/install.sh
Welcome to the Google Cloud SDK!

To help improve the quality of this product, we collect anonymized usage data and anonymized stacktraces when crashes are encountered; additional information is available at <https://cloud.google.com/sdk/usage-statistics>;. You may choose
to opt out of this collection now (by choosing 'N' at the below prompt), or at any time in the future by running the following command:

    gcloud config set disable_usage_reporting true

Do you want to help improve the Google Cloud SDK (Y/n)?

私は問題ないので「Y」ですが、各々の考え方によって判断して下さい。

SDKの各コンポーネントのインストールが終わった後、パスとコマンド補完の設定を追加するか聞いてきます。

Modify profile to update your $PATH and enable shell command
completion?

Do you want to continue (Y/n)?

「Y」を入力すると、設定を追加するあなたの「rcファイル」は「/home/koyama/.bashrc」で良いかと聞いてきます。

The Google Cloud SDK installer will now prompt you to update an rc
file to bring the Google Cloud CLIs into your environment.

Enter a path to an rc file to update, or leave blank to use
[/home/koyama/.bashrc]:

こちらも問題ないのでエンターを押すと、.bashrc が更新されて以前のファイルは .bashrc.backup に残してあると表示され、インストーラは終了します。

Backing up [/home/koyama/.bashrc] to [/home/koyama/.bashrc.backup].
[/home/koyama/.bashrc] has been updated.

==> Start a new shell for the changes to take effect.


For more information on how to get started, please visit:
https://cloud.google.com/sdk/docs/quickstarts

さきほど .bashrc に追加した設定を有効にするためにログインシェルを再起動します。

$ exec -l $SHELL

gcloud 環境を初期化するために gcloud init コマンドを実行します。実行結果はおそらく人それぞれに異なるでしょうが、私の場合はログインして認証チェックを求められました。

$ gcloud init
Welcome! This command will take you through the configuration of gcloud.

Your current configuration has been set to: [default]

You can skip diagnostics next time by using the following flag:
  gcloud init --skip-diagnostics

Network diagnostic detects and fixes local network connection issues.
Checking network connection...done.
Reachability Check passed.
Network diagnostic (1/1 checks) passed.

You must log in to continue. Would you like to log in (Y/n)?

yを入力すると認証用のURLが表示され、これをブラウザで開くように求められます。

Go to the following link in your browser:

https://accounts.google.com/o/oauth2<省略>

ブラウザで開くとリソースに対するアクセスの許可を求められて、

認証画面

「許可」ボタンをクリックすると、

認証用のコード文字列が表示されます。

認証用コード

そのコード文字列をコピーして、ターミナルに戻ってペーストすると無事に GCP アカウントでログインできました。

Enter verification code: XXXXXXXXXXXXXXXXXXX
You are logged in as: [koyhoge@gmail.com].

引き続きどのプロジェクトを利用するかメニューで表示されますので、さきほど作成した wp-on-gae プロジェクトを選択します。

You are logged in as: [koyhoge@gmail.com].

Pick cloud project to use:
 [1] wp-on-gae-187408
 [2] Create a new project
Please enter numeric choice or text value (must exactly match list
item):

Google Compute Engine が有効化されてないけど良いと聞いてきますが、今回はGCEは使用しないので「n」にします。

Your current project has been set to: [wp-on-gae-187408].

API [compute.googleapis.com] not enabled on project [4565231767].
Would you like to enable and retry?  (Y/n)?

すると諸々のメッセージを表示して、初期化処理はおしまいです。

Not setting default zone/region (this feature makes it easier to use
[gcloud compute] by setting an appropriate default value for the
--zone and --region flag).
See https://cloud.google.com/compute/docs/gcloud-compute section on how to set
default compute region and zone manually. If you would like [gcloud init] to be
able to do this for you the next time you run it, make sure the
Compute Engine API is enabled for your project on the
https://console.developers.google.com/apis page.

Created a default .boto configuration file at [/home/koyama/.boto]. See this file and
[https://cloud.google.com/storage/docs/gsutil/commands/config] for more
information about configuring Google Cloud Storage.
Your Google Cloud SDK is configured and ready to use!

* Commands that require authentication will use koyhoge@gmail.com by default
* Commands will reference project `wp-on-gae-187408` by default
Run `gcloud help config` to learn how to change individual settings

This gcloud configuration is called [default]. You can create additional configurations if you work with multiple accounts and/or projects.
Run `gcloud topic configurations` to learn more.

Some things to try next:

* Run `gcloud --help` to see the Cloud Platform services you can interact with. And run `gcloud help COMMAND` to get help on any gcloud command.
* Run `gcloud topic -h` to learn about advanced features of the SDK like arg files and output formatting

事前準備だけでずいぶん長くなってしまいましたので、今回はここまでにします。次回はGAEにデプロイするWordPressの設定を行います。