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-20150120/ [root@localhost LuaJIT-2.1-20150120]# pwd /usr/servers/ngx_openresty-1.7.7.2/bundle/LuaJIT-2.1-20150120 [root@localhost LuaJIT-2.1-20150120]# make clean && make && make install [root@localhost LuaJIT-2.1-20150120]# ln -sf luajit-2.1.0-alpha /usr/local/bin/luajit [root@localhost LuaJIT-2.1-20150120]# lua -v Lua 5.1.4 Copyright (C) 1994-2008 Lua.org, PUC-Rio [root@localhost LuaJIT-2.1-20150120]# luajit -v LuaJIT 2.1.0-alpha -- Copyright (C) 2005-2015 Mike Pall. http://luajit.org/
1.5 安裝ngx_openresty
[root@localhost LuaJIT-2.1-20150120]# 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.0/ -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 1; error_log logs/error.log; events { worker_connections 1024; } 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 80; 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:7
接下來在瀏覽器中訪問對應的路徑,你會得到如下的結果。(提示:若沒有出現,可以檢查一下系統防火牆)
備註:
centos下還可以通過yum的方式安裝openresty,但在國內的網路環境下,這種方式時靈時不靈(國外的主機上就沒有問題),我懷疑是國內網路的問題。有興趣的同學可以嘗試下。具體命令如下:
yum install yum-utils yum-config-manager --add-repo https://openresty.org/yum/centos/OpenResty.repo yum install openresty