nginx + lua环境配置
在/usr/local/src/目录下面:
wget http://luajit.org/download/LuaJIT-2.0.4.tar.gz
sudo make install PREFIX=/usr/local/luajit
sudo ln -sf luajit-2.1.0-beta2 /usr/local/luajit/bin/luajit
wget https://github.com/simplresty/ngx_devel_kit/archive/v0.3.1rc1.tar.gz
wget https://github.com/openresty/lua-nginx-module/archive/v0.10.12rc1.tar.gz
wget http://nginx.org/download/nginx-1.13.6.tar.gz
tar -xzvf v0.3.1rc1.tar.gz
tar -xzvf v0.10.12rc1.tar.gz
tar -xzvf nginx-1.13.6.tar.gz
cd nginx-1.13.6/
export LUAJIT_LIB=/usr/local/luajit/lib
export LUAJIT_INC=/usr/local/luajit/include/luajit-2.0
export LUAJIT_LIB=/usr/local/luajit/lib
export LUAJIT_INC=/usr/local/luajit/include/luajit-2.1
./configure --prefix=/usr/local/nginx --with-ld-opt="-Wl,-rpath,/usr/local/luajit-or-lua/lib" --add-module=/usr/local/src/ngx_devel_kit-0.3.1rc1 --add-module=/usr/local/src/lua-nginx-module-0.10.12rc1
sudo make -j2
sudo make install
sudo /usr/local/nginx/sbin/nginx
如果报一下错误:
/usr/local/nginx/sbin/nginx: error while loading shared libraries: libluajit-5.1.so.2: cannot open shared object file: No such file or directory
那么请执行:
cd /usr/local/lib
cp libluajit-5.1.so.2 /usr/lib/x86_64-linux-gnu/
ln -s /usr/lib/x86_64-linux-gnu/liblua5.1.so /usr/lib/liblua.so
如果报一下错误:
cc1: all warnings being treated as errors
objs/Makefile:1512: recipe for target 'objs/addon/src/ngx_http_lua_module.o' failed
make[1]: *** [objs/addon/src/ngx_http_lua_module.o] Error 1
make[1]: *** Waiting for unfinished jobs....
make[1]: Leaving directory '/htdocs/slb/nginx-1.10.3'
Makefile:8: recipe for target 'build' failed
make: *** [build] Error 2
请进行openssl安装
在/usr/local/src目录下面:
sudo wget https://www.openssl.org/source/openssl-1.0.2n.tar.gz
tar -zxvf openssl-1.0.2n.tar.gz
cd openssl-1.0.2n/
sudo ./config && sudo make && sudo make install
sudo ln -sf /usr/local/ssl/bin/openssl `which openssl`
openssl version -v
如果看到:
OpenSSL 1.0.2n 7 Dec 2017
那么OpenSSL就安装成功了!
如果报一下错误:
root@logsystest-mysql:/usr/local/luajit/lib# sudo /usr/local/nginx/sbin/nginx
sudo: unable to resolve host logsystest-mysql
/usr/local/nginx/sbin/nginx: error while loading shared libraries: libluajit-5.1.so.2: cannot open shared object file: No such file or directory
请执行:
root@logsystest-mysql:/usr/local/luajit/lib# ldd $(which /usr/local/nginx/sbin/nginx)
linux-vdso.so.1 => (0x00007ffebf996000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007fef77bdc000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007fef779bf000)
libcrypt.so.1 => /lib/x86_64-linux-gnu/libcrypt.so.1 (0x00007fef77787000)
libluajit-5.1.so.2 => not found
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007fef7747e000)
libpcre.so.3 => /lib/x86_64-linux-gnu/libpcre.so.3 (0x00007fef7720e000)
libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007fef76ff4000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fef76c2a000)
/lib64/ld-linux-x86-64.so.2 (0x00007fef77de0000)
cp libluajit-5.1.so.2 /usr/lib/x86_64-linux-gnu/
再查看:
root@logsystest-mysql:/usr/local/luajit/lib# ldd $(which /usr/local/nginx/sbin/nginx)
linux-vdso.so.1 => (0x00007ffcde1df000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f29ccbf4000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f29cc9d7000)
libcrypt.so.1 => /lib/x86_64-linux-gnu/libcrypt.so.1 (0x00007f29cc79f000)
libluajit-5.1.so.2 => /usr/lib/x86_64-linux-gnu/libluajit-5.1.so.2 (0x00007f29cc526000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f29cc21d000)
libpcre.so.3 => /lib/x86_64-linux-gnu/libpcre.so.3 (0x00007f29cbfad000)
libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007f29cbd93000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f29cb9c9000)
/lib64/ld-linux-x86-64.so.2 (0x00007f29ccdf8000)
libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f29cb7b3000)
再次执行:
sudo /usr/local/nginx/sbin/nginx
看到没有错误,这个时候,看看nginx启动进程:
ps -ef |grep nginx
vagrant@vagrant:/usr/local/nginx/conf$ ps -ef |grep nginx
root 3475 1 0 03:24 ? 00:00:00 nginx: master process /usr/local/nginx/sbin/nginx
nobody 3476 3475 0 03:24 ? 00:00:00 nginx: worker process
vagrant 4542 8352 0 04:03 pts/5 00:00:00 grep --color=auto nginx
在/usr/local/nginx/conf/nginx.conf文件里面,在http {}里面添加以下代码:
location /hello_lua {
default_type 'text/plain';
content_by_lua 'ngx.say("hello, lua")';
}
重启nginx
sudo /usr/local/nginx/sbin/nginx
在命令行里面输入:curl 127.0.0.1/hello_lua
vagrant@vagrant:/htdocs/slb/nginx-1.10.3$ curl 127.0.0.1/hello_lua
hello, lua
可以看到输出:hello, lua
nginx的lua模块以及安装成功!