0
0

More than 1 year has passed since last update.

EC2にgolangをデプロイする

Posted at

ローカル環境で開発したGoアプリをEC2へデプロイを試みる。

使用ツールは以下
・EC2(t2.micro)
・RDS(MYSQL db.t3.micro)
・Apache
・CodePipeline
・Git
・Linux

1.環境作り

・EC2(t2.micro)
・RDS(MYSQL db.t3.micro)
をコンソールで作成する。
次にAWSを使いCI/CD環境の構築を試みる。
サービスはCodePipelineを使った。
CodePipelineとは?:
https://docs.aws.amazon.com/ja_jp/codepipeline/latest/userguide/welcome.html

今回はGithubアカウントと連携して、
CodeCommitでGithubプッシュを確認→
CodeBuildでコードをビルド→
S3へ保存→
S3から保存したコードをデプロイ
という流れのCI/CD。
※CodeBuildでコードをビルドするにはbuildspec.ymlファイル、CodeDeployにはappspec.ymlのファイルが該当のソースコードのルート先に必要なようです。

詰まったとこ

最低限の設定でコミットからデプロイまで試したが、buildspec.ymlファイルをビルドコマンドだけ用意した

version: 0.2
phases:
  build:
    commands:
      - GOOS=linux GOARCH=amd64 go build  main.go

これで試してもデプロイ段階でエラーがでてしまった。

version: 0.2
phases:
  build:
    commands:
      - GOOS=linux GOARCH=amd64 go build  main.go
artifacts:
    files:
        - '**/*'

artifactsの部分でビルドしたコードの出力先を指定しているらしい。この場合既存のS3バゲットへしっかり保存された。

これでGithubのプッシュからデプロイまで自動化された。

2.サーバへデプロイ

ひとまずCodeDeployによってビルドされたコードが/var/www/html下に展開された。

環境構築を一通り
EC2へssh接続→
各種インストール(Apache,MySQL,go,etc...)→
MySQLコマンドでDB、ユーザ作成&ローカルからインポート

詰まったとこ

ひとまずビルドされた/var/www/html下にあるバイナリファイル(main)をコマンドラインから実行

./main
接続成功

このままIPアドレスへアクセスしても、Apacheのテストページが表示される。。
/etc/httpd/confにあるhttpd.confを編集する必要がありそう。

<VirtualHost *:80>
    ProxyPreserveHost On
    ProxyRequests Off
    ProxyPass / http://localhost:8080/
    ProxyPassReverse / http://localhost:8080/
</VirtualHost>

webアプリはFastCGIサーバーとして起動する必要があるようで、ApacheのVirtualHost設定で、FastCGIサーバーにアクセスするためのプロキシ設定を上記のように追加。

Apacheを再起動して再びパブリックIPへアクセスすると→
アプリのトップ画面が表示!

0
0
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
0
0