post Image
Go を レンタルサーバーで動かす方法

Goで作ったプログラムをレンタルサーバー上(FastCGI)で動かす方法がないか調べたけど、
情報が見つかりにくかったので備忘録も兼ねて残しておく。

環境

以下が使えるレンタルサーバー

  • FastCGI
  • .htaccessファイルの変数ができること
  • Linux環境?

Go自体は標準機能だけでいけるっぽい(詳細未調査)

以下のソース内容が参考になりました。
https://github.com/bsingr/golang-apache-fastcgi

方法

方法と言っても難しいものでもなく、fcgi.Server()関数にnilを与えてやるだけだった。

sample.go

package main

import (
        "html/template"
        "log"
        "net/http"
        "net/http/fcgi"
)

func handler(w http.ResponseWriter, r *http.Request) {
        headers := w.Header()
        headers.Add("Content-Type", "text/html")
        t := template.Must(template.New("sample").Parse(samplepage))
        t.Execute(w, r)
}

func main() {
        http.HandleFunc("/", handler)

        var err error
        err = fcgi.Serve(nil, nil)
        if err != nil {
                log.Fatal(err)
        }
}

const samplepage = `
<!doctype>
<html>
<head>
        <meta charset='utf-8'>
        <title>Work on Go</title>
</head>
<body>
        <h1>Hello world from Go!</h1>
        <table>
                <tr><td>Method</td><td>{{.Method}}</td></tr>
                <tr><td>URL</td><td>{{.URL}}</td></tr>
                <tr><td>URL.Path</td><td>{{.URL.Path}}</td></tr>
                <tr><td>Proto</td><td>{{.Proto}}</td></tr>
                <tr><td>Host</td><td>{{.Host}}</td></tr>
                <tr><td>RemoteAddr</td><td>{{.RemoteAddr}}</td></tr>
                <tr><td>RequestURI</td><td>{{.RequestURI}}</td></tr>
                <tr><td>Header</td><td>{{.Header}}</td></tr>
                <tr><td>Body</td><td>{{.Body}}</td></tr>
        </table>
</body>
</html>
`

あとは実行権限を与えてやるのと、.htaccess に以下を記述するだけ。
(レンタルサーバーによってはなくてもいけるかも)

.htaccess

<IfModule mod_fcgid.c>
AddHandler fcgid-script .fcgi
</IfModule>

とりあえず、Xサーバーでは動作しました。

これでうまく動くようだったら、
ホストサーバーのライブラリなどに依存しないので、
アプリケーションの配布が用意になるだろうな~と思いました。

経緯

Go覚えてみたいけど、簡易的に動作できる方法はないかと思って調べてみたところ、
FastCGIプロセスで動かす方法があまりなかったので備忘録がてら投稿してみました。


『 Go 』Article List
Category List

Eye Catch Image
Read More

Androidに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

AWSに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Bitcoinに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

CentOSに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

dockerに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

GitHubに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Goに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Javaに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

JavaScriptに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Laravelに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Pythonに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Rubyに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Scalaに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Swiftに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Unityに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Vue.jsに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Wordpressに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

機械学習に関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。