我是在Red Hat 5.8 的虛機上安裝的。
Nginx的一些模塊需要其他第三方庫的支持,例如gzip模塊需要zlib庫,rewrite模塊需要pcre庫,ssl功能需要openssl庫等。建議把這些庫都安裝上。
安裝 PCRE
PCRE(Perl兼容正則表達式,Perl Compatible Regular Expressions),一個由Philip Hazel開發的,為很多現代工具所使用的支持正則表達式的函數庫。
編譯Nginx時需要用到PCRE,同時Nginx的Rewrite和http模塊也要用到PCRE的語法!需要安裝pcre包pcre-devel包。pcre包負責提供庫的編譯版本,pcre-devel包提供編譯項目時用到的開發頭文件和代碼!
PCRE在linux系統里被其它的軟件所依賴,所以一般的linux系統里都會裝有,但是否是最新版本,是否滿足要求,那就得看需求了。如果滿足不了的話,還是需要編譯安裝最新版本的pcre軟件。
檢查系統中是否安裝了PCRE軟件
系統里是否安裝了pcre軟件,我們可以使用rpm 命令進行查詢,如下命令
rpm -qa pcre
如果沒有顯示則表示還沒有安裝,如果顯示了,剛表示安裝了。如下圖
上圖表示系統已經安裝過 pcre-6.6-9.e15 版本,但是沒有安裝 pcre-devel。
如果需要新版本,則需要卸載掉就版本,然后安裝新版本。相關方法參看:
http://jingyan.baidu.com/article/f7ff0bfc6bc0472e26bb13bf.html
安裝方法:
yum install pcre pcre-devel
yum 安裝的文件可以用下面命令來找安裝在那個目錄下:
rpm –ql pcre
參考: http://blog.csdn.net/ngvjai/article/details/7997743
安裝 openssl
安裝方法:
yum install openssl openssl-devel
在安裝 openssl 時,會把我們需要的其他 zlib庫也做了安裝。
安裝 lua
yum安裝:
yum install lua lua-devel
安裝Lua或者LuaJIT都是可以的,但是出於效率的考慮,推薦安裝LuaJIT。下面的源碼例子就是安裝LuaJIT
源碼安裝:
lua下載地址: http://luajit.org/
我這里下載的是:LuaJIT-2.0.1.tar.gz 下載在 /usr/local/src 目錄下。
安裝命令:
cd /usr/local/srctar zxvf LuaJIT-2.0.1.tar.gz
cd LuaJIT-2.0.1
make
make install
因為安裝在缺省路徑,所以LuaJIT對應的lib,include均在/usr/local目錄里。
參考:
http://huoding.com/2012/08/31/156
安裝 tengine
我這里使用的是 tengine-1.4.6.tar.gz 。 下載地址: http://tengine.taobao.org/download
我把下載好的源文件放在 /usr/local/src 目錄下了。
執行命令如下:
cd /usr/local/src
tar zxvf tengine-1.4.6.tar.gz
cd tengine-1.4.6
配置命令
./configure --prefix=/usr/local/nginx --with-pcre=/usr/include --with-http_lua_module --with-luajit-lib=/usr/local/lib/ --with-luajit-inc=/usr/local/include/luajit-2.0/ --with-lua-inc=/usr/local/include/luajit-2.0/ --with-lua-lib=/usr/local/lib/ --with-ld-opt=-Wl,-rpath,/usr/local/lib
make
make install
編譯參數說明:
由於 PCRE 我們是通過 yum 安裝的,所以會有下面的參數設置 --with-pcre=/usr/include
lua我們是手工安裝的, 所以才會有后面的參數設置 --with-http_lua_module --with-luajit-lib=/usr/local/lib/ --with-luajit-inc=/usr/local/include/luajit-2.0/ --with-lua-inc=/usr/local/include/luajit-2.0/ --with-lua-lib=/usr/local/lib/
--prefix
編譯后,計划安裝的目錄
它的作用:不指定prefix,則可執行文件默認放在/usr/local/bin,庫文件默認放在/usr/local/lib,配置文件默認放在/usr/local/etc。其它的資源文件放在/usr/local/share。你要卸載這個程序,要么在原來的make目錄下用一次make uninstall(前提是make文件指定過uninstall),要么去上述目錄里面把相關的文件一個個手工刪掉。
指定prefix,直接刪掉一個文件夾就夠了。
http://blog.csdn.net/xiyangfan/article/details/5321790
--with-ld-opt
其中的 --with-ld-opt=-Wl,-rpath,/usr/local/lib:/opt/openresty/luajit/lib 參數的意思是:
這是鏈接器選項,目的是把 /usr/local/lib 和 /opt/openrersty/luajit/lib 這兩個路徑添加進
nginx 可執行文件的 RPATH 頭中,這樣在啟動的時候,系統就可以找到正確的動態鏈接庫文件。
https://groups.google.com/forum/#!msg/openresty/mVi0p-Qx7Qg/zNyrOZi-slgJ
啟動 nginx
啟動命令(我們前面把 nginx 安裝在 /usr/local/nginx 目錄下了):
/usr/local/nginx/sbin/nginx
啟動后,本機訪問 http://localhost 會看到下面頁面:
修改 /usr/local/nginx/conf/nginx.conf 文件
增加下面幾行代碼:
location /hello {
default_type 'text/plain';
content_by_lua 'ngx.say("hello, lua")';
}
然后使用 下面命令重新啟動 nginx
/usr/local/nginx/sbin/nginx -s reload
重啟命令參考: http://xuun.net/2010/02/16/nginx-restart/
本機訪問 http://localhost/hello 會看到下面頁面:
防火牆設置
上面訪問是本機訪問的,如果我們想其他機子也能訪問,需要開放
直接關閉防火牆的命令:
service iptables stop
參考:http://kiddwyl.iteye.com/blog/67708
查看防火牆狀態
chkconfig iptables --list
打開 80 端口的訪問權限方法:
vi /etc/sysconfig/iptables
-A INPUT -m state –state NEW -m tcp -p tcp –dport 80 -j ACCEPT(允許80端口通過防火牆)
-A INPUT -m state –state NEW -m tcp -p tcp –dport 3306 -j ACCEPT(允許3306端口通過防火牆)
特別提示:很多網友把這兩條規則添加到防火牆配置的最后一行,導致防火牆啟動失敗,正確的應該是添加到默認的22端口這條規則的下面(如下規則)
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
/etc/init.d/iptables restart
#最后重啟防火牆使配置生效
參考資料:
centos linux 編譯安裝pcre軟件
http://jingyan.baidu.com/article/f7ff0bfc6bc0472e26bb13bf.html
Nginx與Lua
http://huoding.com/2012/08/31/156



