😼
Go言語によるWebサーバー作成入門 ーHerokuー
(作成2020.10.26)
Heroku を使ってみようと思っていろいろ苦労した
HerokuでWebサーバーを立ち上げてみようとチュートリアルを進めていったが、途中、ローカルチェックのところで文字化けのエラーが吐き出されうまくいかない。サポートに照会メールを送ったものの返事がなく途方にくれていたが、ローカルチェックは使わなくても代替手段があったので、メモしておきます。
そもそもチュートリアルが古そう
公式サンプルでは
「govendor init を使ってマニフェストを生成」
となっているけど古い!今の時代はgo modules!ということで、go modulesを使ったやり方を書いていきます。go modulesそのものについては過去にこちらに記載しています。
Process
goのversionは1.15.2で試しました。とりあえずまっさらのディレクトリを作成してここで作業します。
mkdir dirname
cd dirname
次に、goファイルを作成します。ポートの指定のところで次にように書いておけば、ローカルチェックはいつもどおり、go run main.goをやってブラウザを立ち上げてアドレスバーにlocalhost:8080と打てば動作確認でき、同じファイルをHerokuサーバーにアップもできます。
main.go excerpt
port := os.Getenv("PORT")
if port == "" {
port = "8080"
}
http.ListenAndServe(":"+port, nil)
次はHeroku側のお作法になります。まずProcfileというのを作成します。拡張子は不要です。
$ touch Procfile
$ code Procfile
Procfile
web: bin/dirname
ローカル側でgo modulesを仕込みます。javascriptと違って、golangの場合はパッケージをまとめておくのが必要でした。
$ go mod init
$ go build
GitでまとめてからHerokuサーバーを新規作成しプッシュします。最後の1行でブラウザが立ち上がります。
$ git init
$ git add .
$ git commit -m "first commit"
$ heroku create
$ git push heroku master
$ heroku open
Discussion