国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

nginx教程

Aug 08, 2016 am 09:23 AM
lua nginx quot shell

Nginx與Lua

火云邪神語(yǔ)錄:天下武功,無(wú)堅(jiān)不破,唯快不破!Nginx的看家本領(lǐng)就是速度,Lua的拿手好戲亦是速度,這兩者的結(jié)合在速度上無(wú)疑有基因上的優(yōu)勢(shì)。

最先將Nginx,Lua組合到一起的是OpenResty,它有一個(gè)ngx_lua模塊,將Lua嵌入到了Nginx里面;隨后Tengine也包含了ngx_lua模塊。至于二者的區(qū)別:OpenResty是Nginx的Bundle;而Tengine則是Nginx的Fork。值得一提的是,OpenResty和Tengine均是國(guó)人自己創(chuàng)建的項(xiàng)目,前者主要由春哥和曉哲開發(fā),后者主要由淘寶打理。

至于OpenResty和Tengine孰優(yōu)孰劣,留給大家自己判斷,如下資料可供參考:

  • ngx_openresty: an Nginx ecosystem glued by Lua
  • 淘寶網(wǎng)Nginx應(yīng)用、定制與開發(fā)實(shí)戰(zhàn)

推薦看看春哥在Tech-Club上關(guān)于『由Lua粘合的Nginx生態(tài)環(huán)境』的演講實(shí)錄,有料!

安裝

需要最新版的Nginx,LuaJIT,ngx_devel_kit,ngx_lua等安裝文件。

安裝Lua或者LuaJIT都是可以的,但是出于效率的考慮,推薦安裝LuaJIT。

shell> wget http://luajit.org/download/LuaJIT-.tar.gz shell> tar zxvf LuaJIT-.tar.gz shell> cd LuaJIT- shell> make shell> make install

因?yàn)榘惭b在缺省路徑,所以LuaJIT對(duì)應(yīng)的lib,include均在/usr/local目錄里。

shell> export LUAJIT_LIB=/usr/local/lib shell> export LUAJIT_INC=/usr/local/include/luajit-

下面就可以編譯Nginx了:

shell> wget http://nginx.org/download/nginx-.tar.gz shell> tar zxvf nginx-.tar.gz shell> cd nginx- shell> ./configure --add-module=/path/to/ngx_lua \ --add-module=/path/to/ngx_devel_kit shell> make shell> make install

試著啟動(dòng)一下Nginx看看,如果你運(yùn)氣不好的話,可能會(huì)遇到如下錯(cuò)誤:

cannot open shared object file: No such file or directory

這是神馬情況?可以用ldd命令來看看:

shell> ldd /path/to/nginx libluajit-.so => not found

此類問題通常使用ldconfig命令就能解決:

shell> echo "/usr/local/lib" > /etc/ld.so.conf.d/usr_local_lib.conf shell> ldconfig

再試著啟動(dòng)Nginx看看,應(yīng)該就OK了。

應(yīng)用

我們先用一個(gè)簡(jiǎn)單的程序來暖暖場(chǎng):把下面的代碼加入到Nginx的配置文件nginx.conf,并重啟Nginx,然后瀏覽,就能看到效果了。

location /lua { set $test "hello, world."; content_by_lua ' ngx.header.content_type = "text/plain"; ngx.say(ngx.var.test); '; }

在深入學(xué)習(xí)ngx_lua之前,建議大家仔細(xì)閱讀一遍春哥寫的Nginx教程。

這里我就說關(guān)鍵的:Nginx配置文件所使用的語(yǔ)言本質(zhì)上是『聲明性的』,而非『過程性的』。Nginx處理請(qǐng)求的時(shí)候,指令的執(zhí)行并不是由定義指令時(shí)的物理順序來決定的,而是取決于指令所屬的階段,Nginx常用的階段按先后順序有:rewrite階段,access階段,content階段等等。演示代碼中的set指令屬于rewrite階段,content_by_lua指令屬于content階段,如果試著把兩條指令的順序交換一下,會(huì)發(fā)現(xiàn)程序依然能夠正常運(yùn)行。

下面我們嘗試結(jié)合Redis寫個(gè)更實(shí)戰(zhàn)一點(diǎn)的例子。

首先,我們需要?jiǎng)?chuàng)建一個(gè)Redis配置文件config.json,內(nèi)容如下:

{ "host": "", "port": "" }

然后,我們創(chuàng)建一個(gè)解析配置文件的腳本init.lua,其中用到了Lua CJSON模塊:

local cjson = require "cjson"; local config = ngx.shared.config; local file = io.open("config.json", "r"); local content = cjson.decode(file:read("*all")); file:close(); for name, value in pairs(content) do config:set(name, value); end

說明:代碼里用到了共享內(nèi)存,這樣就不必每次請(qǐng)求都解析一遍配置文件了。

接著,我們創(chuàng)建一個(gè)渲染內(nèi)容的腳本content.lua,用到了Resty Redis模塊:

ngx.header.content_type = "text/plain"; local redis = require "resty.redis"; local config = ngx.shared.config; local instance = redis:new(); local host = config:get("host"); local port = config:get("port"); local ok, err = instance:connect(host, port); if not ok then ngx.log(ngx.ERR, err); ngx.exit(ngx.HTTP_SERVICE_UNAVAILABLE); end instance:set("name", "laowang"); local name = instance:get("name") instance:close(); ngx.say("name: ", name);

說明:建議把Resty Redis模塊放到vendor目錄下,稍后在Nginx中統(tǒng)一設(shè)置。

最后,我們需要在Nginx配置文件里設(shè)置一下:

lua_shared_dict config 1m; lua_package_path "/path/to/vendor/?.lua;;"; init_by_lua_file /path/to/init.lua; server { lua_code_cache off; location /lua { content_by_lua_file /path/to/content.lua; } ... }

說明:為了方便調(diào)試,我關(guān)閉了lua_code_cache,如果是生產(chǎn)環(huán)境,應(yīng)該開啟它。

另外,安裝CJSON的時(shí)候,需要注意Makefile文件里頭文件的路徑,缺省是:

PREFIX = /usr/local LUA_INCLUDE_DIR = $(PREFIX)/include

如果安裝的是LuaJIT的話,最好把頭文件拷貝到相應(yīng)目錄:

cp /usr/local/include/luajit-/* /usr/local/include/

我最近參與的一個(gè)項(xiàng)目,提供了一些用于Web輪詢的接口,都是用Nginx+Lua實(shí)現(xiàn)的,雖然總共只有十幾臺(tái)服務(wù)器,但是每天可以提供幾十億次的請(qǐng)求量,賊拉拉的強(qiáng)。

最后,讓我引用某位屌絲的語(yǔ)錄做結(jié)束語(yǔ)吧:Lua,未婚男性程序員的最愛。

此條目由老王發(fā)表在Technical分類目錄,并貼了Lua、Nginx標(biāo)簽。將固定鏈接加入收藏夾。

NGINX與LUA》上有29條評(píng)論


以上就介紹了nginx教程,包括了方面的內(nèi)容,希望對(duì)PHP教程有興趣的朋友有所幫助。

本站聲明
本文內(nèi)容由網(wǎng)友自發(fā)貢獻(xiàn),版權(quán)歸原作者所有,本站不承擔(dān)相應(yīng)法律責(zé)任。如您發(fā)現(xiàn)有涉嫌抄襲侵權(quán)的內(nèi)容,請(qǐng)聯(lián)系admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費(fèi)脫衣服圖片

Undresser.AI Undress

Undresser.AI Undress

人工智能驅(qū)動(dòng)的應(yīng)用程序,用于創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用于從照片中去除衣服的在線人工智能工具。

Clothoff.io

Clothoff.io

AI脫衣機(jī)

Video Face Swap

Video Face Swap

使用我們完全免費(fèi)的人工智能換臉工具輕松在任何視頻中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費(fèi)的代碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

功能強(qiáng)大的PHP集成開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺化網(wǎng)頁(yè)開發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級(jí)代碼編輯軟件(SublimeText3)

nginx在windows中怎么配置 nginx在windows中怎么配置 Apr 14, 2025 pm 12:57 PM

如何在 Windows 中配置 Nginx?安裝 Nginx 并創(chuàng)建虛擬主機(jī)配置。修改主配置文件并包含虛擬主機(jī)配置。啟動(dòng)或重新加載 Nginx。測(cè)試配置并查看網(wǎng)站。選擇性啟用 SSL 并配置 SSL 證書。選擇性設(shè)置防火墻允許 80 和 443 端口流量。

docker怎么啟動(dòng)容器 docker怎么啟動(dòng)容器 Apr 15, 2025 pm 12:27 PM

Docker 容器啟動(dòng)步驟:拉取容器鏡像:運(yùn)行 "docker pull [鏡像名稱]"。創(chuàng)建容器:使用 "docker create [選項(xiàng)] [鏡像名稱] [命令和參數(shù)]"。啟動(dòng)容器:執(zhí)行 "docker start [容器名稱或 ID]"。檢查容器狀態(tài):通過 "docker ps" 驗(yàn)證容器是否正在運(yùn)行。

docker容器名稱怎么查 docker容器名稱怎么查 Apr 15, 2025 pm 12:21 PM

可以通過以下步驟查詢 Docker 容器名稱:列出所有容器(docker ps)。篩選容器列表(使用 grep 命令)。獲取容器名稱(位于 "NAMES" 列中)。

怎么查看nginx是否啟動(dòng) 怎么查看nginx是否啟動(dòng) Apr 14, 2025 pm 01:03 PM

確認(rèn) Nginx 是否啟動(dòng)的方法:1. 使用命令行:systemctl status nginx(Linux/Unix)、netstat -ano | findstr 80(Windows);2. 檢查端口 80 是否開放;3. 查看系統(tǒng)日志中 Nginx 啟動(dòng)消息;4. 使用第三方工具,如 Nagios、Zabbix、Icinga。

docker怎么創(chuàng)建容器 docker怎么創(chuàng)建容器 Apr 15, 2025 pm 12:18 PM

在 Docker 中創(chuàng)建容器: 1. 拉取鏡像: docker pull [鏡像名] 2. 創(chuàng)建容器: docker run [選項(xiàng)] [鏡像名] [命令] 3. 啟動(dòng)容器: docker start [容器名]

nginx怎么啟動(dòng) nginx怎么啟動(dòng) Apr 14, 2025 pm 01:06 PM

問題:如何啟動(dòng) Nginx?答案:安裝 Nginx啟動(dòng) Nginx驗(yàn)證 Nginx 是否已啟動(dòng)探索其他啟動(dòng)選項(xiàng)自動(dòng)啟動(dòng) Nginx

在Nginx和Apache之間進(jìn)行選擇:適合您的需求 在Nginx和Apache之間進(jìn)行選擇:適合您的需求 Apr 15, 2025 am 12:04 AM

NGINX和Apache各有優(yōu)劣,適合不同場(chǎng)景。1.NGINX適合高并發(fā)和低資源消耗場(chǎng)景。2.Apache適合需要復(fù)雜配置和豐富模塊的場(chǎng)景。通過比較它們的核心特性、性能差異和最佳實(shí)踐,可以幫助你選擇最適合需求的服務(wù)器軟件。

centos下phpstorm性能優(yōu)化方法 centos下phpstorm性能優(yōu)化方法 Apr 14, 2025 pm 05:30 PM

提升CentOS系統(tǒng)下PhpStorm性能的實(shí)用技巧本文提供多種方法,幫助您優(yōu)化CentOS系統(tǒng)中PhpStorm的性能,從而提高開發(fā)效率。在實(shí)施任何優(yōu)化措施前,請(qǐng)務(wù)必備份重要數(shù)據(jù)并在測(cè)試環(huán)境中驗(yàn)證效果。一、系統(tǒng)級(jí)優(yōu)化精簡(jiǎn)系統(tǒng)服務(wù):禁用不必要的系統(tǒng)服務(wù)和守護(hù)進(jìn)程,減少系統(tǒng)資源占用。無(wú)界面模式:如果不需要圖形界面,切換到無(wú)界面模式可顯著節(jié)省資源。卸載冗余軟件:移除不再使用的軟件包和服務(wù),釋放系統(tǒng)資源。二、PHP配置優(yōu)化啟用OPcache:安裝并配置OPcache擴(kuò)展,顯

See all articles