1.什么是tengine?
說到tengine,首先還是得說下nginx了,大家對於nginx並不陌生,對於基本的需求都能滿足,如果是涉及高級性能,那么就必須使用商用版nginx plus了,一談到商用,大家就特別敏感,有沒有開源免費的呢,有的,所以tengine誕生了。
Tengine(http://tengine.taobao.org/index_cn.html)是由淘寶網發起的Web服務器項目。它在Nginx的基礎上,針對大訪問量網站的需求,添加了很多高級功能和特性。主要特性有:
- 繼承Nginx-1.6.2的所有特性,兼容Nginx的配置;
- 動態模塊加載(DSO)支持。加入一個模塊不再需要重新編譯整個Tengine;
- 支持SO_REUSEPORT選項,建連性能提升為官方nginx的三倍;
- 支持SPDY v3協議,自動檢測同一端口的SPDY請求和HTTP請求;
- 流式上傳到HTTP后端服務器或FastCGI服務器,大量減少機器的I/O壓力;
- 更加強大的負載均衡能力,包括一致性hash模塊、會話保持模塊,還可以對后端的服務器進行主動健康檢查,根據服務器狀態自動上線下線,以及動態解析upstream中出現的域名;
- 輸入過濾器機制支持。通過使用這種機制Web應用防火牆的編寫更為方便;
- 支持設置proxy、memcached、fastcgi、scgi、uwsgi在后端失敗時的重試次數
- 動態腳本語言Lua支持。擴展功能非常高效簡單;
- 支持管道(pipe)和syslog(本地和遠端)形式的日志以及日志抽樣;
- 支持按指定關鍵字(域名,url等)收集Tengine運行狀態;
- 組合多個CSS、JavaScript文件的訪問請求變成一個請求;
- 自動去除空白字符和注釋從而減小頁面的體積
- 自動根據CPU數目設置進程個數和綁定CPU親緣性;
- 監控系統的負載和資源占用從而對系統進行保護;
- 顯示對運維人員更友好的出錯信息,便於定位出錯機器;
- 更強大的防攻擊(訪問速度限制)模塊;
- 更方便的命令行參數,如列出編譯的模塊列表、支持的指令等;
- 可以根據訪問文件類型設置過期時間
2.tengine安裝前准備
2.1 編譯環境准備
2.2 Tengine用戶和組添加
groupadd tengine
useradd -g tengine tengine
#設置用戶tengine密碼
passwd tengine
2.3 openssl安裝
OpenSSL 是一個強大的安全套接字層密碼庫,囊括主要的密碼算法、常用的密鑰和證書封裝管理功能及SSL協議,並提供豐富的應用程序供測試或其它目的使用。安裝OpenSSL(http://www.openssl.org/source/)主要是為了讓tengine支持Https的訪問請求。
#在https://www.openssl.org/source/下載openssl-1.0.2.tar.gz
#wget http://www.openssl.org/source/openssl-1.0.2.tar.gz
cd /home/tengine/software
#解壓安裝文件
tar -zxvf openssl-1.0.2.tar.gz
cd openssl-1.0.2
#prefix配置安裝路徑
./config --prefix=/home/tengine/openssl-1.0.2
make
make install
2.4 zlib安裝
Zlib是提供資料壓縮之用的函式庫,當Tengine想啟用GZIP壓縮的時候就需要使用到Zlib(http://www.zlib.net/)。
#在https://www.openssl.org/source/下載zlib-1.2.8.tar.gz
#wget http://zlib.net/zlib-1.2.8.tar.gz
cd /home/tengine/software
#2解壓安裝文件
tar -zxvf zlib-1.2.8.tar.gz
cd zlib-1.2.8
#3prefix配置安裝路徑
./configure --prefix=/home/tengine/zlib-1.2.8
make
make install
2.5 pcre安裝
PCRE(Perl Compatible Regular Expressions)是一個Perl庫,包括 perl 兼容的正則表達式庫。nginx rewrite依賴於PCRE庫,所以在安裝Tengine前一定要先安裝PCRE,最新版本的PCRE可在官網(http://www.pcre.org/)獲取。
#在ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/下載pcre-8.39.tar.gz
#wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.39.tar.gz
cd /home/tengine/software
#2解壓安裝文件
tar -zxvf pcre-8.39.tar.gz
cd pcre-8.39
#3prefix配置安裝路徑
./configure --prefix=/home/tengine/pcre-8.39
make
make install
2.6 jemalloc安裝
jemalloc(http://www.canonware.com/jemalloc/)是一個更好的內存管理工具,使用jemalloc可以更好的優化Tengine的內存管理。
#在http://www.canonware.com/download/jemalloc/下載jemalloc-4.2.1.tar.bz2
#wget http://www.canonware.com/download/jemalloc/jemalloc-4.2.1.tar.bz2
cd /home/tengine/software
#2解壓安裝文件
tar -jxvf jemalloc-4.2.1.tar.bz2
cd jemalloc-4.2.1
#3jemalloc配置安裝路徑
./configure --prefix=/home/tengine/jemalloc-4.2.1
make
make install
3.tengine安裝
cd /home/tengine/software
#2.解壓安裝文件
tar -zxvf tengine-2.1.2.tar.gz
cd tengine-2.1.2
#3.with-pcre指定依賴包源代碼位置,prefix配置安裝路徑
./configure --prefix=/home/tengine/tengine-2.1.2 \
--user=tengine \
--group=tengine \
--with-pcre=../pcre-8.39 \
--with-zlib=../zlib-1.2.8 \
--with-openssl=../openssl-1.0.2 \
--with-jemalloc=../jemalloc-4.2.1 \
--with-http_gzip_static_module \
--with-http_realip_module \
--with-http_stub_status_module \
--with-http_concat_module
make
make install
注意:with-pcre指定依賴包源代碼位置,prefix配置安裝路徑
以上操作都是使用root用戶進行編譯
4.修改tengine目錄所屬用戶組和權限
chown -R tengine /home/tengine/tengine-2.1.2/sbin
chmod -R 700 /home/tengine/tengine-2.1.2/
5.tengine常用命令
tegine命令其實和之前nginx並無差別,這里簡單列舉幾個,其他命令詳見nginx官網
cd /home/tengine/tengine-2.1.2/sbin
./nginx
#2.查看端口
netstat -ntlp
#3.關閉tengine
cd /home/tengine/tengine-2.1.2/sbin
./nginx -s stop
6.Tengine加入PATH
vi /home/tengine/.bashrc
export TENGINE_HOME=/home/tengine/tengine-2.1.2
export PATH=$PATH:$TENGINE_HOME/sbin
7.Tengine開機自啟動
ln -s /home/tengine/tengine-2.1.2/sbin/nginx /etc/init.d/nginx
#賦予執行權限
chmod a+x /etc/init.d/nginx
vi /etc/rc.local
#增加如下內容
/etc/init.d/nginx