1

次のコードを使用して、Apache を使用して Go アプリケーションを Web サイトとして実行できます。

こんにちは

package main

import (
    "os"
)

func main() {
    os.Stdout.WriteString("Content-Type: text/html; charset=UTF-8\n\n")
    os.Stdout.WriteString("Hello!\n")
}

.htaccess :

AddHandler cgi-script .exe

を使用してアプリをコンパイルし、期待どおりgo build hello.gohttp://localhost/hello.exe動作します。

しかし、ソースコードに変更を加えるたびに再コンパイルする必要があります。

訪問時にApache を実行するhello.go(Apache を実行する必要がある)ように指示することは何とか可能ですか? go run hello.gohttp://localhost/hello.go

ちなみに、これは開発をスピードアップするためのものであり、本番用ではありません!

4

3 に答える 3

3

Go はコンパイル済み言語なので、最初にコンパイルする必要があります。現在、Go 用のインタープリター/VM はありません。

最善の策は、.go ファイルがバイナリよりも新しいかどうかをチェックするプロセス/cron ジョブを用意し、ファイルが変更されたことに気付いたときにそれを再構築することです。

https://github.com/howeyc/fsnotifyは、ファイルの変更を監視できるパッケージです。

于 2012-10-19T15:38:23.753 に答える
2

gorunを使用すると#!/usr/bin/gorun、ファイルの先頭に行を追加して、スクリプトのように実行できます。gorun はその場でコンパイルして実行します。私は golang スクリプトを作成するためにかなり使用しましたが、CGI でも機能することを期待しています。

スクリプトを実行可能 ( ) としてマークし、拡張子が実行可能chmod +xであることを apache に伝える必要があります。.go

これを本番環境に推奨するかどうかはわかりませんgorunが、キャッシュがあるため、かなり効率的に機能するはずです。

于 2012-10-26T19:18:08.550 に答える
1

簡単な解決策は、ソース ファイルの変更時にコードを再コンパイルするツールを使用することです。たとえばGoWatch

またはfsnotify、エリックが既に述べたように、自分で試してみてください。例:単純なコンパイル デーモン

go runCGI スクリプトで呼び出すこともできます。

于 2012-10-19T17:51:05.333 に答える