go言語で書いた簡単なアプリをwebサーバを使って公開したい
go言語で書いた簡素なアプリをさくらVPSを使って公開しようとしているのですが、詰まってしまったので質問させていただきます。
net/httpモジュールを使用して、
http.ListenAndServe(":8080", nil)
のようにして8080ポートに対するリクエストを捌いてレスポンスを返すプログラムを作成しました。
htmlはServeHTTP関数の中でテンプレートを生成する形にしてあります。
main関数
func main() { var addr = flag.String("addr", ":8080", "アプリケーションのアドレス") flag.Parse() //フラグの解釈 r := newRoom() //ルート http.Handle("/", &templateHandler{filename: "chat.html"}) http.Handle("/room", r) //チャットルーム開始 go r.run() //WEbサーバ開始 log.Println("Webサーバを開始します。 ポート : ", *addr) if err := http.ListenAndServe(*addr, nil); err != nil { log.Fatal("ListenAndServe:", err) } }
試したこと
アプリをローカルでgo run したのちにブラウザ上でhttp://IPアドレス:8080を叩くと正常にテンプレートが表示され、アプリが動作しました。
このビルド済みの実行ファイルをサーバの/var/www/cgi-bin/ 下に置き、httpd.confでcgi設定をした後に http://サーバIPアドレス/cgi-bin/実行ファイル を叩くと Internal Server Error となります。
当方goでのアプリ作成もapacheを使用するのも初めてで、どこが原因でこけているのか見当がいまいちつきません。
net/httpモジュールを使ったgoアプリをapacheで公開した方などがいれば、お力を貸して頂きたいと思っています。
わかりにくい点等は聞いてくださって構いません。
よろしくお願いします。
エラー詳細
httpdのerror_logを見ると
[Sun Dec 23 19:15:10.804514 2018] [cgi:error] [pid 26719] [client 27.139.124.76:53028] AH01215: 2018/12/23 19:15:10 Web\xe3\x82\xb5\xe3\x83\xbc\xe3\x83\x90\xe3\x82\x92\xe9\x96\x8b\xe5\xa7\x8b\xe3\x81\x97\xe3\x81\xbe\xe3\x81\x99\xe3\x80\x82 \xe3\x83\x9d\xe3\x83\xbc\xe3\x83\x88 : :8080 [Sun Dec 23 19:15:15.816465 2018] [cgi:error] [pid 26708] [client 27.139.124.76:53029] AH01215: 2018/12/23 19:15:15 Web\xe3\x82\xb5\xe3\x83\xbc\xe3\x83\x90\xe3\x82\x92\xe9\x96\x8b\xe5\xa7\x8b\xe3\x81\x97\xe3\x81\xbe\xe3\x81\x99\xe3\x80\x82 \xe3\x83\x9d\xe3\x83\xbc\xe3\x83\x88 : :8080 [Sun Dec 23 19:15:15.816550 2018] [cgi:error] [pid 26708] [client 27.139.124.76:53029] AH01215: 2018/12/23 19:15:15 ListenAndServe:listen tcp :8080: bind: address already in use [Sun Dec 23 19:15:15.816715 2018] [cgi:error] [pid 26708] [client 27.139.124.76:53029] End of script output before headers: chat.cgi
のようになっております。
8080番ポートの「address already in use」エラーに関しては、lsof -i:8080 で8080番が空いていることを確認後にURLを叩いても出てくる状況です。
またURL叩いて一定時間経過後に
[Sun Dec 23 19:17:10.861682 2018] [cgi:warn] [pid 26719] [client 27.139.124.76:53028] AH01220: Timeout waiting for output from CGI script /var/www/cgi-bin/chat.cgi
というエラーが新たに追加されます。
回答2件
あなたの回答
tips
プレビュー