OpenResty是一款基於Nginx和Lua的高性能Web平台,在nginx基礎之上集成了大量的lua庫,第三方模塊等,以便搭建各種處理高並發、可擴展的Web應用、服務或網關,並且OpenResty完全兼容nginx所有的配置,可以直接當做nginx來使用,而且可以支持lua進行編程處理相應的邏輯,實現高並發的請求處理,可以彌補nginx不可編程的困難,所以是結合了nginx的異步模型加上Lua編程簡單的兩大優點,實現高性能可擴展的網關,下面就主要敘述下openresty的基本安裝和配置
openresty官網:http://openresty.org/
下載頁面:http://openresty.org/cn/download.html,官方提供針對不同平台的二進制包,我這使用的是源碼包編譯的方式安裝,用二進制包安裝更簡單
安裝參考:http://openresty.org/cn/installation.html
安裝之前首先要確認系統的基礎環境,我使用的是CentOS 7,確認環境如下:
1. gcc 編譯器,yum安裝命令: yum install gcc
2. curl庫,yum安裝命令: yum install curl
3. pcre、zlib、openssl開發庫,安裝命令: yum install pcre-devel zlib-devel openssl-devel ,其實openssl會依賴pcre和zlib
4. 如果啟用postgres模塊,還需要安裝postgresql開發庫: yum install postgresql-devel ,否則會報錯:ngx_postgres addon was unable to detect version of the libpq library
5. 最后准備OpenResty源碼包:openresty-1.17.8.2.tar.gz
然后准備安裝openresty,解壓源碼包:
tar -xvzf openresty-1.17.8.2.tar.gz cd openresty-1.17.8.2
然后設置配置選項:
./configure --prefix=/opt/openresty --with-luajit --with-http_iconv_module --with-http_postgres_module
默認的prefix目錄為:/usr/local/openresty,這里指定到/opt/openresty,另外--with-luajit在1.5.8.1之后已經默認開啟,不加也是啟用的,更多的參數選項執行: ./configure --help 查看,接下來編譯並安裝源碼:
make -j4 make install
然后可以cd到/opt/openresty,會看到有個nginx目錄,沒錯這就是nginx,和原生的用法一樣,我們直接可以執行: nginx/sbin/nginx 來啟動nginx,這個時候可以訪問首頁來測試一下:
然后也可以單獨自己隨便找個目錄創建自己的OpenResty項目,比如到自己的用戶目錄下操作:
mkdir ~/resty-work cd ~/resty-work # 創建conf和logs目錄 mkdir conf logs
然后在conf下創建配置文件:conf/nginx.conf,配置如下內容:
worker_processes 1; error_log logs/error.log; events { worker_connections 1024; } http { server { listen 8080; location / { default_type text/html; content_by_lua_block { ngx.say("<p>hello, OpenResty!</p>") } } } }
這個配置和普通nginx一樣,只是在其中嵌入了一行lua block用來輸出內容,然后保存配置,為了之后執行方便可以將nginx二進制文件加入到PATH中:
export PATH=$PATH:/opt/openresty/nginx/sbin
然后再配置到profile即可,這是就可以使用nginx啟動當前的項目: nginx -p `pwd` -c conf/nginx.conf ,因為這次是單獨啟動項目,因此需要使用-p指定要運行的path,默認是openresty安裝目錄下的nginx目錄,然后-c指定配置文件,默認是:conf/nginx.conf,這時pid文件就為~/resty-work/logs/nginx.pid,如果停止同樣要指定目錄和配置文件(如果不是默認): nginx -p `pwd` -c conf/nginx.conf -s stop ,重新載入配置同樣是-s reload參數,和nginx一樣,這種獨立目錄的形式和默認配置效果相同,只是更有編程的感覺,不同功能運行不同的項目,可以跑多個項目,跑起來之后訪問頁面8080端口可以看到輸出內容:
這樣OpenResty就基本配置好了