# Nginx\_Lua的安裝及環境
# Nginx\_Lua 介紹
ngx\_lua – 把lua語言嵌入nginx中,使其支持lua來快速開發基于nginx下的業務邏輯
該模塊不在nginx源碼包中,需自行下載編譯安裝。使用lua 5.1(目前不支持lua 5.2) 或 luajit 2.0 。
添加lua支持后,開發復雜的模塊,周期快,依然是100%異步非阻塞。
ngx\_lua 哪些人在用:
淘寶、騰訊財經、網易財經、360、去哪兒網等
CloudFlare, CNN, Wingify, Reblaze, Turner, Broadcasting System
lua-nginx-module 主要官方代碼在 :
[https://github.com/openresty/lua-nginx-module](https://github.com/openresty/lua-nginx-module)
## 1 安裝LuaJit
```
wget -c http://luajit.org/download/LuaJIT-2.0.2.tar.gz
```
```bash
tar xzvf LuaJIT-2.0.2.tar.gz
cd LuaJIT-2.0.2
make install PREFIX=/usr/local/luajit
echo "/usr/local/luajit/lib" > /etc/ld.so.conf.d/usr_local_luajit_lib.conf
#配置環境變量
export LUAJIT_LIB=/usr/local/luajit/lib
export LUAJIT_INC=/usr/local/luajit/include/luajit-2.0
```
## 2 安裝ngx\_devel\_kit 和 lua-nginx-module
> ngx-devel-kit下載地址
[https://github.com/simpl/ngx\_devel\_kit/](https://github.com/simpl/ngx_devel_kit/)
> lua-nginx-module下載地址
[https://github.com/chaoslawful/lua-nginx-module/](https://github.com/chaoslawful/lua-nginx-module/)
```
tar -zxvf ngx_devel_kit-0.3.0.tar.gz
```
得到 ngx-devel-kit路徑
**/home/itcast/Project-Packages/ngx\_devel\_kit-0.3.0**
`tar -zxvf lua-nginx-module-0.10.8.tar.gz`
得到 lua-nginx-module路徑
**/home/itcast/Project-Packages/lua-nginx-module-0.10.8**
## 3 安裝nginx
```bash
wget 'http://nginx.org/download/nginx-1.11.2.tar.gz'
tar -xzvf nginx-1.11.2.tar.gz
cd nginx-1.11.2/
./configure \
--add-module=/home/itcast/Project-Packages/ngx_devel_kit-0.3.0 \
--add-module=/home/itcast/Project-Packages/lua-nginx-module-0.10.8
make
sudo make install
```
## 4 配置第一個ngx\_lua程序
### 4.1 ngx執行lua腳本文件
\(1\) 打開/usr/local/nginx/conf/nginx.conf配置文件
在server{}中加上如下配置:
```nginx
location /lua_test1 {
#執行 文本 lua 腳本
content_by_lua_file conf/lua/hello.lua;
}
```
其中hello.lua代碼如下:
```lua
ngx.say("HELLO LUA!!")
```
\(2\) 重啟nginx服務器
```bash
sudo /usr/local/nginx/sbin/nginx -s reload
```
\(3\)客戶端訪問
瀏覽器輸入 [http://192.168.2.113/lua\_test1](http://192.168.2.113/lua_test1)
### 4.2 ngx執行lua腳本內嵌代碼塊
\(1\) 打開/usr/local/nginx/conf/nginx.conf配置文件
在server{}中加上如下配置:
```lua
location /lua_test2 {
#執行內嵌 lua腳本
content_by_lua '
-- 設置返回的content_type頭
ngx.header.content_type = "text/plain";
-- 回復客戶端請求數據
ngx.say("Hello World ngx_lua")
-- 記錄nginx日志
ngx.log(ngx.ERR, "ngx lua ERR ERR ERR!!!!")
ngx.log(ngx.NOTICE, "ngx lua NOTICE NOTICE NOTICE!!")
ngx.log(ngx.INFO, "ngx lua INFO INFO INFO!!")
';
}
```
\(2\) 重啟nginx服務器
```bash
sudo /usr/local/nginx/sbin/nginx -s reload
```
\(3\)客戶端訪問
瀏覽器輸入 [http://192.168.2.113/lua\_test](http://192.168.2.113/lua_test1)2
###
- 1 Lua介紹及環境
- 2 基本語法
- 3 數據類型
- 4 Lua 變量
- 5 循環
- 6 流程控制
- 7 函數
- 8 運算符
- 9 字符串
- 10 數組
- 11 迭代器
- 12 table
- 13 Lua 模塊與包
- 14 Lua 元表(Metatable)
- 14.1 元表案例
- 15 Lua 協同程序(coroutine)
- 16 Lua 文件IO
- 17 Lua 面向對象
- 17.1 類
- 17.2 繼承
- 17.3 封裝
- 18 Lua 與 Mysql
- 19 Lua 與 redis
- 20 Lua 與 JSON
- 21 Lua 與 http
- 22 Lua 與 Nginx
- 22.1 Nginx_Lua的安裝及環境
- 22.2 ngx_lua API(全表)
- 22.3 常用命令介紹
- 22 Lua 人工智能
- (1) Torch的安裝
- (2)Tensor
- Lua與C混合編程