单机运行环境搭建之 --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