OpenResty是一个基于 Nginx 与 Lua 的高性能 Web 平台,其内部集成了大量精良的 Lua 库、第三方模块以及大多数的依赖项。用于方便地搭建能够处理超高并发、扩展性极高的动态 Web 应用、Web 服务和动态网关(摘自官网)。本文将会介绍如何在Centos7上,安装Nginx+Lua的开发环境,并运行一个“Hello World”示例。

一、环境安装

1.1 创建工作路径

  我计划将Openresty安装到/usr/servers下,首先创建这个文件夹。

[root@localhost ~]# mkdir -p /usr/servers
[root@localhost ~]# cd /usr/servers/
[root@localhost servers]#

1.2 安装依赖库

[root@localhost servers]# yum install readline-devel pcre-devel openssl-devel perl  make gcc -y

1.3 下载Nginx及要安装的模块

  其中,ngx_cache_purge模块用于清理nginx缓存,nginx_upstream_check_module用于ustream的健康检查。

[root@localhost servers]# pwd
/usr/servers
[root@localhost servers]# wget http://openresty.org/download/ngx_openresty-1.7.7.2.tar.gz
[root@localhost servers]# tar -xzvf ngx_openresty-1.7.7.2.tar.gz
[root@localhost servers]# cd /usr/servers/ngx_openresty-1.7.7.2/bundle
[root@localhost bundle]# pwd
/usr/servers/ngx_openresty-1.7.7.2/bundle
[root@localhost bundle]# wget https://github.com/FRiCKLE/ngx_cache_purge/archive/2.3.tar.gz
[root@localhost bundle]# tar -xvf 2.3.tar.gz
[root@localhost bundle]# cd /usr/servers/ngx_openresty-1.7.7.2/bundle
[root@localhost bundle]# pwd
/usr/servers/ngx_openresty-1.7.7.2/bundle
[root@localhost bundle]# wget https://github.com/yaoweibin/nginx_upstream_check_module/archive/v0.3.0.tar.gz
[root@localhost bundle]# tar -xvf v0.3.0.tar.gz

1.4 安装LuaJIT

[root@localhost bundle]# cd /usr/servers/ngx_openresty-1.7.7.2/bundle/LuaJIT-2.1-/
[root@localhost LuaJIT-2.1-]# pwd
/usr/servers/ngx_openresty-1.7.7.2/bundle/LuaJIT-2.1-
[root@localhost LuaJIT-2.1-]# make clean && make && make install
[root@localhost LuaJIT-2.1-]# ln -sf luajit-2.1.-alpha /usr/local/bin/luajit
[root@localhost LuaJIT-2.1-]# lua -v
Lua 5.1. Copyright (C) - Lua.org, PUC-Rio
[root@localhost LuaJIT-2.1-]# luajit -v
LuaJIT 2.1.-alpha -- Copyright (C) - Mike Pall. http://luajit.org/

1.5 安装ngx_openresty

[root@localhost LuaJIT-2.1-]# cd /usr/servers/ngx_openresty-1.7.7.2
[root@localhost ngx_openresty-1.7.7.2]# pwd
/usr/servers/ngx_openresty-1.7.7.2
[root@localhost 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./ -j2
[root@localhost ngx_openresty-1.7.7.2]# make && make install

  至此,基本的环境已经安装完成了,nginx可执行文件为:/usr/servers/nginx/sbin/nginx,可以通过/usr/servers/nginx/sbin/nginx -V 命令来查看nginx的版本及安装的模块。

二、环境配置及示例

2.1 配置nginx.conf

  nginx.conf是Nginx的主配置文件,所有的配置都是从这里开始的。我的计划是将lua脚本、依赖库配置、与lua相关的server、location等配置都放到外部的目录中,这样不用每次都动到nginx.conf。修改/usr/servers/nginx/conf/nginx.conf,如下:

[root@localhost ~]# cat /usr/servers/nginx/conf/nginx.conf
worker_processes ; error_log logs/error.log;
events {
worker_connections ;
} http { include mime.types;
default_type text/html;
#lua模块路径
lua_package_path "/usr/example/lualib/?.lua;;"; #lua 模块
lua_package_cpath "/usr/example/lualib/?.so;;"; #c模块
include /usr/example/example.conf;
}

2.2 配置example.conf

[root@localhost ~]# mkdir /usr/example
[root@localhost ~]# vim /usr/example/example.conf
[root@localhost ~]# cat /usr/example/example.conf
server {
listen ;
server_name _; location /lua {
default_type 'text/html';
lua_code_cache off;
content_by_lua_file /usr/example/lua/test.lua;
}
}

2.3 示例——test.lua

[root@localhost ~]# mkdir /usr/example/lua
[root@localhost ~]# vim /usr/example/lua/test.lua
[root@localhost ~]# cat /usr/example/lua/test.lua
ngx.say("hello world");

2.4 验证

  首先启动nginx,你会发现nginx给了一个警告,这句警告是因为在/usr/example/example.conf的第7行上,我们关闭了lua_code_cache。这个配置默认是打开的,即Nginx在启动的时候会将lua脚本都cache起来,这样系统在调用这些脚本时就会很快。而关闭这个配置的话,nginx每次调用都会重新load一遍,会对性能有一定的影响。因为我们是在开发环境,我们不希望更改脚本之后就重启nginx,所以就把这个配置给关闭了。

[root@localhost ~]# /usr/servers/nginx/sbin/nginx
nginx: [alert] lua_code_cache is off; this will hurt performance in /usr/example/example.conf:

接下来在浏览器中访问对应的路径,你会得到如下的结果。(提示:若没有出现,可以检查一下系统防火墙)

备注:

centos下还可以通过yum的方式安装openresty,但在国内的网络环境下,这种方式时灵时不灵(国外的主机上就没有问题),我怀疑是国内网络的问题。有兴趣的同学可以尝试下。具体命令如下:

yum install yum-utils
yum-config-manager --add-repo https://openresty.org/yum/centos/OpenResty.repo
yum install openresty

最新文章

  1. String字符串针对常量池的优化
  2. 新版微耕软件(N3000)与旧版2000的实体功能区别
  3. 视频 之自定义VideoView
  4. [HDU 4419] Colourful Rectangle (扫描线 矩形面积并)
  5. 书签(Bookmarks)
  6. C#中DllImport用法和路径问题
  7. JQuery标签去重与数组去重
  8. 微信公众号调用JS-SDK
  9. 2017-05-23 Android学习 The first day
  10. JqueryMobile学习记录一
  11. datatables 配套bootstrap样式使用小结(2) ajax篇
  12. mongodb3.4.6配置主从
  13. 从零开始学 Web 之 CSS(五)可见性、内容移除、精灵图、属性选择器、滑动门
  14. JavaScript之子类构建工具
  15. [Canvas]碰撞球 增加小球间碰撞检测
  16. dlib实现人脸landmark点检测以及一些其他的应用
  17. Java虚拟机(三):JVM垃圾回收机制
  18. warning,C4996,sprintf,deprecated,C4996,strcpy,C4996,strcat
  19. php index.php修改之后未生效
  20. 【BZOJ3195】[Jxoi2012]奇怪的道路 状压DP

热门文章

  1. C# 移除Response Header,403调整返回为404Make IIS return a 404 status code instead of 403
  2. OpenGL step by step 38 : Skeletal Animation with Assimp
  3. [Benchmark] Codeflaws: A Programming Competition Benchmark for Evaluating Automated Program Repair Tools
  4. Linux系统Vi/Vim编辑器的简单介绍、安装/卸载、常用命令
  5. C#Windows Service程序的创建安装与卸载
  6. Hystrix入门与分析(一):初识Hystrix
  7. 在eclipse中使用Tomcat时出现Could not publish server ...错误
  8. Java9之HashMap与ConcurrentHashMap
  9. 用vue制作饿了么首页(1)
  10. js运用3