はじめに
web初心者が簡単なgoアプリケーションをec2にデプロイしてみました。
色々おかしなところがあると思いますので、何かありましたら、ご指摘いただけると幸いです。
githubを介してEC2インスタンスにプロジェクトファイルをあげるので、ローカルで開発したgoアプリケーションはgithubのリポジトリに上げておいてください。
EC2インスタンス作成
AWSコンソール画面から EC2 > サービス > インスタンス > インスタンスの作成の手順でインスタンスを作成していきます。
今回はAMIにubuntuを選択して、そのほかの設定はデフォルトです。
インスタンスの接続に必要なキーペアも新規に作成してダウンロードします。名前はわかりやすいものにしてください。
キーペアのダウンロードが終わったら、キーペアがあるディレクトリに移動し、パーミッションを設定します。
$ chmod 400 [キーペアの名前].pem
EC2インスタンスにssh接続
インスタンスが起動できたら、キーペアがあるディレクトリに移動して以下のコマンドでインスタンスにssh接続します。
$ ssh -i "[キーペアの名前].pem" ubuntu@[インスタンスのパブリックDNS]
必要なパッケージのインストール
go
https://golang.org/dl/ から、Linux用のtar.gzのURLをコピーし、以下のコマンドを実行。
今回はgo1.13.6をダウンロード。
$ wget https://dl.google.com/go/go1.13.6.linux-amd64.tar.gz
ダウンロードできたら展開して配置し、パスを通します。
$ sudo tar -C /usr/local -xzf go1.13.6.linux-amd64.tar.gz
$ export PATH=$PATH:/usr/local/go/bin
$ exec $SHELL -l #shellの再起動
パスが通っているか確認します
$ go version
go version go1.13.6 linux/amd64
nginx, sqlite3
次にnginxとsqlite3をダウンロードします。
$ sudo apt-get install nginx
$ sudo apt-get install sqlite3
$ which nginx # 確認
$ which sqlite3 # 確認
プロジェクトファイルをクローン
あらかじめgithubのリポジトリに上げておいたgoアプリケーションをクローンします。
$ git clone 'gitリポジトリのパス'
gccのインストール
go-sqlite3でgccがいるっぽいんでインストール
$ sudo apt install gcc
必要なパッケージをインストール
$ go get "github.com/gin-gonic/gin"
$ go get "github.com/jinzhu/gorm"
$ go get "github.com/mattn/go-sqlite3"
build
buildする前にアプリケーションがきちんと動くか確認。
きちんと動くことが確認できたらビルド。
$ go build main.go
nginxの設定
/etc/nginx/conf.d/にgin.confを作成
server {
listen 80;
server_name 13.231.121.27;
location ~ / {
proxy_pass http://127.0.0.1:8080;
}
}
nignxを起動
$ sudo systemctl start nginx
EC2のセキュリティグループの設定
EC2のコンソールの左側メニューからセキュリティーグループを選択し、セキュリティグループを以下のように作成します。
※ sshのソースは自分のグローバルIPアドレスです。マイIPを選択すると自動で入力されます。
次に、インスタンス一覧から実行中のインスタンスを右クリック > ネットワーキング > セキュリティグループの変更 で先ほど作成したものを選択してください。
ブラウザで確認
EC2インスタンスのパブリックIPをブラウザに入力してアクセスします。
確認できてたらokです。
参考
https://qiita.com/Dragon-taro/items/09a67b93093770348ce5
https://qiita.com/notchi/items/5f76b2f77cff39eca4d8
https://qiita.com/Utr/items/9469c1611abe8a0a3486