2015-04-04 90 views
2

我想通过apache运行Golang cgi脚本。我可以得到编译的文件,并使用我发现的如何创建它的示例,但我不知道要添加到Apache的“添加处理程序”的文件扩展名,或者如果这是我应该告诉Apache来处理Go编译的资源。目前,当您在Web浏览器中转至cgi-bin文件时,您只需下载Unix可执行文件。 正如你所看到的,我已经尝试过.exe和.go,但这两者都不是我预期的工作,也没有。apache上的Golang CGI

<Directory "/var/www/html/cgi"> 
    AddHandler cgi-script .cgi .py .exe .go 
    AllowOverride All 
    Options +Indexes +FollowSymLinks +ExecCGI 
    Order allow,deny 
    Allow from all 
</Directory> 

另外,CGI与CGI的事吗?我一直在使用这两个来看看哪些工作,但也没有用我目前的配置。

+4

go是编译语言。不要为每次访问重新编译相同的代码。使用编译的结果(Windows上的.exe)作为cgi。看到这里:http://stackoverflow.com/questions/25325054/run-an-exe-file-on-apache – tobiash 2015-04-04 15:20:05

+0

而不是开始一个新的过程,每个“CGI”取指不离开一个真正的更好运行Web服务器(在单个服务器中执行所有基于Go的东西),并安排适当的URL指向它(例如,通过Apache的配置)?或者,也许['net/http/fcgi'](https://golang.org/pkg/net/http/fcgi/)。 – 2015-04-04 19:38:15

+0

对不起,也许我不清楚,因为我把.exe放在配置文件中,但我在linux上运行它,并没有编译超时,我编译成Unix可执行文件,但不知道如何添加该类型的文件到Apache。 我真的很想去处理像Web表单等操作,如果有帮助,可能从JavaScript发送。 – Justalilbitnerdy 2015-04-05 19:12:29

回答

1

有些服务器允许在cgi-bin之外执行cgi程序,其他服务器则需要它们在cgi-bin文件夹中。权限必须正确设置(即755或其他)

如果你决定cgi-bin目录以外执行CGI程序和服务器允许的话,这可能是一个安全问题

在许多服务器上你不不需要为主cgi-bin文件夹添加处理程序,只需通过ftp或telnet设置文件权限即可。如果您正在下载文件而不是执行该文件,您是否确定使用ftp程序设置了正确的权限?尝试755,777和其他

注意:go程序不是脚本,它是一个编译的可执行文件。使用二进制程序,您不需要解释器,因此您的服务器可能会因为需要将解释程序解释为什么而感到困惑。你只是想用exec权限运行它,而不是将它解释为脚本。

如果您不遵守标准cgi-bin文件夹设计,迁移服务器可能是一场噩梦。由于安全或其他问题,某些服务器不允许修改所有apache配置,所以当您更改托管计划的某一天时,如果使用非标准配置黑客,所有程序和文件夹结构可能会中断。

有些服务器甚至要求它们在监狱中运行,这进一步使事情变得复杂。弄清楚你的服务器是如何设置的以及它允许​​的,并研究需要执行什么权限。