OpenResty是一款基於Nginx的高性能負載均衡服務器容器,簡單來講是Nginx+Lua。結合了Lua語言來對Nginx進行擴展,使得在Nginx上具備web容器功能。html
首先是在CentOS 7.6上的安裝過程:nginx
cd /opt
安裝編譯所須要的環境:git
yum install readline-devel pcre-devel openssl-devel gcc
去OpenResty的官網下載安裝包:
地址:http://openresty.org/cn/download.html
複製下載地址:github
wget https://openresty.org/download/openresty-1.15.8.1.tar.gz
解壓文件:web
tar -xvzf openresty-1.15.8.1.tar.gz cd openresty-1.15.8.1
安裝OpenResty並設置安裝目錄爲/opt/openresty,若是不作設置,默認會安裝至/usr/local/openresty:瀏覽器
./configure --with-cc-opt="-I/usr/local/include" --with-ld-opt="-L/usr/local/lib" --prefix=/opt/openresty make make install
至此,OpenResty安裝完成,能夠嘗試啓動:緩存
/opt/openresty/nginx/sbin/nginx -c /opt/openresty/nginx/conf/nginx.conf -p /opt/openresty/nginx/
能夠查看端口占用:服務器
netstat -tnlp
從圖中能夠看出nginx已經在監聽80端口,用瀏覽器訪問服務器的80端口,如圖:
OpenResty已經成功啓動
在修改相關配置文件後,需先中止服務,再作啓動:負載均衡
/opt/openresty/nginx/sbin/nginx -s stop /opt/openresty/nginx/sbin/nginx -c /opt/openresty/nginx/conf/nginx.conf -p /opt/openresty/nginx/
vi /opt/openresty/nginx/conf/nginx.conf
#lua模塊路徑,多個之間」;」分隔,其中」;;」表示默認搜索路徑,默認到/usr/servers/nginx下找 lua_package_path "/opt/openresty/lualib/?.lua;;"; #lua 模塊 lua_package_cpath "/opt/openresty/lualib/?.so;;"; #c 模塊
#lua.conf server { listen 80; server_name _; }
include lua.conf;
/opt/openresty/nginx/sbin/nginx -t
若是以下圖所示,表示配置添加成功
性能
location /lua { default_type 'text/html'; content_by_lua 'ngx.say("hello world")'; }
/opt/openresty/nginx/sbin/nginx -t
/opt/openresty/nginx/sbin/nginx -s stop /opt/openresty/nginx/sbin/nginx -c /opt/openresty/nginx/conf/nginx.conf -p /opt/openresty/nginx/
hello world
咱們把lua代碼放在nginx配置中會隨着lua的代碼的增長致使配置文件太長很差維護,所以咱們應該把lua代碼移到外部文件中存儲。
vi /opt/openresty/nginx/conf/lua/test.lua
我這裏把代碼放在nginx/config/lua中
修改lua.conf,在http下增長
content_by_lua_file conf/lua/test.lua; #相對於nginx安裝目錄
如今lua.conf總體爲:
#lua.conf server { listen 80; server_name _; location /lua { default_type 'text/html'; content_by_lua_file conf/lua/test.lua; #相對於nginx安裝目錄 } }
此處conf/lua/test.lua也可使用絕對路徑/usr/servers/nginx/conf/lua/test.lua。
默認狀況下lua_code_cache 是開啓的,即緩存lua代碼,即每次lua代碼變動必須reload nginx才生效,若是在開發階段能夠經過lua_code_cache off;關閉緩存,這樣調試時每次修改lua代碼不須要reload nginx;可是正式環境必定記得開啓緩存。
#lua.conf server { listen 80; server_name _; location /lua { default_type 'text/html'; lua_code_cache off; content_by_lua_file conf/lua/test.lua; #相對於nginx安裝目錄 } }
開啓後reload nginx會看到以下報警
nginx: [alert] lua_code_cache is off; this will hurt performance in /opt/openresty/nginx/conf/lua.conf:7
若是運行過程當中出現錯誤,請不要忘記查看錯誤日誌。
tail -f /opt/openresty/nginx/logs/error.log
到此,基本環境搭建完畢。
之後咱們的nginx lua開發文件會愈來愈多,咱們應該把其項目化,已方便開發。項目目錄結構以下所示:
OpenResty
其中咱們把lualib也放到項目中的好處就是之後部署的時候能夠一塊兒部署,防止有的服務器忘記複製依賴而形成缺乏依賴的狀況。
咱們將項目放到到/usr/openResty目錄下。
nginx.conf配置文件修改includ的conf文件,修改成咱們項目中的conf,同時修改引入lualib的地址
#lua模塊路徑,多個之間」;」分隔,其中」;;」表示默認搜索路徑,默認到/usr/servers/nginx下找 lua_package_path "/usr/openResty/lualib/?.lua;;"; #lua 模塊 lua_package_cpath "/usr/openResty/lualib/?.so;;"; #c 模塊 include /usr/openResty/openResty.conf;
經過絕對路徑包含咱們的lua依賴庫和nginx項目配置文件。
/usr/openResty/openResty.conf的內容以下:
server { listen 80; server_name _; location /lua { default_type 'text/html'; lua_code_cache off; content_by_lua_file /usr/openResty/lua/test.lua; } }
lua文件咱們使用絕對路徑/usr/openResty/lua/test.lua
到此,整個openResty就能夠扔到github上了。
github:git@github.com:meteor1993/openResty.git
原文出處:https://www.cnblogs.com/babycomeon/p/11109501.html