uokadaの見逃し三振は嫌いです

ここで述べられていることは私の個人的な意見に基づくものであり、私が所属する組織には一切の関係はありません。

GoでHTTPサーバーをFCGIサーバーに変えるための変更点

netとfcgiモジュールを導入するだけで簡単に対応できた。 もっと変更点あるかと思ったが差分とったらこれぐらい。

% diff -w -U1 backendserver.go fbackendserver.go
--- backendserver.go  2014-12-13 22:27:16.000000000 +0900
+++ fbackendserver.go 2014-12-13 22:35:02.000000000 +0900
@@ -6,3 +6,6 @@
  "io"
+   "log"
+   "net"
  "net/http"
+   "net/http/fcgi"

@@ -27,3 +30,8 @@
  http.Handle("/", r)
-   http.ListenAndServe(":8080", nil)
+   listen, _ := net.Listen("tcp", ":8080")
+   err := fcgi.Serve(listen, r)
+   if err != nil {
+       log.Printf("error : %s", err)
+   }
+
 }

nginxの設定についてはこの辺参照した。 locationのところを変更するだけ。

                fastcgi_pass 127.0.0.1:8080;
                include fastcgi_params;

PHPFcgiExample - Nginx Community

package main

import (
    "fmt"
    "log"
    "net"
    "net/http"
    "net/http/fcgi"

    "github.com/gorilla/mux"
)

func main() {
    r := mux.NewRouter()
    r.HandleFunc("/", HomeHandler)
    http.Handle("/", r)
    listen, _ := net.Listen("tcp", ":8080")
    err := fcgi.Serve(listen, r)
    if err != nil {
        log.Printf("error : %s", err)
    }

}

func HomeHandler(w http.ResponseWriter, r *http.Request) {
    fmt.Fprintln(w, "Hello World!")
}

Go言語プログラミング入門on Google App Engine

Go言語プログラミング入門on Google App Engine