天天看點

Tengine編譯安裝

  Tengine 是由淘寶網發起的 Web 伺服器項目。它在 Nginx 的基礎上,針對大通路量網站的需求,添加了很多進階功能和特性。Tengine 的性能和穩定性已經在大型的網站如淘寶網,天貓商城等得到了很好的檢驗。它的最終目标是打造一個高效、穩定、安全、易用的Web平台。

1.Tengine源碼擷取

  Tengine 使用 Tengine 2.3.2示範,據其官網介紹,該版本繼承了 Nginx 1.17.3 版本的所有特性,并相容了 Nginx 的配置參數。Tengine 開發了很多自有子產品,同時也內建了很多優秀的第三方子產品,源代碼可以通過 Tengine 的官方網站獲得,擷取指令如下:

mkdir -p /opt/data/source
cd /opt/data/source
wget http://tengine.taobao.org/download/tengine-2.3.2.tar.gz
tar zxmf tengine-2.3.2.tar.gz      

2.編譯配置參數

  Tengine 比開源版 Nginx 增加了一些編譯配置參數。Tengine 增加的編譯配置參數如下表所示。

編譯配置參數 預設編譯狀态 參數說明
--without-procs 編譯 不編譯 Procs 子產品
--without-http_ssl_module 編譯 不編譯 HTTP SSL 支援子產品
--without-http_stub_status_module 編譯 不編譯運作狀态子產品
--without-http-upstream-rbtree 編譯 不使用紅黑樹(RBTree)方式進行上遊伺服器的查找
--with-http_lua_module 不編譯 編譯 Lua 腳本子產品
--with-stream_sni 不編譯 編譯 TCP 代理時基于 SSL 的 SNI 支援
--with-jemalloc 不編譯 啟用 jemalloc 記憶體管理

  對于上表,有以下兩點說明。

  • jemalloc 是 Facebook 開源的一個記憶體管理配置設定器;
  • Nginx 原有編譯配置參數參見《​​Nginx源碼編譯安裝​​》一節。

3.代碼編譯

  代碼編譯過程如下。

# 安裝編譯依賴
yum -y install gcc pcre-devel  zlib-devel openssl-devel libxml2-devel \
    libxslt-devel gd-devel GeoIP-devel yajl-devel jemalloc-devel \
    libatomic_ops-devel luajit luajit-devel perl-devel perl-ExtUtils-Embed

# 執行編譯配置
./configure

# 代碼編譯及安裝      

  安裝 Lua 或 LuaJIT 都可以,LuaJIT 是 Lua 的高效版本,推薦安裝 LuaJIT。編譯完成後,預設安裝目錄為 /usr/local/nginx。

4.Tengine 內建的子產品

  Tengine 自帶的子產品都存儲在源碼目錄的 modules 檔案中,使用者可根據需要通過編譯配置參數​

​--add-module​

​進行選擇。子產品說明如下表所示。

子產品檔案夾名 子產品說明
mod_dubbo 提供對與後端 Dubbo 服務體系對接的支援
ngx_backtrace_module 該子產品可用于在工作程序異常退出時轉儲 Nginx 的回溯資訊,如在接收到某些信号(sigabr、sigbus、sigfpe、sigill、sigiot、sigsegv)時。它非常便于調試
ngx_debug_pool 該子產品可以提供 Nginx/Tengine 記憶體池占用記憶體的狀态資訊
ngx_debug_timer 該子產品可以提供 Nginx/Tengine 定時器的狀态資訊
ngx_http_concat_module 類似于 Apache 中的 mod_concat 子產品,用于将多個檔案合并在一個響應封包中
ngx_http_footer_filter_module 在請求的響應末尾輸出一段内容
ngx_http_lua_module Lua 腳本內建子產品
ngx_http_proxy_connect_module 提供對 HTTP 的 CONNECT 方法的支援
ngx_http_reqstat_module 監控子產品
ngx_http_slice_module 檔案切片子產品
ngx_http_sysguard_module 該子產品監控記憶體(含 SWAP 分區)、CPU 和請求的響應時間,當某些監控名額達到設定的門檻值時,跳轉到指定的 URL
ngx_http_tfs_module 該子產品實作了 TFS 的用戶端,為 TFS 提供了 RESTful API。TFS 的全稱是 Taobao File System,是淘寶的一個開源分布式檔案系統
ngx_http_trim_filter_module 該子產品用于删除 HTML、内嵌在 JavaScript 和 CSS 中的注釋以及重複的空白符
ngx_http_upstream_check_module 該子產品可以為 Tengine 提供主動式後端伺服器健康檢查功能
ngx_http_upstream_consistent_hash_module 該子產品提供一緻性 hash 作為負載均衡算法
ngx_http_upstream_dynamic_module 此子產品可在運作時動态解析 upstream 中 Server 域名
ngx_http_upstream_dyups_module upstream 動态修改子產品
ngx_http_upstream_session_sticky_module 該子產品是一個負載均衡子產品,通過 cookie 實作用戶端與後端伺服器的會話保持,在一定條件下可以保證同一個用戶端通路的是同一個後端伺服器
ngx_http_upstream_vnswrr_module 該子產品是一個高效的負載均衡算法,同 Nginx 官方的權重輪詢算法 SWRR 相比,VNSWRR 具備平滑、散列和高性能特征
ngx_http_user_agent_module 該子產品可以分析 HTTP 消息頭屬性字段“User-Agent”中的内容
ngx_multi_upstream_module Dubbo 服務的多路複用連接配接支援子產品
ngx_slab_stat 該子產品可以提供 Nginx/Tengine 共享記憶體的狀态資訊

  上述子產品功能說明來源于源碼中的說明文檔,具體使用方法可參照源碼中的說明文檔。

  Tengine 編譯完成後,可使用​

​nginx -m​

​指令檢視所有已經加載的子產品,static 辨別是靜态編譯的,shared 辨別是動态編譯的。

作者:​​小家電維修​​

轉世燕還故榻,為你銜來二月的花。

繼續閱讀