2014-03-01 59 views
0

對於運行每個腳本我做的:建設和運行進入腳本在Apache下FCGI

go build script.go 
mv script script.fcgi 

我的Apache的配置看起來如此:

<VirtualHost [myip]:80> 
    ServerAdmin [email protected] 
    ServerName website.com 
    DocumentRoot /home/user/www 
    RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} !-f 
     RewriteRule ^(.*)$ /our_bin [QSA,L] 
    <Directory /home/user/www> 
     Allow from all 
     RewriteEngine on 
     RewriteCond %{REQUEST_FILENAME} !-f 
     RewriteCond %{REQUEST_FILENAME} !-d [OR] 
     RewriteCond %{REQUEST_URI} ^/$ 
     RewriteRule ^(.*)$ script.fcgi/$1 [QSA,L] 
    </Directory> 
</VirtualHost> 

問題: 1)如果我建1個劇本,它會與我鏈接的所有軟件包建立在一起,對吧? 2)如何自定義FCGI去,這樣就不需要建立每

遺憾的英語不好

+1

你不能。 Go不是一種「腳本語言」,Apache不知道如何處理它(與PHP FCGI和變體不同)。您需要使用HTTP或FCGI服務器構建(編譯)您的Go應用程序,然後運行它,然後使用Apache(或nginx)將代理反轉爲Go應用程序正在偵聽的HTTP端口/ FCGI套接字。 – elithrar

+0

@elithrar發佈那個問題的答案。 –

回答

2

你不能時間。 Go不是一種「腳本語言」,Apache不知道如何處理它(與PHP FCGI和變體不同)。

您需要使用HTTP或FCGI服務器構建(編譯)您的Go應用程序,然後運行它,然後使用Apache(或nginx)將代理反轉爲Go應用程序正在偵聽的HTTP端口/ FCGI套接字。

查看文檔中的net/http文檔和simple web application教程。根據我的經驗,我建議在FCGI上使用反向HTTP代理,因爲它更容易調試/配置。

<VirtualHost myhost:80> 
       ServerName www.mydomain.com 
       ProxyPass/http://localhost:8000/ # Your Go app's listening port 
       ProxyPassReverse/http://localhost:8000/ 
</VirtualHost> 

請注意,這不是測試,也沒有一個完整的例子,但會告訴你如何開始。