搭建OpenResty(Nginx+Lua)
這篇文章是一個多月前寫的,當時之所以搭建這個是為了最大程度上發揮Nginx的高並發效率(主要是結合lua腳本),參考的話,主要參考張開濤先生寫的跟開濤學Nginx+lua系列文章,地址為:https://jinnianshilongnian.iteye.com/blog/2190344
當時本人按照張開濤寫的一步一步搭建,當然了也發現一些小問題,所以在此將其發表出去,另外強調一點,開發人員無論是平時編寫代碼或者是調研新技術或者實踐,最好也寫寫文檔總結一下。
我寫文檔的主要目的,一來讓自己思路更加清晰,二來為博文積累素材,三來這是一個秘密。
下面進入正題吧
1.創建目錄/usr/servers
mkdir -p /usr/servers cd /usr/servers/
2.安裝依賴(不同的系統環境需要以不同的方式安裝依賴,具體可以參考該地址: //openresty.org/#Installation)
apt-get install libreadline-dev libncurses5-dev libpcre3-dev libssl-dev perl
3.下載ngx_openresty-1.7.7.2.tar.gz並解壓
wget http://openresty.org/download/ngx_openresty-1.7.7.2.tar.gz
tar -xzvf ngx_openresty-1.7.7.2.tar.gz
ngx_openresty-1.7.7.2/bundle目錄裏存放著nginx核心和很多第三方模塊,比如有我們需要的Lua和LuaJIT
4.安裝LuaJIT
cd bundle/LuaJIT-2.1-20150120/
make clean && make && make install
ln -sf luajit-2.1.0-alpha /usr/local/bin/luajit
5.下載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
6.下載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
7.安裝ngx_openresty
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
8.啟動nginx
/usr/servers/nginx/sbin/nginx
9.配置nginx+lua開發環境
(1) 編輯nginx.conf配置文件
vim /usr/servers/nginx/conf/nginx.conf
(2)在http部分添加如下配置
#lua模塊路徑,多個之間”;”分隔,其中”;;”表示默認搜索路徑,默認到/usr/servers/nginx下找
lua_package_path "/usr/servers/lualib/?.lua;;"; #lua 模塊
lua_package_cpath "/usr/servers/lualib/?.so;;"; #c模塊
其實之所以編寫example.conf,是考慮Nginx+Lua開發文件會越來越多,如果全部擠在nginx文件下的話,不利於管理和維護。
/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;
}
}
test.lua內容如下:
ngx.say("hello world");
重啟Nginx在瀏覽器輸入:http://IP/lua,出現hello world表示成功
例如:
最後完整的nginx.conf文件如下:
#user nobody;
worker_processes 2;
error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
#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;
#log_format main ‘$remote_addr - $remote_user [$time_local] "$request" ‘
# ‘$status $body_bytes_sent "$http_referer" ‘
# ‘"$http_user_agent" "$http_x_forwarded_for"‘;
#access_log logs/access.log main;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
#gzip on;
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root html;
index index.html index.htm;
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ \.php$ {
# proxy_pass http://127.0.0.1;
#}
搭建OpenResty(Nginx+Lua)