🐈

Amazon Linux2 + Nginx + Go で Hello World

2020/09/24に公開

Amazon Linux2 + Nginx + Go で Hello World

事前準備

予め空のEC2インスタンスは用意しておいてください。
また、インスタンス作成時のセキュリティグループにてHTTPを許可するよう設定してください。

ハンズオン

# EC2インスタンスへのログイン
$ ssh -i example.pem ec2-user@<パブリックDNS>

# Goのインストール
[ec2-user@<ipアドレス> ~]$ sudo amazon-linux-extras install golang1.11

# Goのパス設定
[ec2-user@<ipアドレス> ~]$ vi .bashrc
# 下記の記載を追加
# export GOPATH="$HOME/go"
# export PATH=$PATH:$GOPATH/bin

# Nginxのインストール
[ec2-user@<ipアドレス> ~]$ sudo amazon-linux-extras install nginx1

# 初期設定のバックアップ
[ec2-user@<ipアドレス> ~]$ sudo cp -a /etc/nginx/nginx.conf /etc/nginx/nginx.conf.back

# Nginx の起動とインスタンス起動時自動起動の設定
[ec2-user@<ipアドレス> ~]$ sudo systemctl start nginx
[ec2-user@<ipアドレス> ~]$ sudo systemctl enable nginx
[ec2-user@<ipアドレス> ~]$ systemctl status nginx

# nginx.confの設定修正
[ec2-user@<ipアドレス> ~]$ sudo vi /etc/nginx/nginx.conf
server {
    listen       80;
    listen       [::]:80;
    server_name  _;
    root         /usr/share/nginx/html;

    # Load configuration files for the default server block.
    include /etc/nginx/default.d/*.conf;

    # 新規追加
    # /fuga にきたらローカルホストの9000ポートにプロキシする
    location /fuga {
        proxy_pass http://127.0.0.1:9000;
    }
    # ここまで

    error_page 404 /404.html;
        location = /40x.html {
    }

    error_page 500 502 503 504 /50x.html;
        location = /50x.html {
    }
}

# 設定ファイルのチェック
[ec2-user@<ipアドレス> ~]$ sudo nginx -t

# Nginx の再起動
[ec2-user@<ipアドレス> ~]$ sudo systemctl restart nginx

# Go で Hello World アプリケーションの起動
[ec2-user@<ipアドレス> ~]$ go run main.go

# 動作確認
$ curl http://<パブリックDNS>/fuga
Hello World!!!

[補足]main.goの中身

package main

import (
        "fmt"
        "net/http"
)

func main() {
        http.HandleFunc("/fuga", handler)
        http.ListenAndServe(":9000", nil)
}

func handler(w http.ResponseWriter, r *http.Request) {
        fmt.Fprint(w, "Hello World!!!")
}

参考資料

アプリケーションを自動起動したい場合

GoアプリケーションをEC2上でデーモン化する方法に続きの記事を書きました。

Discussion