🐈
Amazon Linux2 + Nginx + Go で Hello World
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!!!")
}
参考資料
- 【EC2】Amazon Linux2にGolangの1.11をインストールする
- 【AWS】EC2にNginxをインストールして Hello, World! を表示させる
- Nginx + GolangでWebアプリケーション開発 ~http編~
アプリケーションを自動起動したい場合
GoアプリケーションをEC2上でデーモン化する方法に続きの記事を書きました。
Discussion