9
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

go+gin+nginx環境をec2にデプロイ

Posted at

はじめに

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を作成

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のコンソールの左側メニューからセキュリティーグループを選択し、セキュリティグループを以下のように作成します。
スクリーンショット 2020-01-26 12.10.42.png
※ 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

9
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?