轉載註明地址:http://www.cnblogs.com/dongxiao-yang/p/5312285.htmlhtml
本文主要採用手動源碼安裝的方式將lua-nginx模塊編譯到nginx源碼內部nginx
一:系統版本git
1 cat /etc/issuegithub
CentOS release 6.7 (Final)centos
Kernel \r on an \mpost
2 cat /proc/version ui
Linux version 2.6.32-573.el6.x86_64 (mockbuild@c6b9.bsys.dev.centos.org) (gcc version 4.4.7 20120313 (Red Hat 4.4.7-16) (GCC) ) #1 SMP Thu Jul 23 15:44:03 UTC 2015this
二 :安裝lua
1 安裝LuaJITurl
下載地址http://luajit.org/download.html,本次下載的是2.0.0版本
安裝命令參考http://luajit.org/install.html教程,本文直接修改了Makefile文件裏的默認路徑PREFIX到/opt/luajit-2.0.0。
make && make install
安裝完畢。
2 安裝nginx
(1) 下載ng源碼並解壓
wget http://nginx.org/download/nginx-1.8.1.tar.gz
(2)下載 ngx_devel_kit (NDK) 模塊 HERE. 解壓
(3)下載 ngx_lua HERE.解壓
(4)安裝pcre依賴庫
yum install readline-devel pcre-devel openssl-devel gcc
(5)設置變量並編譯export LUAJIT_LIB=/opt/luajit-2.0.0/lib(根據本機位置)
export LUAJIT_INC=/opt/luajit-2.0.0/include/luajit-2.0(根據本機位置) cd nginx-1.8.1 ./configure --prefix=/opt/nginx-build-1.8.1 \ --with-ld-opt="-Wl,-rpath,/opt/luajit-2.0.0/lib" \ --add-module=/opt/lua-nginx-module-0.10.2 \ --add-module=/opt/ngx_devel_kit-0.3.0rc1
make -j2
make install
這裏注意的是不少人編譯的時候沒有加選項:--with-ld-opt="-Wl,-rpath,/opt/luajit-2.0.0/lib
這樣會致使編好的nginx在啓動的時候會沒法找到位於luajit內的類庫,相似於
/opt/nginx/sbin/nginx -c /opt/nginx/conf/nginx.conf /opt/nginx/sbin/nginx: error while loading shared libraries: libluajit-5.1.so.2: cannot open shared object file: No such file or directory
這個問題不少人發現後採用了將libluajit-5.1.so.2連接到系統庫的作法,好比http://cywhoyi.iteye.com/blog/2118913,以及https://www.ttlsa.com/nginx/nginx-modules-ngx_lua,採用的
ln -s /usr/local/lib/libluajit-5.1.so.2 /lib64/
這樣能夠解決問題,可是至關於一個補救方法。
參考問題https://github.com/openresty/lua-nginx-module/issues/8 裏agentzh的回答
--with-ld-opt=
— sets additional parameters that will be used during linking. When using the system PCRE library under FreeBSD, parameters
--with-ld-opt="-L /usr/local/lib"
should be specified.
因此至關於直接把luajit的lib庫加到了nginx的搜索庫。
(6)啓動
ln -s nginx-build-1.8.1 nginx 設爲默認路徑
/opt/nginx/sbin/nginx -c /opt/nginx/conf/nginx.conf
啓動成功
參考資料