一、简介
Tengine是由淘宝网发起的Web服务器项目。它在Nginx的基础上,针对大访问量网站的需求,添加了很多高级功能和特性。Tengine的性能和稳定性已经在大型的网站如淘宝网,天猫商城等得到了很好的检验。它的最终目标是打造一个高效、稳定、安全、易用的Web平台。
二、安装
0.安装tengine依赖包readline
tar zxf readline-6.2.tar.gz&& cd readline-6.2 && ./configure && make && make install
1.安装tengine依赖包lua
tar zxf lua-5.1.5.tar.gz && cd lua-5.1.5 && make linux &&make install
2.安装tengine依赖包lua-nginx-module-master
unzip lua-nginx-module-master.zip
3.安装tengine依赖包ngx_cache_purge
tarzxf ngx_cache_purge-2.0.tar.gz
4.安装tengine依赖包headers-more-nginx-module
unzipheaders-more-nginx-module-0.19rc1.zip
5.安装tengine依赖包pcre
unzip pcre-8.32.zip
cd pcre-8.32 && ./configure && make && make install
6.安装tengine
- tarzxvf tengine-1.5.1.tar.gz && cd tengine-1.5.1
- ./configure--prefix=<span style="color:#ff0000;">/app/tengine</span> --with-http_stub_status_module--with-http_ssl_module --with-http_gzip_static_module --add-module=<span style="color:#ff0000;">/app/tengine/</span>ngx_cache_purge-2.0--add-module=<span style="color:#ff0000;">/app/tengine/</span>lua-nginx-module-master --add-module=<span style="color:#ff0000;">/app/tengine/</span>headers-more-nginx-module-0.19rc1 --with-pcre=<span style="color:#ff0000;">/app/tengine/</span>pcre-8.32--with-pcre-jit --with-http_concat_module --with-http_concat_module=shared
注意:我将tengine解压在了/app/softlib/ 目录下,因此依赖包就在/app/tengine/ 目录下。在进行./configure的时候一定要注意修改成你的依赖包的路径!(用红色标记部分)
- ./configure --prefix=/app/tengine --conf-path=/app/tengine/conf/nginx.conf --with-http_concat_module --with-http_realip_module --with-http_addition_module --with-http_gzip_static_module --with-http_random_index_module --with-http_stub_status_module --with-http_sub_module --with-http_dav_module --with-pcre=<span style="color:#ff0000;">/app/tengine/</span>pcre-8.32
注意:我将tengine装在了/app/tengine下面,注意修改pcre路径。
7.修改配置文件nginx.conf
文件地址:/app/tengine/conf/nginx.conf
dso{
load ngx_http_concat_module.so;
}
在http模块添加
concat on;
- <pre name="code" class="html"><pre name="code" class="html">user www www ;
- worker_processes 18;
- error_log logs/error.log crit;
- pid logs/nginx.pid;
- #Specifies the value for maximum file descriptors that can be opened by this process.
- worker_rlimit_nofile 65535;
- events
- {
- use epoll;
- worker_connections 65535;
- }
- http
- {
- include mime.types;
- default_type application/octet-stream;
- #charset gb2312;
- server_tag GOME;
- server_tokens off;
- log_format access '$remote_addr<span style="white-space:pre"> </span>$remote_user<span style="white-space:pre"> </span>$http_host<span style="white-space:pre"> </span>[$time_local]<span style="white-space:pre"> </span>"$request"<span style="white-space:pre"> </span>$status<span style="white-space:pre"> </span>$body_bytes_sent<span style="white-space:pre"> </span>"$http_referer"<span style="white-space:pre"> </span>"$http_user_agent"<span style="white-space:pre"> </span>"$http_cookie"<span style="white-space:pre"> </span>"$http_x_forwarded_for"<span style="white-space:pre"> </span>"$request_time"';
- # log_format access '$remote_addr - $remote_user $http_host - [$time_local] "$request" '
- # '$status $body_bytes_sent "$http_referer" '
- # '"$http_user_agent" "$http_cookie"'
- # '"$http_x_forwarded_for" "$request_time"';
- server_names_hash_bucket_size 128;
- client_header_buffer_size 32k;
- large_client_header_buffers 4 32k;
- client_max_body_size 8m;
- sendfile on;
- tcp_nopush on;
- keepalive_timeout 60;
- tcp_nodelay on;
- fastcgi_connect_timeout 300;
- fastcgi_send_timeout 300;
- fastcgi_read_timeout 300;
- fastcgi_buffer_size 64k;
- fastcgi_buffers 4 64k;
- fastcgi_busy_buffers_size 128k;
- fastcgi_temp_file_write_size 128k;
- gzip on;
- gzip_min_length 1k;
- gzip_buffers 4 16k;
- gzip_http_version 1.0;
- gzip_comp_level 2;
- gzip_types text/plain application/x-javascript text/css application/xml;
- gzip_vary on;
- limit_req2_zone $http_x_forwarded_for zone=wap:500m rate=100r/s;
- #limit_zone crawler $binary_remote_addr 10m;
- limit_req_zone $anti_spider zone=anti_spider:10m rate=2r/s;
- #white_black_list_conf conf/white.list zone=white:10m;
- server
- {
- listen <span style="white-space:pre"> </span> 80;
- server_name <span style="white-space:pre"> </span> m.gome.com.cn;
- index <span style="white-space:pre"> </span> index.html index.php index.htm;
- root <span style="white-space:pre"> </span> /app/htdocs/;
- # include <span style="white-space:pre"> </span> /app/htdocs/.htaccess;
- limit_req zone=anti_spider burst=6 nodelay;
- if ($http_user_agent ~* "EgouSpider|Baiduspider") {
- set $anti_spider $http_user_agent;
- }
- <span style="white-space:pre"> </span>if (!-f $request_filename){
- <span style="white-space:pre"> </span>rewrite (.*)/index.php last;
- <span style="white-space:pre"> </span>}
- <span style="white-space:pre"> </span>error_page 404 /error.html;
- <span style="white-space:pre"> </span>error_page 500 502 503 504 /fault.html;
- location ~ \/\.htaccess
- {
- deny all;
- }
- <span style="white-space:pre"> </span>location ~ .*\.(php|php5)?$
- <span style="white-space:pre"> </span>{
- <span style="white-space:pre"> </span> fastcgi_pass 127.0.0.1:9000;
- <span style="white-space:pre"> </span> fastcgi_index index.php;
- <span style="white-space:pre"> </span> include fastcgi.conf;
- <span style="white-space:pre"> </span> limit_req zone=anti_spider burst=6 nodelay;
- <span style="white-space:pre"> </span> if ($http_user_agent ~* "EgouSpider|Baiduspider") {
- <span style="white-space:pre"> </span> set $anti_spider $http_user_agent;
- <span style="white-space:pre"> </span>}
- #include blacksip.conf;
- if ($query_string ~* "No=(.*)&sId=(.*)&d=(.*)&intcmp=(.*)")
- {
- set $No $1;
- set $sId $2;
- set $d $3;
- set $intcmp $4;
- rewrite "^/product_details.html" http://m.gome.com.cn/product-$No-$sId-$d-$intcmp.html? permanent;
- }
- if ($query_string ~* "No=(.*)&sId=(.*)&d=(.*)")
- {
- set $No $1;
- set $sId $2;
- set $d $3;
- rewrite "^/product_details.html" http://m.gome.com.cn/product-$No-$sId-$d-0.html? permanent;
- }
- if ($query_string ~* "No=(.*)&sId=(.*)")
- {
- set $No $1;
- set $sId $2;
- rewrite "^/product_details.html" http://m.gome.com.cn/product-$No-$sId-0-0.html? permanent;
- }
- if ($query_string ~* "No=(.*)")
- {
- set $No $1;
- rewrite "^/product_details.html" http://m.gome.com.cn/product-$No-0-0-0.html? permanent;
- }
- }
- location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
- {
- expires 30d;
- }
- location ~ .*\.(js|css)?$
- {
- expires 1h;
- }
- location ~ .*\.registered.html?$
- {
- limit_req2 zone=wap burst=30 block=3x30x1800;
- }
- access_log /app/tengine/logs/gome_wap.access.log access;
- }
- server{
- listen 9001;
- access_log off;
- location / {
- check_status;
- }
- location /status {
- stub_status on;
- }
- }
- }
- # vi fastcgi.conf
- fastcgi_param GATEWAY_INTERFACE CGI/1.1;
- fastcgi_param SERVER_SOFTWARE nginx;
- fastcgi_param QUERY_STRING $query_string;
- fastcgi_param REQUEST_METHOD $request_method;
- fastcgi_param CONTENT_TYPE $content_type;
- fastcgi_param CONTENT_LENGTH $content_length;
- fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
- fastcgi_param SCRIPT_NAME $fastcgi_script_name;
- fastcgi_param REQUEST_URI $request_uri;
- fastcgi_param DOCUMENT_URI $document_uri;
- fastcgi_param DOCUMENT_ROOT $document_root;
- fastcgi_param SERVER_PROTOCOL $server_protocol;
- fastcgi_param REMOTE_ADDR $remote_addr;
- fastcgi_param REMOTE_PORT $remote_port;
- fastcgi_param SERVER_ADDR $server_addr;
- fastcgi_param SERVER_PORT $server_port;
- fastcgi_param SERVER_NAME $server_name;
- # PHP only, required if PHP was built with --enable-force-cgi-redirect
- fastcgi_param REDIRECT_STATUS 200;
- # cd /etc/init.d/
- # vi nginx
- 添加
- #!/bin/sh
- #
- # nginx - this script starts and stops the nginx daemon
- #
- # chkconfig: - 85 15
- # description: Nginx is an HTTP(S) server, HTTP(S) reverse \
- # proxy and IMAP/POP3 proxy server
- # processname: nginx
- # config: /etc/nginx/nginx.conf
- # config: /etc/sysconfig/nginx
- # pidfile: /app/tengine/logs/nginx.pid
- # Source function library.
- . /etc/rc.d/init.d/functions
- # Source networking configuration.
- . /etc/sysconfig/network
- # Check that networking is up.
- [ "$NETWORKING" = "no" ] && exit 0
- nginx="/app/tengine/sbin/nginx"
- prog=$(basename $nginx)
- NGINX_CONF_FILE="/app/tengine/conf/nginx.conf"
- [ -f /etc/sysconfig/nginx ] && . /etc/sysconfig/nginx
- lockfile=/app/tengine/logs/nginx
- start() {
- [ -x $nginx ] || exit 5
- [ -f $NGINX_CONF_FILE ] || exit 6
- echo -n $"Starting $prog: "
- daemon $nginx -c $NGINX_CONF_FILE
- retval=$?
- echo
- [ $retval -eq 0 ] && touch $lockfile
- return $retval
- }
- stop() {
- echo -n $"Stopping $prog: "
- killproc $prog
- retval=$?
- echo
- [ $retval -eq 0 ] && rm -f $lockfile
- return $retval
- }
- restart() {
- configtest_q || configtest || return 6
- stop
- start
- }
- reload() {
- configtest_q || configtest || return 6
- echo -n $"Reloading $prog: "
- killproc $nginx -HUP
- echo
- }
- configtest() {
- $nginx -t -c $NGINX_CONF_FILE
- }
- configtest_q() {
- configtest >/dev/null 2>&1
- }
- rh_status() {
- status $prog
- }
- rh_status_q() {
- rh_status >/dev/null 2>&1
- }
- # Upgrade the binary with no downtime.
- upgrade() {
- local pidfile="/app/tengine/logs/${prog}.pid"
- local oldbin_pidfile="${pidfile}.oldbin"
- configtest_q || configtest || return 6
- echo -n $"Staring new master $prog: "
- killproc $nginx -USR2
- retval=$?
- echo
- sleep 1
- if [[ -f ${oldbin_pidfile} && -f ${pidfile} ]]; then
- echo -n $"Graceful shutdown of old $prog: "
- killproc -p ${oldbin_pidfile} -QUIT
- retval=$?
- echo
- return 0
- else
- echo $"Something bad happened, manual intervention required, maybe restart?"
- return 1
- fi
- }
- case "$1" in
- start)
- rh_status_q && exit 0
- $1
- ;;
- stop)
- rh_status_q || exit 0
- $1
- ;;
- restart|configtest)
- $1
- ;;
- force-reload|upgrade)
- rh_status_q || exit 7
- upgrade
- ;;
- reload)
- rh_status_q || exit 7
- $1
- ;;
- status|status_q)
- rh_$1
- ;;
- condrestart|try-restart)
- rh_status_q || exit 7
- restart
- ;;
- *)
- echo $"Usage: $0 {start|stop|reload|configtest|status|force-reload|upgrade|restart}"
- exit 2
- esac
- # chmod 755 /etc/init.d/nginx
- # chkconfig nginx on
- # chkconfig --level 24 nginx off
- # cp /app/tengine/html/* /app/htdocs
到此,配置结束。
- # service nginx start
则启动成功。
http://blog.csdn.net/Zhao_S/article/details/42454599
相关推荐
#启动进程,通常设置成和cpu的数量相等 worker_processes auto; #更改worker进程的最大打开文件数限制。如果没设置的话,这个值为操作系统的限制。设置后你的操作系统和Nginx可以处理比“ulimit -a”更多的文件,所以...
在IT行业中,LAMP(Linux、Apache、MySQL、PHP)是常见的Web服务器架构,但在一些特定的场景下,人们可能会选择LTNMP架构,它由Linux操作系统、Tengine Web服务器、MariaDB数据库以及PHP编程语言组成。这个"ltnmp, ...
在 Cygwin 下编译 Tengine 可能涉及到解决依赖问题、配置环境以及解决与 Windows 系统交互的兼容性问题。经过了编译和测试,这个版本已经被确认在 Windows 平台上可以正常运行。 标签 "tengine-2.3.2 nginx cygwin...
通过Cygwin,开发者能够在Windows上构建和运行原本需要Linux环境的软件,如Tengine。在这个过程中,开发者已经修复了源代码中许多与Windows编译不兼容的问题,确保了Tengine在Windows上的稳定运行。 在提供的文件...
在安装Tengine-2.3.2时,通常需要进行以下步骤: 1. 解压下载的`tengine-2.3.2`压缩包。 2. 配置编译选项,指定安装路径、模块等。 3. 编译并安装。 4. 配置Tengine的配置文件,根据实际需求定制服务。 5. 启动...
Tengine是一个基于Nginx的Web服务器项目,由淘宝网发起并维护,它在Nginx的基础上进行了优化和增强,特别适合处理高并发的访问请求。Tengine的主要特点包括稳定性、高性能和丰富的模块支持,它继承了Nginx-1.2.3的...
Tengine是由阿里巴巴集团开发并开源的一款Web服务器,它的全称为"Tengine-2.1.0",在本例中以".tar.gz"格式提供,这是一个常见的Linux和Unix系统中的归档压缩文件。Tengine基于著名的Web服务器Nginx,但在其基础上...
在安装Tengine-2.2.2之前,确保你的系统已经满足了以下前提条件: - 操作系统:通常支持Linux系统,例如Ubuntu、CentOS等。 - 编译工具:GCC编译器和其他必要的构建工具。 - Nginx依赖库:如pcre库、zlib库、...
在Linux系统中,Shell脚本是一种强大的工具,可以执行一系列命令,简化重复任务,例如软件的安装和配置。 以下是安装步骤的详细说明: 1. **检查系统环境**: 在开始安装之前,确保你的系统满足Tengine的最低硬件...
Tengine在性能、稳定性和安全性方面经过了淘宝网等大型在线平台的实战检验,它以其高效、功能丰富、安装配置简便以及对系统资源消耗少而著称。 TengineRPM是专为CentOS系统编译打包的RPM安装包,简化了Tengine的...
1. **稳定性增强**:Tengine在Nginx的基础上进行了大量的稳定性测试和优化,确保在高并发环境下仍能保持稳定运行,避免服务中断。 2. **安全性能提升**:Tengine添加了更多的安全模块,如防止DOS攻击的模块,增强了...
Tengine继承了Nginx-1.2.3的所有功能,并对其进行了一系列优化,使其在处理高并发场景下表现更优。在诸如天猫商城这样的大型电商网站中,Tengine已经证明了其卓越的能力。 【Tengine与Nginx的区别】 Tengine的主要...
Tengine支持在线热更新和热重启,这意味着可以在不中断服务的情况下更新配置或升级服务器,这对于大型网站来说是至关重要的功能。 8. **运维工具** Tengine提供了丰富的运维工具,如监控、日志分析、性能测试等,...
2. **Tengine作为统一网关的角色与优势**:Tengine在统一网关中的作用及其实现的多项关键功能,如多业务共享、功能和运维集中、集群分流能力等。 3. **统一网关的技术实现**:包括长连接通道保持、共享宕机容灾、...
首先确认tengine已经启动,在网站根目录下写了个静态测试网页,测试没问题,可以正常显示。 确认php-fpm已经启动,查询服务端口正常。怀疑tengine的php支持没有配置。打开/usr/local/tengine/conf/vhost下面的*.conf...
用时十到几十分钟不等,安装时间取决于电脑的下载速度和配置。也可以事先下载好完整,安装时无需下载。如何切换php版:假如你先安装的apache+php5.3你想切换成nginx+php5.4你就再走一次./phpstudy.bin但是你会发现有...
在安装LNMP服务之前,需要准备相应的软件包。这些软件包包括MySQL数据库服务器、PHP解释器、Nginx服务器以及libmcrypt加密算法扩展库和pcre库。这些软件的版本需要匹配,以确保系统的兼容性和稳定性。根据手册中的...