OpenResty是由 Nginx 核心加很多第三方模块组成,默认集成了 Lua 开发环境,使得 Nginx 可以作为一个 Web Server 使用。借助于 Nginx 的事件驱动模型和非阻塞 IO,可以实现高性能的 Web 应用程序。而且 OpenResty 提供了大量组件如 Mysql、Redis、Memcached 等等,使在 Nginx 上开发Web 应用更方便更简单。可以理解成openresty是Nginx的超级加强版。
选择源码编译的方法,下载源码tar包,安装在 /usr/servers/下。
mkdir -p /usr/servers
cd /usr/servers/
wget http://openresty.org/download/ngx_openresty-1.7.7.2.tar.gz
tar -xzvf ngx_openresty-1.7.7.2.tar.gz
提前安装依赖包:
yum install -y perl pcre-devel openssl openssl-devel gcc curl
cd /usr/servers/ngx_openresty-1.7.7.2/bundle/LuaJIT-2.1-20150120/
make clean && make && make install
ln -sf luajit-2.1.0-alpha /usr/local/bin/luajit
下载 ngx_cache_purge 模块,该模块用于清理 nginx 缓存
cd /usr/servers/ngx_openresty-1.7.7.2/bundle
wget https://github.com/FRiCKLE/ngx_cache_purge/archive/2.3.tar.gz
tar -xvf 2.3.tar.gz
下载 nginx_upstream_check_module 模块,该模块用于 ustream 健康检查
cd /usr/servers/ngx_openresty-1.7.7.2/bundle
wget https://github.com/yaoweibin/nginx_upstream_check_module/archive/v0.3.0.tar.gz
tar -xvf v0.3.0.tar.gz
开始编译安装:
cd /usr/servers/ngx_openresty-1.7.7.2
./configure --prefix=/usr/servers --with-http_realip_module --with-pcre --with-luajit --add-module=./bundle/ngx_cache_purge-2.3/ --add-module=./bundle/nginx_upstream_check_module-0.3.0/ -j2
make && make install
–with*** 安装一些内置/集成的模块 –with-http_realip_module 取用户真实 ip 模块 -with-pcre Perl 兼容的达式模块 –with-luajit 集成 luajit 模块 –add-module 添加自定义的第三方模块,如此次的 ngx_che_purge
查看是否安装成功:
cd /usr/servers/
ll
会发现多出来了如下目录,说明安装成功
/usr/servers/luajit :luajit 环境,luajit 类似于 java 的 jit,即即时编译,lua 是一种解释语言,通过 luajit 可以即时编译 lua 代码到机器代码,得到很好的性能;
/usr/servers/lualib:要使用的 lua 库,里边提供了一些默认的 lua 库,如 redis,json 库等,也可以把一些自己开发的或第三方的放在这;
/usr/servers/nginx :安装的 nginx;
查看版本:
通过 /usr/servers/nginx/sbin/nginx -V 查看 nginx 版本和安装的模块
上面已经完成了openresty的安装,下面来开始配置 nginx+lua 开发环境了
编辑 nginx.conf 配置文件
vim /usr/servers/nginx/conf/nginx.conf
在 http 部分添加如下配置
#lua模块路径,多个之间”;”分隔,其中”;;”表示默认搜索路径,默认到/usr/servers/nginx下找
lua_package_path "/usr/servers/lualib/?.lua;;"; #lua 模块
lua_package_cpath "/usr/servers/lualib/?.so;;"; #c模块
include /usr/example/example.conf;
建立项目存放目录,写测试页面:
mkdir -p /usr/example/lua/
vim /usr/example/example.conf
server {
listen 80;
server_name _;
location /lua {
default_type 'text/html';
lua_code_cache off;
content_by_lua_file /usr/example/lua/test.lua;
}
}
vim /usr/example/lua/test.lua
ngx.say("hello world,hello world");
ngx.say("The environment of 'nginx+lua' has been configured.");
注意,特别注意!!!!
可以看到我们的配置文件里面用的是80端口,如果是测试环境,我们只要找到现在系统正在占用80端口的程序然后杀死就好了,如果是线上环境,改掉openresty配置文件里面的端口,改没有使用的端口。
启动Nginx:
/usr/servers/nginx/sbin/nginx -t
/usr/servers/nginx/sbin/nginx -s reload
/usr/servers/nginx/sbin/nginx
测试:
访问如 http://192.168.1.237/lua(自己的机器根据实际情况换 ip),如果一切正常可以看到页面显示”hello world”
如需用脚本部署,请参考:https://blog.csdn.net/weixin_37998647/article/details/79826362
本文参考:http://wiki.jikexueyuan.com/project/nginx-lua/development-environment.html