VagrantでEcho(go言語のフレームワーク)を使ってHelloWorld

f:id:utr066:20171019223112p:plain

vagrnantでechoを使ってHelloWorldを表示させる。 goは入っている前提でいきます。

vagrant設定

使いそうなのをコメントアウト。

  config.vm.box = "centos6.7"
  config.vm.box_check_update = false
  config.vm.network "forwarded_port", guest: 80, host: 8080, host_ip: "127.0.0.1"
  config.vm.network "private_network", ip: "192.168.33.14"
  config.vm.synced_folder ".", "/vagrant"
    vb.memory = "1024"

後にlocalhostで使うので、forwarded_portを設定します。

HelloWorldを画面に表示させる

$ cd /vagrant
$ mkdir echo_sample
$ cd echo_sample

//echoインストール
$ go get github.com/labstack/echo
$ go get github.com/dgrijalva/jwt-go

https://qiita.com/ezaki/items/62e806ae42828bb3567a 上記の記事を参考に、helloworldを表示させる。

//main/go

package main

import (
    "github.com/labstack/echo"
    "./handler"
)

func main() {
    // Echoのインスタンス作る
    e := echo.New()

    // ルーティング
    e.GET("/hello", handler.MainPage())

    // サーバー起動
    e.Start(":1323")    //ポート番号指定してね
}
handler/handler.go

package handler

import (
    "net/http"
    "github.com/labstack/echo"
)

func MainPage() echo.HandlerFunc {
    return func(c echo.Context) error {     //c をいじって Request, Responseを色々する 
        return c.String(http.StatusOK, "Hello World")
    }
}

これで、サーバーを動かす。

go run main.go

localhost/helloにアクセスすれば、helloworldが表示されるはず。 だけど、このままではlocalhostにページが表示されません的なエラーが出ますね。

これはポートの開放設定を行なっていないからなので、設定をします。 https://qiita.com/ttaka66/items/63de40e76189d293f0dc

$ vagrant ssh
$ sudo vi /etc/sysconfig/iptables

//-A INPUT -p tcp -m tcp --dport 8080 -j ACCEPT追記

*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 8080 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT

ポート番号は任意のものです。今回は、8080で行きます。

vagrant reload後、再度go run main.go。 今回は、/helloでHelloWorldが表示されます。 スクリーンショット 2017-10-18 12.07.21.png

jsonを返すようにする

//main.go
//ルーティングに以下を追加
  e.GET("/api/hello", handler.ApiHelloGet())
//handler.go
//追加
func ApiHelloGet() echo.HandlerFunc {
    return func(c echo.Context) error {     //c をいじって Request, Responseを色々する 
         return c.JSON(http.StatusOK, map[string]interface{}{"hello": "world"})
    }
}
curl localhost:8080/api/hello

スクリーンショット 2017-10-18 12.36.34.png jsonでHelloWorld返却。

githubの公開鍵・秘密鍵設定方法

gitのインストール

$ brew install git
$ git --version
#=>git version 2.14.2のように表示されればok。

鍵を作る

qiita.com

上記の記事を参考に鍵を作成します。

$cd ~/.ssh

. は隠しファイルだからls -aであることを確認することができる。

.sshディレクトリに移動したら鍵を作成する。

$ssh-keygen -t rsa

パスワードの設定もできるようだけど、面倒なのでEnter連打で作成する。

すると鍵が作られますね。 .ssh以下にid_rsaとid_rsa.pubがあるのが確認できるかと思います。 id_rsa.pubが秘密鍵ですね。 こちらは自分のパソコンで持っておきます。もう一つのid_rsaが公開鍵。これをgithubに載せます。

pbcopy < ~/.ssh/id_rsa.pub

上記のコマンドで、鍵をコピーしましょう。 これをgithubに載せます。

f:id:utr066:20171002205331p:plain

githubのpersonal settingsから「SSH and GPG keys」を選択しましょう。

f:id:utr066:20171002205334p:plain

「New SSH Key」をクリック。

f:id:utr066:20171002205557p:plain

titleは適当に。 keyのところに先ほどコピーした鍵を貼り付けます。

鍵を設定したら、接続を確かめます。

$ ssh -T git@github.com

これで以下のように返ってきたらokです。

Hi (account名)! You've successfully authenticated, but GitHub does not provide shell access.

mysql エラー

railsでのエラー

<Mysql2::Error: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)>

database.ymlに書かれているsocketを確認する。

  socket: /var/lib/mysql/mysql.sock
mysql_config --socket

上記のコマンドでsocketの位置を確認することができる。ここで出てきたpathとdatabase.ymlに書かれているpathが合っていないとエラーが起こる。

表示されたpathをdatabase.ymlに記述したら動いた。