轉載請注明原作者
安裝nginx###
最近要搭http服務器,經過谷歌和請教高手,決定選擇nginx,在window上搭建nginx,網上一大堆,都挺好使的,我參照的是:(原)nginx+FastCGI+c++。nginx安裝后,啟動的時候遇到了這個為問題:Win7下Nginx啟動失敗,80端口被占用然后在Win7下Nginx啟動失敗,80端口被占用找到了解決方法。
現在要說道問題的重點了,因為我是要用C++來處理前端的request,在網上找了下,大部分都是關于PHP的,有用C++的,也寫的不是很清楚,我就繼續谷歌,發現了一個老外的blog How to run fastcgi and nginx on windows,與我的需求很匹配,說的就是我需要解決的問題。具體參照過程中也遇到一些問題, 大概記錄了下,現整理如下:
1. 下載了patch-2.5.9-7-bin.zip
在使用立馬說的patch工具時出現了問題,發現不能用,然后下載了patch-2.5.9-7-bin.zip,注意window下使用exe文件需要加絕對路徑的。然后執行bin目錄下的可執行文件。
2. 下載fcgi.tar.gz
解壓后,需要重新編譯生成二個文件libfcgi.dll和libfcgi.lib。但是因為fcgi.tar.gz包中window相關的太老了,還是支持VC6,我們現在都是VS2010,或者更高的版本,直接打開,根本不行。這個時候就要用到patch工具了,網上有相關的patch,分別是:
1-align-x64.patch
2-socklen.patch
3-gcc44.patch
4-vc9.patch
5-build-warnings.patch
用patch去執行這5個文件,然后就可以支持VS2010了,這樣就可以去生成libfcgi.dll和libfcgi.lib文件了
3. 把libfcgi.dll文件拷貝到C:\nginx-1.8.0
需要把libfcgi.dll文件拷貝到C:\nginx-1.8.0,準確的說應該是與spawn-fcgi.exe同一個目錄下,因為我的spawn-fcgi.exe是放在C:\nginx-1.8.0,所以我的libfcgi.dll也是放在C:\nginx-1.8.0
4. 重啟nginx
最后執行的時候,發現既然不成功,后面想了一下,應該是我改了nginx.conf,卻沒有重啟nginx導致的,后面執行nginx -s reload,就可以了
備注###
1. nginx用到的命令整理:
start nginx 啟動Nginx服務器
nginx -s stop // 停止nginx
nginx -s reload // 重新加載配置文件
nginx -s quit // 退出nginx
**2. spawn-fcgi.exe命令:### **
spawn-fcgi.exe -f ./cgi-bin/echo-cpp.exe -a 127.0.0.1 -p 8089
3. 查看進程:
tasklist | findstr "imagename eq nginx.exe" //列出nginx.exe進程
tasklist | findstr “PID號”
netstat -ano | findstr "8081" //找到8081端口的進程的PID