😼

Go言語によるWebサーバー作成入門 ーHerokuー

2020/10/26に公開

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