Centos7.X配置Nginx+Lua(OpenResty)

关于Lua简介以及Lua的安装可以参考https://blog.csdn.net/IT_10/article/details/89049542

OpenResty 介绍

OpenResty(又称:ngx_openresty) 是一个基于 NGINX 的可伸缩的 Web 平台,由中国人章亦春发起,提供了很多高质量的第三方模块。将Lua和Nginx粘合ngx_lua模块,并且将Nginx核心、LuaJIT、ngx_lua模块、许多有用的Lua库和常用的第三方Nginx模块组合而成。

(1)OpenResty 是一个强大的 Web 应用服务器,Web 开发人员可以使用 Lua 脚本语言调动 Nginx 支持的各种 C 以及 Lua 模块,更主要的是在性能方面,OpenResty可以 快速构造出足以胜任 10K 以上并发连接响应的超高性能 Web 应用系统。
(2)借助于Nginx的事件驱动模型和非阻塞IO,可以实现高性能的Web应用程序。而且OpenResty提供了大量组件如Mysql、Redis、Memcached等等,使在Nginx上开发Web应用更方便更简单
目前360,UPYUN,阿里云,新浪,腾讯网,去哪儿网,酷狗音乐等都是 OpenResty 的深度用户。在京东如实时价格、秒杀、动态服务、单品页、列表页等都在使用Nginx+Lua架构,其他公司如淘宝、去哪儿网等。

1.创建目录

mkdir -p /usr/servers  
cd /usr/servers/

2.安装依赖

yum install gcc-c++
yum install pcre-devel openssl-devel gcc curl

3.下载ngx_openresty-xxx.tar.gz

ngx_openresty-xxx/bundle目录里存放着nginx核心和很多第三方模块,比如有我们需要的Lua和LuaJIT。

wget https://openresty.org/download/ngx_openresty-1.9.7.1.tar.gz
tar xvf ngx_openresty-1.9.7.1.tar.gz
cd ngx_openresty-1.9.7.1

Centos7.X配置Nginx+Lua(OpenResty)

4.安装LuaJIT

 cd bundle/LuaJIT-2.1-20151219/
 make clean && make && make install
 ln -sf luajit-2.1.0-alpha /usr/local/bin/luajit           //生成软链接

5.下载ngx_cache_purge模块

该模块用于清理nginx缓存

wget https://github.com/FRiCKLE/ngx_cache_purge/archive/2.3.tar.gz
tar -xvf 2.3.tar.gz

Centos7.X配置Nginx+Lua(OpenResty)

6.下载nginx_upstream_check_module模块

该模块用于ustream健康检查

wget https://github.com/yaoweibin/nginx_upstream_check_module/archive/v0.3.0.tar.gz
tar -xvf v0.3.0.tar.gz

7.安装ngx_openresty

注意,换目录

cd ..
./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
Centos7.X配置Nginx+Lua(OpenResty)

8.完成

到/usr/servers目录下用ll命令查看,会发现多出来了如下目录,说明安装成功
Centos7.X配置Nginx+Lua(OpenResty)
说明:
/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版本和安装的模块。

9.配置nginx+lua开发环境

(1)新建lua.conf,内容如下

cd /usr/servers/nginx/conf
vim lua.conf
server { 
	listen 80;
	server_name _;
	location /lua { 
	default_type 'text/html'; 
	content_by_lua 'ngx.say("hello world")';    #lua调用nginx的API
	#上面一行也可以替换成
	content_by_lua_file /usr/servers/nginx/html/lua/index.lua; #index.lua是自己写的
	#将http://ip/lua的请求交给index.lua文件处理
	}
}

(2)编辑nginx.conf配置文件

vim /usr/servers/nginx/conf/nginx.conf 
//在http部分添加如下配置 
lua_package_path "/usr/servers/lualib/?.lua;;"; #lua 模块 
lua_package_cpath "/usr/servers/lualib/?.so;;"; #c模块 
include lua.conf; #单独lua配置
#lua模块路径,多个之间”;”分隔,其中”;;”表示默认搜索路径,默认到/usr/servers/nginx下找

(3)测试是否正常

/usr/servers/nginx/sbin/nginx -t

如果显示如下内容说明配置成功
nginx: the configuration file /usr/servers/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/servers/nginx/conf/nginx.conf test is successful

Centos7.X配置Nginx+Lua(OpenResty)
(4)重启nginx

/usr/servers/nginx/sbin/nginx -s reload

发现报错,出现
nginx: [error] invalid PID number “” in “/usr/local/nginx/logs/nginx.pid”
应该是和我安装的另一个nginx端口也是80有关
Centos7.X配置Nginx+Lua(OpenResty)
解决办法:
第一步:执行命令 killall -9 nginx 杀掉nginx 进程
第二步:执行命令 /usr/servers/nginx/sbin/nginx -c /usr/servers/nginx/conf/nginx.conf 重新加载配置文件
第三步:执行命令 ./nginx -s reload 重新启动nginx

Centos7.X配置Nginx+Lua(OpenResty)
Centos7.X配置Nginx+Lua(OpenResty)