GCP上でGO言語を動かす場合、一番最初に思い浮かぶのはGAE/GOだと思いますが、中にはGCE上で一からGO言語の環境を設定したいという開発者もいるかと思います。今回はGoogle Compute Engine(以下GCE)上でGO言語を動作させるための手順について説明します(※1)。
※1 GAE上でGOを動作させるための手順については以下をご参考ください。
「PaaS最前線!たったの15分でできるGAE/GO入門!」
https://apps-gcp-tokyo.appspot.com/gae-go-gettingstart-01/
GCPプロジェクトの作成
GCEを利用する場合、GCPプロジェクトの作成をおこなう必要があります。以下URLの「GCPプロジェクトの作成(1)~(3)」を参考にプロジェクトの作成をおこなってください。
-GCPプロジェクトの作成
https://apps-gcp-tokyo.appspot.com/bigquery-introduction/#GCP
GCEインスタンスの作成
GCEインスタンスの作成方法について説明します。以下の手順に従って、GCPの管理コンソールからVMインスタンスの作成をおこなってください(※2)。
※2 VMインスタンスの作成は後述するGoogle Cloud SDKのgcloudコマンドでも作成可能ですが本記事ではGCP管理コンソール上での作成方法を説明します。
- GCP管理コンソールにアクセスしGoogleアカウントでログインします。
https://console.cloud.google.com/ - 画面左上のメニューアイコンをクリックし、メニューが開いたら「Compute Engine」を選択します。
- VMインスタンスの管理画面に遷移後、「Create Instance」ボタンを押下します。
- VMインスタンス作成画面に遷移したら、以下項目を入力します。
- 「Boot disk」の「Change」ボタンを押下してOSの変更をおこないます。デフォルトでは「Debian GNU/Linux 8」となっています。
- Boot diskに「CentOS 7」を選択し「Select」ボタンを押下します。
- OSの選択が完了したら画面下にある「Create」ボタンを押下して、VMインスタンスの作成を実行してください(※3)。
※3 追加ディスク・ネットワーク・SSHキー設定等、VMインスタンスの作成画面ではさまざまな設定をおこなうことができますが、本記事の内容では不要な設定のためデフォルト設定のままVMインスタンスの作成を実行します。
- インスタンスの作成が完了すると、さきほど作成したVMインスタンスが一覧として表示されます。
以上でVMインスタンスの作成は完了となります。
GCEインスタンスにSSH接続する
GCPユーザは、Google Cloud SDKのgcloudコマンドによってVMインスタンスに対するSSH接続を実行することができます。本章ではgcloudコマンドによるSSH接続の手順について説明します。
- Google Cloud SDKのインストール
以下のURLからSDKのダウンロードをおこなってください。SDKの対応OSは3種類ありますので、環境に合わせてダウンロードをおこなってください。- -Linuxの場合
https://cloud.google.com/sdk/downloads#linux - -Mac OS Xの場合
https://cloud.google.com/sdk/downloads#mac - -Windowsの場合
https://cloud.google.com/sdk/downloads#windows
- -Linuxの場合
- SDKのインストールが完了したらターミナルを立ち上げ以下のコマンドを実行してください。
コード$ gcloud auth login
- コマンドを実行すると、認証URLが発行されますので、ブラウザから認証URLにアクセスし、「許可」ボタンを押下してください。
コード$ gcloud auth login Your browser has been opened to visit: https://accounts.google.com/o/oauth2/auth?redirect_uri=http%3A%2F%2Flocalhost%3A8085%2F&prompt=select_account&response_type=code&client_id=32555940559.apps.googleusercontent.com&scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fuserinfo.email+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fcloud-platform+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fappengine.admin+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fcompute&access_type=offline
- 認証の完了
「You are now logged in as [******@gmail.com].」というようなメッセージがコマンドライン上に出力されれば認証は成功となります。
コード$ gcloud auth login Your browser has been opened to visit: https://accounts.google.com/o/oauth2/auth?redirect_uri=http%3A%2F%2Flocalhost%3A8085%2F&prompt=select_account&response_type=code&client_id=32555940559.apps.googleusercontent.com&scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fuserinfo.email+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fcloud-platform+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fappengine.admin+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fcompute&access_type=offline Saved Application Default Credentials. You are now logged in as [******@gmail.com].
- 次はgcloudコマンドで操作するプロジェクトを設定します。以下のコマンドを実行し、操作対象のプロジェクトを設定してください。<project>に指定するのは、あなたが作成したプロジェクトのIDとなります。
コード$ gcloud config set project <project>
- 以下のコマンドを実行しVMインスタンスにSSH接続してください。「instance-1」はインスタンス名で、「asia-east1-a」は接続するVMインスタンスのZoneとなります。
コード$ gcloud compute ssh instance-1 --zone asia-east1-a
以上でVMインスタンスへの接続手順は完了です。
GOのインストールと環境設定
CentOSにGOをインストール手順について説明します。以下の手順に従ってGOのインストールを完了させてください。
- 任意のインストール先フォルダに移動後、wgetコマンドでGO言語のダウンロードをおこないます。
コード$ cd /usr/local/src $ sudo wget https://storage.googleapis.com/golang/go1.6.2.linux-amd64.tar.gz
- 以下のコマンドからダウンロードファイルの展開をおこないます。
コード$ sudo tar -C /usr/local/ -xzf go1.6.2.linux-amd64.tar.gz
- 展開したら、PATHの設定をおこないます。
コード$ export PATH=$PATH:/usr/local/go/bin
- 以下のコマンドを実行しGO言語のバージョンが表示されればインストールは完了です。
コード$ $ go version go version go1.6.2 linux/amd64
GOを実行する
最後は実際にGOのプログラムを実行してみます。以下の手順に従ってGOの実行をおこなってみましょう。
- viコマンドで以下のサンプルファイルを作成します。
コードpackage main import "fmt" func main() { ???fmt.Printf("hello, world\n")}
- runコマンドを実行して(1)のサンプルコードを実行します。
コード$ go run hello.go
- 以下のように「hello, world」と表示されれば実行は成功となります。
コード$ go run hello.go hello, world
まとめ
以上でGCE上でGO言語を動作させるための手順は完了となります。次回は応用編として、今回作成したGCEインスタンスとLINE BOT APIを連携するための手順について説明します。次回記事は予告なしにリリースされますので、ぜひapps-gcpを定期的にチェックしてください!!