构建并安装一个具有lua支持的nginx教程
如何构建具有lua支持的nginx
- 环境介绍以及配置环境
- 下载Nginx官方源代码
- 下载GeoIP并编译
- 下载luajit2并编译
- 下载需要添加的模块
- 调整系统路径
- 编译安装以及更改配置文件
- 运行测试
如何构建具有lua支持的nginx
1.配置环境
系统环境 CentOS 9 Stream x64(新安装)
系统配置 1C2G 50G硬盘
服务器提供商Vultr
服务器到手后请先更新源,接着安装这些依赖库
yum install -y zlib zlib-devel yum install gcc-c++ yum install -y pcre pcre-devel yum install -y openssl openssl-devel yum install perl-ExtUtils-Embed.noarch
2.下载Nginx源码
可以根据自己的需求选择nginx版本,建议1.20以后
wget https://nginx.org/download/nginx-1.24.0.tar.gz tar -zxvf nginx-1.24.0.tar.gz
3.下载GeoIP并编译
GeoIP是可以结合国家地区进行分流的工具
wget https://github.com/maxmind/geoip-api-c/releases/download/v1.6.11/GeoIP-1.6.11.tar.gz tar -xzvf GeoIP-1.6.11.tar.gz cd GeoIP-1.6.11 ./configure make make install
4.下载luajit2并编译
luajit2是在nginx-lua中最重要的一部分,可以认为是lua的解析器
git clone https://github.com/openresty/luajit2.git cd luajit2 make make install
5.下载需要添加的模块
这一步我们可以添加我们需要的模块,我这边添加了rtmp作为示例可以不添加rtmp,但是lua-nginx-module一定要添加
git clone https://github.com/arut/nginx-rtmp-module.git git clone https://github.com/openresty/lua-nginx-module.git
6.调整系统路径
export LUAJIT_LIB=/usr/local/lib/ export LUAJIT_INC=/usr/local/include/luajit-2.1/ export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH
7.编译安装以及更改配置文件
cd nginx-1.24.0/ ./configure \ --prefix=/opt/nginx \ --with-ld-opt=-Wl,-rpath,/usr/local/lib \ --with-http_gzip_static_module \ --with-http_addition_module \ --with-http_geoip_module \ --with-http_flv_module \ --with-http_mp4_module \ --with-http_gunzip_module \ --with-http_slice_module \ --with-http_perl_module \ --with-stream \ --with-stream_ssl_module \ --with-stream_realip_module \ --with-stream_geoip_module \ --add-module=/root/nginx-rtmp-module \ --add-module=/root/lua-nginx-module \ --with-cc-opt="-fPIC" \ --with-zlib-opt="-fPIC" make make install
编译完后要对nginx的配置文件中的nginx.conf里面的http模块加入以下语句,nginx安装位置在/opt里面,可以添加参数进行修改
lua_package_path “/opt/nginx/lib/lua/?.lua;;”;
8.运行测试
在server 模块中添加一个
location /test_lua { default_type 'text/plain'; content_by_lua 'ngx.say("hello, lua")'; }
启动nginx访问 访问/test_lua,看看是否正确输出,如果输出”hello,lua“为编译成功