# Mac OS X 平臺下 OpenResty 安裝
#### 源碼包準備
我們首先要在[官網](http://openresty.org/)下載`OpenResty`的源碼包。官網上會提供很多的版本,各個版本有什么不同也會有說明,我們可以按需選擇下載。筆者選擇下載的源碼包 [ngx_openresty-1.7.10.1.tar.gz](https://openresty.org/download/ngx_openresty-1.7.10.1.tar.gz)。
#### 相關庫的安裝
將這些相關的庫 PCRE 安裝在系統中。按照以下步驟:
1. 用你喜歡的方式打開命令終端(例如筆者喜歡的[iTerm2](http://www.iterm2.com))。
1. 推薦如 Homebrew 這類包管理方式完成包管理。
1. 輸入以下命令`brew install pcre`,完成 PCRE 包。
#### OpenResty的安裝
1. 在命令行中切換到源碼包所在目錄。
1. 輸入命令`tar xzvf ngx_openresty-1.7.10.1.tar.gz`,按回車鍵解壓源碼包。若你下載的源碼包版本不一樣,將相應的版本號改為你所下載的即可,或者直接拷貝源碼包的名字到命令中。此時當前目錄下會出現一個`ngx_openresty-1.7.10.1`文件夾。
1. 在命令行中切換工作目錄到`ngx_openresty-1.7.10.1`。輸入命令`cd ngx_openresty-1.7.10.1`。
1.
配置安裝目錄及需要激活的組件。使用選項 --prefix=install_path ,指定其安裝目錄(默認為/usr/local/openresty)。使用選項 --with-Components 激活組件, --without則是禁止組件,你可以根據自己實際需要選擇 with 及 without 。輸入如下命令,OpenResty將配置安裝在/opt/openresty目錄下(注意使用root用戶),并激活 LuaJIT、HTTP_iconv_module 并禁止 http_redis2_module 組件。
~~~
./configure --prefix=/opt/openresty\
--with-cc-opt="-I/usr/local/include"\
--with-luajit\
--without-http_redis2_module \
--with-ld-opt="-L/usr/local/lib"
~~~
1.
在上一步中,最后沒有什么error的提示就是最好的。若有錯誤,最后會顯示error字樣,具體原因可以看源碼包目錄下的build/nginx-VERSION/objs/autoconf.err文件查看。若沒有錯誤,則會出現如下信息,提示下一步操作:
~~~
Type the following commands to build and install:
gmake
gmake install
~~~
1.
編譯。根據上一步命令提示,輸入`gmake`。
1. 安裝。輸入`gmake install`,這里可能需要輸入你的管理員密碼。
1. 上面的步驟順利完成之后,安裝已經完成。可以在你指定的安裝目錄下看到一些相關目錄及文件。
#### 設置環境變量
為了后面啟動`OpenResty`的命令簡單一些,不用在`OpenResty`的安裝目錄下進行啟動,我們通過設置環境變量來簡化操作。將`OpenResty`目錄下的 nginx/sbin 目錄添加到 PATH 中。
接下來,我們就可以進入到后面的章節[Hello World](#)學習。
- 序
- Lua 入門
- Lua簡介
- Lua環境搭建
- 基礎數據類型
- 表達式
- 控制結構
- if/else
- while
- repeat
- for
- break,return
- Lua函數
- 函數的定義
- 函數的參數
- 函數的返回值
- 函數回調
- 模塊
- String庫
- Table庫
- 日期時間函數
- 數學庫函數
- 文件操作
- 元表
- 面向對象編程
- FFI
- 下標從1開始
- 局部變量
- 判斷數組大小
- 非空判斷
- 正則表達式
- 不用標準庫
- 虛變量
- 函數在調用代碼前定義
- 抵制使用module()函數來定義Lua模塊
- 點號與冒號操作符的區別
- Nginx
- Nginx 新手起步
- location 匹配規則
- if 是邪惡的
- 靜態文件服務
- 日志服務
- 反向代理
- 負載均衡
- 陷阱和常見錯誤
- 環境搭建
- Windows平臺
- CentOS平臺
- Ubuntu平臺
- Mac OS X平臺
- Hello World
- 簡單API Server框架
- 獲取Nginx內置綁定變量
- LuaRestyRedisLibrary
- select+set_keepalive組合操作引起的數據讀寫錯誤
- redis接口的二次封裝(簡化建連、拆連等細節)
- redis接口的二次封裝(發布訂閱)
- pipeline壓縮請求數量
- script壓縮復雜請求
- LuaCjsonLibrary
- json解析的異常捕獲
- 稀疏數組
- 空table編碼為array還是object
- 跨平臺的庫選擇
- PostgresNginxModule
- 調用方式簡介
- 不支持事務
- 超時
- 健康監測
- SQL注入
- LuaNginxModule
- 執行階段概念
- 正確的記錄日志
- 熱裝載代碼
- 阻塞操作
- 緩存
- sleep
- 定時任務
- 禁止某些終端訪問
- 請求返回后繼續執行
- 調試
- 調用其他C函數動態庫
- 我的lua代碼需要調優么
- 變量的共享范圍
- 動態限速
- shared.dict 非隊列性質
- 如何添加自己的lua api
- 正確使用長鏈接
- 如何引用第三方resty庫
- 典型應用場景
- LuaRestyDNSLibrary
- 使用動態DNS來完成HTTP請求
- 緩存失效風暴
- 測試
- 單元測試
- API測試
- 性能測試
- 持續集成
- 灰度發布
- Web 服務
- API的設計
- 數據合法性檢測
- 協議無痛升級
- 代碼規范
- 連接池
- C10K編程
- TIME_WAIT問題
- 與Docker使用的網絡瓶頸
- 火焰圖
- 什么時候使用
- 顯示的是什么
- 如何安裝火焰圖生成工具
- 如何定位問題
- 開源文化對360企業安全的影響