2015-04-04 51 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配置,所以當您更改託管計劃的某一天時,如果使用非標準配置黑客,所有程序和文件夾結構可能會中斷。

有些服務器甚至要求它們在監獄中運行,這進一步使事情變得複雜。弄清楚你的服務器是如何設置的以及它允許​​的,並研究需要執行什麼權限。