rakumoコンサルティング部の小山(@koyhoge)です。
既存のWordPressをGCPに移行する解説記事の2回目です。
- 第1回 構築済のWordPressをGoogle App Engineに移行する(1)
- 第2回 構築済のWordPressをGoogle App Engineに移行する(2)
- 第3回 構築済のWordPressをGoogle App Engineに移行する(3)
- 第4回 構築済のWordPressをGoogle App Engineに移行する(4)
- 番外編 構築済のWordPressをGoogle App Engineに移行する(費用編)
前回に引き続き、具体的な移行作業について解説します。
今回の移行手順
今回の移行手順は以下の順番で進んでいきます。こうして並べると手順が多いように感じますが、特にセットアップ系は慣れればさほど大変ではありません。クラウドサービスを使う際にはどうしても必要なことなので慣れていきましょう。
- WordPressのデータエクスポート
- GCP環境のセットアップ
- プロジェクトの作成
- CloudSQLの設定
- GAEコンソールの設定
- Cloud SDK のインストール
- WPonGAEのセットアップ
- GAEにデプロイ
- GAE上のWordPressのインストール
- データを新環境にインポート
- DNSの切り替え
ではこれらの手順を順番に追っていきます。
WordPressデータのエクスポート
まず最初に、動作しているWordPressのデータをエクスポート機能を使ってファイルに書き出します。ダッシュボードの「ツール」メニューから「エクスポート」を選択し、
エクスポート管理画面の「すべてのコンテンツ」を選択して「エクスポートファイルをダウンロード」ボタンを押します。すると<ブログ名>.wordpress.<日付>.xml というファイルがダウンロードされます。識別子から分かるように、これはコンテンツの情報を格納したXMLファイルになります。
このXMLデータは、後の手順でGAE上の新環境にインポートすることになります。
GCPの環境セットアップ
それではいよいよ移行先の GCP 環境の設定を行っていきます。GCPのアカウント作成に関しては詳しく解説しませんが、まだアカウントをお持ちでない場合は、GCPのトップページの「無料トライアル」からアカウントを作成して下さい。
プロジェクトの作成
GCPに限らずGoogleのAPIを使用するには、まず開発者向けダッシュボードで「プロジェクト」を作成する必要があります。各種リソースや課金情報はプロジェクト単位で管理されます。新規にアカウントを作成した場合は「My First Project」というプロジェクトが自動で作成されています。
新しくプロジェクトを作成するには、GCPのコンソール画面の上部メニューからプロジェクトの選択ボタンを押し、
そこで表示されるダイアログの右端にある「+」ボタンクリックします。
プロジェクト名を入力する画面になるので、任意の文字列を入力します。今回のプロジェクト名は「wp-on-gae」としました。
ここから先、いくつかの GCPサービスの設定をしていきますが、すべてこの「wp-on-gae」プロジェクトで行うこととします。
Cloud SQLの設定
まずはWordPressのバックエンドデータベースであるMySQLの移行先として、Cloud SQLの設定をしましょう。Cloud SQLはクラウド上で動作するフルマネージドなRDBMSで、
GCPコンソールの左上にある「三」のような形の「ハンバーガーメニュー」ボタンを押して、サービスメニューを開き、
下の方にスクロールすると表示される「SQL」を選択します。
まだCloud SQLのインスタンスが存在しない場合は、新規作成画面になります。
まず MySQL と PostgreSQLの選択画面になりますので、MySQLを選択します。
「MySQL インスタンスタイプの選択」では「第2世代を選択」を選びます。
「MySQL 第2世代インスタンスの作成」で必要項目を入力します。
- 「インスタンスID」は「wp-on-gae-mysql」としました。
- 「rootパスワード」は右端の「生成」ボタンを押して自動生成しました。
- 「リージョン」は、東京リージョンにしたいので「asia-northeast1」としました。
- 「ゾーン」はどれでも良いですが、今回は「asia-northeast1-c」にしました。
必要事項を入力して「作成」ボタンを押すと、しばらく時間をおいたあと、無事にMySQLのインスタンスが立ち上がります。
インスタンスのリスト表示内の「インスタンス接続名」は後で必要になるのでメモっておきます。今回は「wp-on-gae-187408:asia-northeast1:wp-on-gae-mysql」でした。
GAEの設定
次に WordPress の実行環境となる Google App Engine(GAE) の設定を行います。サービスメニューから「App Engine」を選択しGAE の設定画面に入ります。
「初めてのアプリへようこそ」という画面でチュートリアルがはじまるように見えます。とりあえず「言語を選択」して先に進みます。
WordPressはPHPで作られているので「PHP」を選択します。
次に「ロケーションを選択」します。国内からのアクセスを想定するので「asia-northeast1」を選択します。
「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の設定を行います。