我可以使用以下代码将Go应用程序作为Apache的网站运行。
hello.go :
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.go
编译应用,然后转到http://localhost/hello.exe
按预期工作。
但是现在我必须在源代码中进行的每次更改后重新编译。
在访问hello.go
时,是否可以告诉Apache运行go run hello.go
(Apache应该运行http://localhost/hello.go
)?
顺便说一下,这只是为了加快开发速度,而不是为了生产!
答案 0 :(得分:3)
Go是一种编译语言,您需要先编译它。目前还没有针对Go的任何口译员/虚拟机。
最好的办法是让一个进程/ cron作业检查.go文件比二进制文件更新,并在注意到文件发生更改时重建它。
https://github.com/howeyc/fsnotify是一个允许您观看文件以进行更改的软件包。
答案 1 :(得分:1)
一个简单的解决方案是使用一个工具,在源文件的更改中重新编译代码。例如GoWatch
。
或者像Erik已经说过的那样使用fsnotify
自己尝试一下。示例:Simple Compile Daemon。
您也可以在CGI脚本中调用go run
。
答案 2 :(得分:1)
您可以使用gorun,这样您就可以在文件顶部放置#!/usr/bin/gorun
行,以便像脚本一样运行。 gorun会在运行中编译它然后运行它。我已经用它来制作golang脚本了,我希望它也适用于CGI。
您必须将脚本标记为可执行文件(chmod +x
)并告诉apache .go
扩展名是可执行的。
我不确定是否会将其推荐用于制作,但由于gorun
有缓存,因此它应该合理有效。