单机运行环境搭建之 --CentOS-6.5安装配置Tengine

一、安装pcre:

复制代码

cd/usr/local/src

wgethttp://downloads.sourceforge.net/project/pcre/pcre/8.34/pcre-8.34.tar.gz

tarzxvfpcre-8.34.tar.gz

cdpcre-8.34

./configure--prefix=/usr/local/pcre

make

makeinstall

复制代码

二、下载proxy_cache插件

cd/usr/local/src

wgethttp://labs.frickle.com/files/ngx_cache_purge-2.1.tar.gz

tarzxvfngx_cache_purge-2.1.tar.gz

三、安装tengine

按Ctrl+C复制代码

按Ctrl+C复制代码

/usr/local/nginx/sbin/nginx#启动nginx

chownnobody.nobody-R/usr/local/nginx/html

chmod700-R/usr/local/nginx/html

如果编译的问题的话,看看是不是下面的原因:

./configure:error:theHTTPSSLmodulerequiresOpenSSLlibrary

原因:安装http_ssl_module模块需要openssllibrary

解决:yuminstallopenssl-devel

./configure:error:theHTTPrewritemodulerequiresthePCRElibrary.

原因:安装http_rewrite_module模块需要先安装PCRE开发包

解决:yuminstallpcre-devel

注意:

--with-pcre=/usr/local/src/pcre-8.21指向的是源码包解压的路径,而不是安装的路径,否则会报错。

--add-module=/usr/local/src/ngx_cache_purge-2.1是指加载缓存的插件模块

四、设置Tengine开机启动

vi/etc/rc.d/init.d/nginx#编辑启动文件添加下面内容

复制代码

#!/bin/bash

#TengineStartupscript#processname:nginx

#chkconfig:-8515

#description:nginxisaWorldWideWebserver.Itisusedtoserve

#pidfile:/var/run/nginx.pid

#config:/usr/local/nginx/conf/nginx.conf

nginxd=/usr/local/nginx/sbin/nginx

nginx_config=/usr/local/nginx/conf/nginx.conf

nginx_pid=/usr/local/nginx/logs/nginx.pid

RETVAL=0

prog="nginx"

#Sourcefunctionlibrary.

./etc/rc.d/init.d/functions

#Sourcenetworkingconfiguration.

./etc/sysconfig/network

#Checkthatnetworkingisup.

[${NETWORKING}="no"]&&exit0

[-x$nginxd]||exit0

#Startnginxdaemonsfunctions.

start(){

if[-e$nginx_pid];then

echo"tenginealreadyrunning...."

exit1

fi

echo-n$"Starting$prog:"

daemon$nginxd-c${nginx_config}

RETVAL=$?

echo

[$RETVAL=0]&&touch/var/lock/subsys/nginx

return$RETVAL

}

#Stopnginxdaemonsfunctions.

stop(){

echo-n$"Stopping$prog:"

killproc$nginxd

RETVAL=$?

echo

[$RETVAL=0]&&rm-f/var/lock/subsys/nginx/usr/local/nginx/logs/nginx.pid

}

reload(){

echo-n$"Reloading$prog:"

#kill-HUP`cat${nginx_pid}`

killproc$nginxd-HUP

RETVAL=$?

echo

}

#Seehowwewerecalled.

case"$1"in

start)

start

;;

stop)

stop

;;

reload)

reload

;;

restart)

stop

start

;;

status)

status$prog

RETVAL=$?

;;

*)

echo$"Usage:$prog{start|stop|restart|reload|status|help}"

exit1

esac

exit$RETVAL

复制代码

保存退出

chmod775/etc/rc.d/init.d/nginx#赋予文件执行权限

chkconfig--level012345nginxon#设置开机启动

/etc/rc.d/init.d/nginxrestart

四、配置Tengine

将nginx初始配置文件备份,我们要重新创建配置文件.

mv/usr/local/nginx/conf/nginx.conf/usr/local/nginx/conf/nginx.conf.bak

创建nginx用户www

groupaddwww

useradd-gwwwwww

编辑主配置文件:

vi/usr/local/nginx/conf/nginx.conf

内容如下:

复制代码

userwwwwww;

worker_processes4;#工作进程数,为CPU的核心数或者两倍

error_loglogs/error.logcrit;#debug|info|notice|warn|error|crit

pidlogs/nginx.pid;

#Specifiesthevalueformaximumfiledescriptorsthatcanbeopenedbythisprocess.

worker_rlimit_nofile65535;

events{

useepoll;#Linux最常用支持大并发的事件触发机制

worker_connections65535;

}

http{

includemime.types;#设定mime类型,类型由mime.type文件定义

default_typeapplication/octet-stream;

charsetutf-8;

log_formatmain'$remote_addr-$remote_user[$time_local]"$request"'

'$status$body_bytes_sent"$http_referer"'

'"$http_user_agent""$http_x_forwarded_for"';

access_loglogs/access.logmain;

#设定请求缓冲

server_names_hash_bucket_size256;#增加,原为128

client_header_buffer_size256k;#增加,原为32k

large_client_header_buffers4256k;#增加,原为32k

#sizelimits

client_max_body_size50m;#允许客户端请求的最大的单个文件字节数

client_header_timeout3m;

client_body_timeout3m;

send_timeout3m;

sendfileon;

tcp_nopushon;

keepalive_timeout60;

tcp_nodelayon;

server_tokenson;#不显示nginx版本信息

limit_conn_zone$binary_remote_addrzone=perip:10m;#添加limit_zone,限制同一IP并发数

#fastcgi_intercept_errorson;#开启错误页面跳转

includegzip.conf;#压缩配置文件

includeproxy.conf;#proxy_cache参数配置文件

includevhost/*.conf;#nginx虚拟主机包含文件目录

includemysvrhost.conf;#后端WEB服务器列表文件

}

复制代码

编辑代理配置文件:

cd/usr/local/nginx/conf/

mkdirvhost

vi/usr/local/nginx/conf/proxy.conf

内容如下:

复制代码

#注:proxy_temp_path和proxy_cache_path指定的路径必须在同一分区

proxy_temp_path/tmp/proxy_temp;

#设置Web缓存区名称为cache_one,内存缓存空间大小为500MB,1天没有被访问的内容自动清除,硬盘缓存空间大小为30GB。

proxy_cache_path/tmp/proxy_cachelevels=1:2keys_zone=cache_one:500minactive=1dmax_size=30g;

client_body_buffer_size512k;#原为512k

proxy_connect_timeout50;#代理连接超时

proxy_read_timeout600;#代理发送超时

proxy_send_timeout600;#代理接收超时

proxy_buffer_size128k;#代理缓冲大小,原为32k

proxy_buffers16256k;#代理缓冲,原为464k

proxy_busy_buffers_size512k;#高负荷下缓冲大小,原为128k

proxy_temp_file_write_size1024m;#proxy缓存临时文件的大小原为128k

#proxy_ignore_client_aborton;#不允许代理端主动关闭连接

proxy_next_upstreamerrortimeoutinvalid_headerhttp_500http_503http_404http_502http_504;

复制代码

编辑主机配置文件:

vi/usr/local/nginx/conf/mysvrhost.conf

内容如下:

upstreamcn100{

ip_hash;#会话保持

server127.0.0.1:8080max_fails=1fail_timeout=60s;

server127.0.0.1:9080max_fails=1fail_timeout=60s;

}

编辑压缩配置文件:

vi/usr/local/nginx/conf/gzip.conf

内容如下:

复制代码

#网页GZIP压缩设置

#2012.4.2

#可通过http://tool.chinaz.com/Gzips/检测压缩情况

#

#启动预压缩功能,对所有类型的文件都有效

#gzip_staticon;#开启nginx_static后,对于任何文件都会先查找是否有对应的gz文件

#找不到预压缩文件,进行动态压缩

gzipon;

gzip_min_length1k;#设置最小的压缩值,单位为bytes.超过设置的min_length的值会进行压缩,小于的不压缩.

gzip_comp_level3;#压缩等级设置,1-9,1是最小压缩,速度也是最快的;9刚好相反,最大的压缩,速度是最慢的,消耗的CPU资源也多

gzip_buffers1664k;#设置系统的缓存大小,以存储GZIP压缩结果的数据流,它可以避免nginx频烦向系统申请压缩空间大小

gzip_typestext/plainapplication/x-javascripttext/csstext/javascript;

#关于gzip_types,如果你想让图片也开启gzip压缩,那么用以下这段吧:

#gzip_typestext/plainapplication/x-javascripttext/csstext/javascriptapplication/x-httpd-phpimage/jpegimage/gifimage/png;

#gzip公共配置

gzip_http_version1.1;#识别http的协议版本(1.0/1.1)

gzip_proxiedany;#设置使用代理时是否进行压缩,默认是off的

gzip_varyon;#和http头有关系,加个vary头,代理判断是否需要压缩

gzip_disable"MSIE[1-6].";#禁用IE6的gzip压缩

复制代码

编辑配置文件:

vi/usr/local/nginx/conf/vhost/cn100.conf

内容如下:

复制代码

server{

listen80;

server_namelocalhost;

#默认启动文件

indexindex.htmlindex.htm;

#配置发布目录为/usr/local/tomcat1/webapps/ROOT

root/usr/local/tomcat1/webapps/ROOT;

location/

{

#如果后端的服务器返回502、504、执行超时等错误,自动将请求转发到upstream负载均衡池中的另一台服务器,实现故障转移。

proxy_next_upstreamhttp_502http_504errortimeoutinvalid_header;

proxy_cachecache_one;

#对不同的HTTP状态码设置不同的缓存时间

proxy_cache_valid20030412h;

#以域名、URI、参数组合成Web缓存的Key值,Nginx根据Key值哈希,存储缓存内容到二级缓存目录内

proxy_cache_key$host$uri$is_args$args;

proxy_set_headerHost$host;

proxy_set_headerX-Real-IP$remote_addr;

proxy_set_headerX-Forwarded-For$proxy_add_x_forwarded_for;

proxy_passhttp://cn100;

proxy_pass_headerSet-Cookie;

#对用户传输Set-Cookie的http头,不然无法支持一些包含cookie的应用,比如我的typecho

#过期时间3天

expires3d;

}

#用于清除缓存,假设一个URL为http://192.168.8.42/test.txt,通过访问http://192.168.8.42/purge/test.txt就可以清除该URL的缓存。

location~/purge(/.*)

{

#设置只允许指定的IP或IP段才可以清除URL缓存。

allow127.0.0.1;

allow192.168.0.0/16;

denyall;

proxy_cache_purgecache_one$host$1$is_args$args;

}

#查看nginx的并发连接数配置

location/NginxStatus

{

stub_statuson;

access_logoff;

auth_basic"NginxStatus";

}

#定义Nginx输出日志的路径

#access_log/data/logs/nginx_wugk/access.logmain;

#error_log/data/logs/nginx_wugk/error.logcrit;

#access_logoff;#根据自己的需要选择是否启用access日志,注释掉代表启用

error_page404/404.html;

error_page500502503504/404.html;

location=/404.html{

roothtml;

}

limit_connperip50;#同一ip并发数为50,超过会返回503

}

复制代码

为Tengine配置一下系统的TCP设置,优化一下:

vi/etc/sysctl.conf

内容如下:

复制代码

net.ipv4.ip_forward=0

net.ipv4.conf.default.rp_filter=1

net.ipv4.conf.default.accept_source_route=0

kernel.sysrq=0

kernel.core_uses_pid=1

net.ipv4.tcp_syncookies=1

kernel.msgmnb=65536

kernel.msgmax=65536

kernel.shmmax=68719476736

kernel.shmall=4294967296

net.ipv4.tcp_max_tw_buckets=6000

net.ipv4.tcp_sack=1

net.ipv4.tcp_window_scaling=1

net.ipv4.tcp_rmem=4096873804194304

net.ipv4.tcp_wmem=4096163844194304

net.core.wmem_default=8388608

net.core.rmem_default=8388608

net.core.rmem_max=16777216

net.core.wmem_max=16777216

net.core.netdev_max_backlog=262144

net.core.somaxconn=262144

net.ipv4.tcp_max_orphans=3276800

net.ipv4.tcp_max_syn_backlog=262144

net.ipv4.tcp_timestamps=0

net.ipv4.tcp_synack_retries=1

net.ipv4.tcp_syn_retries=1

net.ipv4.tcp_tw_recycle=1

net.ipv4.tcp_tw_reuse=1

net.ipv4.tcp_mem=94500000915000000927000000

net.ipv4.tcp_fin_timeout=1

net.ipv4.tcp_keepalive_time=30

net.ipv4.ip_local_port_range=102465000

#允许系统打开的端口范围

复制代码

使配置立即生效

/sbin/sysctl-p

制作一个重启全部的脚本

vi/root/restartall

复制代码

#!/bin/sh

#

#重启memcached进程

servicememcachedrestart

#清空日志

rm-f/usr/local/tomcat1/logs/*

rm-f/usr/local/tomcat2/logs/*

#清空缓存

rm-rf/tmp/proxy_cache

#重启动tomcat

/usr/local/tomcat1/bin/shutdown.sh

/usr/local/tomcat2/bin/shutdown.sh

/usr/local/tomcat1/bin/startup.sh

/usr/local/tomcat2/bin/startup.sh

#重启nginx

servicenginxrestart

复制代码

给运行权限

chmod777/root/restartall

以后重启服务只需要:

/root/restartall

相关推荐