Go言語 導入 (Ubuntuへの環境構築編)
最近フロントエンドを主に進めていたので、そろそろサーバサイドもやっていきたいなと思う今日この頃。
今までnodejsやdjango(python)とか使って見たけど、”別の言語学んでみたいな”と思い調べてみたところ、
最近はGo言語が徐々に伸びているとのこと。
ちょっと使って見ようかな?と思い、まずは環境構築を行うことにしました。
と思ったら、環境構築からエラー続きで躓いてしまったので今後困らないように備忘録残しておこうと思います。
■環境構築
今回用いた環境はこちらになります。
・ホストOS:WIndows10 ・VM:VirtualBox 6.1.4 ・ゲストOS:Ubuntu16.04
まずGoをインストールします。
sudo apt install golang
そして、動作確認のためのHello Worldを表示するこちらのソースを作成。
package main import "fmt" func main(){ fmt.Printf("Hello World \n"); }
こちらのコマンドで実行!!
go run ファイル名.go
問題なく"Hello World"が表示されました。
■Go言語のWebアプリケーションフレームワークインストール
次にWebアプリケーションフレームワークであるGinをインストールします。
go get github.com/gin-gonic/gin
って、あれ?? 上手くいかない。。。
どうやらパスを通さなければならないらしいので、
こちらをbash_profileに書き込み。
export GOPATH=$HOME/go export GOBIN=$GOPATH/bin export PATH=$PATH:$GOBIN
再起動を行って、もう一度Ginをインストール!!
。。。ダメやった泣
なぜや泣
こんなエラーが発生する。。。
Get compile error undefined: http.SameSite
色々調べてみると、どうやらバージョンが1.11以上でないとhttp.SameSiteが使えない模様。
早速こちらのコマンドでバージョンを確認したところ、1.6だった。。。
だから動かいないんじゃん!!
go version
ということで、go言語のバージョンアップを行うことにしました。
■go言語バージョンアップ
どうやってやるのだろう。。。apt-getを用いてダウンロードすると1.6になってしまうし。
調べてみるとこちらも手順があったので忘れないように残しておきます!!
まずバージョンを指定してインストールを実施。
sudo apt install golang-1.11
次にシンボリックリンクを再設定。
※こちらを実施しないとバージョン1.6のままになってしまうので注意
cd /usr/bin sudo mv go go_back ←バックアップとして残しておく sudo mv gofmt gofmt_back ←バックアップとして残しておく sudo ln -s /usr/lib/go-1.11/bin/go /usr/bin/go sudo ln -s /usr/lib/go-1.11/bin/gofmt /usr/bin/gofmt
最後にバージョンを確認。
$ go version go version go1.11.5 linux/amd64
そして、GInを再度インストールすると、、、OK!!できました!!
■サーバサイド実装
早速GInフレームワークを用いて動作確認!!
一旦、サンプルを展開してくれている方のソースをそのまま利用。
package main import "github.com/gin-gonic/gin" func main() { r := gin.Default() r.GET("/ping", func(c *gin.Context) { c.JSON(200, gin.H{ "message": "pong", }) }) r.Run() // listen and serve on 0.0.0.0:8080 (for windows "localhost:8080") }
こちらを保存して、
go run ファイル名.go
を実行!!
Webブラウザでアクセスしたところ、問題なく表示されることを確認。
ふぅ~~なんとかできたw