[GCP] GCEにGo Revelの環境を構築してデプロイ

### 環境構築
1.ローカルにGCloudをインストール
$ curl -O https://dl.google.com/dl/cloudsdk/channels/rapid/downloads/google-cloud-sdk-363.0.0-linux-x86_64.tar.gz
$ tar -zxvf google-cloud-sdk-363.0.0-linux-x86_64.tar.gz
$ ./google-cloud-sdk/install.sh
$ ./google-cloud-sdk/bin/gcloud init
Your Google Cloud SDK is configured and ready to use!
$ pwd
/home/vagrant/gcp/

$ cd ~
$ sudo vi .bash_profile

source /home/vagrant/gcp/gcpgoogle-cloud-sdk/completion.bash.inc
source /home/vagrant/gcp/gcpgoogle-cloud-sdk/path.bash.inc
$ source ~/.bashrc

2.GCPでGCEの作成
Region: asia-northeast1(Tokyo)
Zone: asia-northeast1-a
Machine Series: E2
Machine Type: e2-micro(2 vCPU, 1GB memory)
Boot disk: Ubuntu20.04LTS ※defaultだとDebianになっているので、 ubuntuに変更する
Access Scope: Allow default access
Firewall: Allow HTTP traffic
-> create
-> 設定した内容で作られているかinstancesのviewで確認できる

gcloudによる接続確認
$ gcloud compute ssh instance-3

3.GCE(ubuntu20.04)にGoのインストール
$ sudo apt install golang-go
$ sudo apt-get install –reinstall ca-certificates
$ git config –global http.sslverify false
$ go get github.com/revel/revel
$ go get github.com/revel/cmd/revel
$ go get github.com/cbonello/revel-csrf
$ go get github.com/vansante/go-ffprobe
$ go get github.com/aws/aws-sdk-go
$ go get github.com/go-sql-driver/mysql

$ cd go/src/github.com
$ mkdir me

4.GCEにデプロイ
$ gcloud compute scp –recurse go/src/github.com/me/prd instance-3:/home/vagrant/go/src/github.com/me –zone asia-northeast1-a

5.GCEにmysqlインストール
$ sudo apt update
$ sudo apt install mysql-server
$ sudo mysql –defaults-file=/etc/mysql/debian.cnf
mysql> ALTER USER ‘root’@’localhost’ IDENTIFIED WITH mysql_native_password BY ‘${new password}’;
$ mysql -u root -p
mysql> create database test;
mysql> use test;

create table users(
id int primary key auto_increment,
name varchar(255) unique,
email varchar(255),
password varchar(255),
filepath varchar(255),
message text
);
insert user
mysql> insert into users(name, password) values (‘user1’, ‘5f4dcc3b5aa765d61d8327deb882cf99’);

sudo vi /home/vagrant/go/src/github.com/me/prd/conf/app.conf
http.port = 80

firewall設定
GCPホーム > ネットワーキング > VPCネットワーク > ファイアウォールルール

項目 入力例
名前 default-allow-9000
説明 Allow 9000 from anywhere
ログ オフ
ネットワーク default
優先度 1000
送信 / 受信 上り
一致したときのアクション 許可
ターゲット タグ use-9000
IP 範囲 0.0.0.0/0
プロトコルとポート tcp:9000

GCE
GCPホーム > コンピューティング > Compute Engine > VMインスタンス
ファイアウォール ネットワークタグ に先ほどのターゲットタグである「use-9000」追記

/home/vagrant/go/bin/revel run -a prd
${externalIP}:9000 で動作確認

ぎゃああああああああああああああああああああああああああああ