安装 Nginx、Lua,使用 Lua 扩展 Nginx

使用 lua-nginx-module 可以让 Nginx 通过一些指令如 content_by_lua、content_by_lua_file 运行 Lua 脚本,非常方便。

先下载所需文件

1. 安装 luajit,官网 http://luajit.org/install.html

解压之后直接 make

make PREFIX=/usr/local/luajit

2. 下载 ngx_devel_kit(github)、nginx_lua_module(github

3. 进入 nginx 源码目录准备 configure

如果已经安装 nginx,也可以再次 configure,但一定要涵盖上次使用的参数。

4. 导出 LUAJIT_LIB、LUAJIT_INC 环境变量

export LUAJIT_LIB=/usr/local/luajit/lib
export LUAJIT_INC=/usr/local/luajit/include/luajit-2.0

LUAJIT_LIB 对应 libluajit-5.1.so 文件所在目录
LUAJIT_INC 对应 lua.h 文件所在目录

目录可能不一样,但参考 LUAJIT_LIB、LUAJIT_INC 含义。

5. 在 nginx-1.10.2 目录执行 ./configure

./configure \
--prefix=/usr/local/nginx \
--with-http_flv_module \
--with-http_gzip_static_module \
--with-http_realip_module \
--with-http_ssl_module \
--with-http_stub_status_module \
--with-http_v2_module \
--with-ipv6 \
--with-ld-opt="-ljemalloc,-Wl,-rpath,/usr/local/luajit/lib" \
--with-openssl=/opt/src/openssl-1.0.2l \
--with-pcre=/opt/src/pcre-8.40 \
--with-pcre-jit \
--add-module=/opt/src/ngx_devel_kit-0.3.0 \
--add-module=/opt/src/lua-nginx-module-0.10.8

这里用到了 ljemalloc、openssl、pcre 可以预先安装

安装 jemalloc,进入 jemalloc-4.2.1

./configure
make
make install

安装 openssl pcre,或者进入源码目录安装

yum install openssl openssl-devel
yum install pcre pcre-devel

6. 测试执行 lua

在 Nginx 某个 server 下增加

location /hello { 
    content_by_lua 'ngx.say("Hello, Lua")'; 
}

尝试访问

[root@CentOS-58 06]# curl lua.zhengxianjun.com/hello
Hello, Lua!

安装成功并且正常运行。

如果对 nginx 安装目录进行版本管理,会发现 make install 完成之后只有 nginx/sbin/nginx 文件有改动。

安装完成之后切记要执行 sbin/ngxin -t 检查语法是否正确。
一定要安装正确才能执行 sbin/ngxin -s reload 。

因为对于已经安装的 nginx,如果 ./configure 没有覆盖上一次的参数,会导致某些功能失效。
第一次 configure 时没有添加 –with-http_ssl_module 导致 nginx 提示 unknown directive “ssl”。

作者: 袖之欢

科技改变生活,编程改变世界。

发表评论

电子邮件地址不会被公开。 必填项已用*标注