首页 > 其他 > 详细

nginx+keepalived

时间:2014-04-09 16:46:51      阅读:675      评论:0      收藏:0      [点我收藏+]

1.概述

Nginx ("engine x") 是一个高性能的 HTTP 和反向代理服务器,也是一个 IMAP/POP3/SMTP 代理服务器。 Nginx 是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发的,它已经在该站点运行超过三年了。Igor 将源代码以类BSD许可证的形式发布。


Nginx 超越 Apache 的高性能和稳定性,使得国内使用 Nginx 作为 Web 服务器的网站也越来越多,其中包括新浪博客、新浪播客、网易新闻、腾讯网、搜狐博客等门户网站频道,六间房、56.com等视频分享网站,Discuz!官方论坛、水木社区等知名论坛,盛大在线、金山逍遥网等网络游戏网站,豆瓣、人人网、YUPOO相册、金山爱词霸、迅雷在线等新兴Web 2.0网站。

2.获取开源相关程序

2.1.[适用Centos操作系统]利用Centos Linux系统自带的Yum命令安装、升级所需的程序库(ReadHat等其他Linux系统可从安装光盘中找到这些程序库的RPM包,进行安装)


yum -y install gcc gcc-c++ autoconf libjpeglibjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-develzlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel ncursesncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel krb5 krb5-devel libidnlibidn-devel openssl openssl-devel openldap openldap-devel nss_ldapopenldap-clients openldap-servers


2.2.[适用RedHat操作系统]ReadHat等其他Linux发行版本可从安装盘找程序库的RPM包(事先通过 rpm –qa|grep libjpeg命令查看所需rpm包是否存在,通常xxx-devel不存在,需要安装),readhat可以直接利用centos的rpm包安装,以下是rpm包下载网址:

1.ReadHatAS6&Centos6.

http://mirrors.163.com/centos/6.5/os/i386/

2.RedHat系统环境,通常情况下缺少支持包安装 i386系统

wget http://blog.s135.com/soft/linux/nginx_php/rpm/i386/libjpeg-devel-6b-33.i386.rpm

rpm -ivhlibjpeg-devel-6b-33.i386.rpm

wgethttp://blog.s135.com/soft/linux/nginx_php/rpm/i386/freetype-devel-2.1.9-1.i386.rpm

rpm -ivhfreetype-devel-2.1.9-1.i386.rpm

wget http://blog.s135.com/soft/linux/nginx_php/rpm/i386/libpng-devel-1.2.7-1.i386.rpm

rpm -ivhlibpng-devel-1.2.7-1.i386.rpm

3.X86_64系统

wgethttp://blog.s135.com/soft/linux/nginx_php/rpm/x86_64/libjpeg-devel-6b-33.x86_64.rpm

rpm -ivhlibjpeg-devel-6b-33.x86_64.rpm

wgethttp://blog.s135.com/soft/linux/nginx_php/rpm/x86_64/freetype-devel-2.1.9-1.x86_64.rpm

rpm -ivh freetype-devel-2.1.9-1.x86_64.rpm

wgethttp://blog.s135.com/soft/linux/nginx_php/rpm/x86_64/libpng-devel-1.2.7-1.x86_64.rpm

rpm -ivhlibpng-devel-1.2.7-1.x86_64.rpm

2.3.[适用CentosRedhat及其他LINUX系统]下载程序源码包:

mkdir -p/data0/software

cd /data0/software

wgethttp://sysoev.ru/nginx/nginx-0.8.46.tar.gz

wgethttp://www.php.net/get/php-5.2.14.tar.gz/from/this/mirror

wgethttp://php-fpm.org/downloads/php-5.2.14-fpm-0.5.14.diff.gz

wgethttp://dev.mysql.com/get/Downloads/MySQL-5.5/mysql-5.5.3-m3.tar.gz/from/http://mysql.he.net/

wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.13.1.tar.gz

wget"http://downloads.sourceforge.net/mcrypt/libmcrypt-2.5.8.tar.gz?modtime=1171868460&big_mirror=0"

wget"http://downloads.sourceforge.net/mcrypt/mcrypt-2.6.8.tar.gz?modtime=1194463373&big_mirror=0"

wget http://pecl.php.net/get/memcache-2.2.5.tgz

wget"http://downloads.sourceforge.net/mhash/mhash-0.9.9.9.tar.gz?modtime=1175740843&big_mirror=0"

wgetftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.10.tar.gz

wgethttp://bart.eaccelerator.net/source/0.9.6.1/eaccelerator-0.9.6.1.tar.bz2

wgethttp://pecl.php.net/get/PDO_MYSQL-1.0.2.tgz

wgethttp://blog.s135.com/soft/linux/nginx_php/imagick/ImageMagick.tar.gz

wgethttp://pecl.php.net/get/imagick-2.3.0.tgz

3.安装php-5.4.25(FastCGI模式)

3.1编译安装PHP5.4.25所需支持库

1.libiconv

tar zxvf libiconv-1.14.tar.gz

cd libiconv-1.14

./configure –prefix=/usr/local

Make

Make install

Cd ../


2.libmcrypt-2.5.8


tar –zxvf  libmcrypt-2.5.8.tar.gz

cdlibmcrypt-2.5.8

./configure

Make

Make install

/sbin/ldconfig

Cd libltdl/

./configure –enable-ltd-install

Make

Make install

Cd ../../



3.mhash-0.9.9.9.tar.gz


tar –zxvfmhash-0.9.9.9tar.gz

cd mhash-0.9.9.9

./configure

Make

Make install

Cd ../


ln -s/usr/local/lib/libmcrypt.la /usr/lib/libmcrypt.la

ln -s/usr/local/lib/libmcrypt.so /usr/lib/libmcrypt.so

ln -s/usr/local/lib/libmcrypt.so.4 /usr/lib/libmcrypt.so.4

ln -s/usr/local/lib/libmcrypt.so.4.4.8 /usr/lib/libmcrypt.so.4.4.8

ln -s/usr/local/lib/libmhash.a /usr/lib/libmhash.a

ln -s/usr/local/lib/libmhash.la /usr/lib/libmhash.la

ln -s/usr/local/lib/libmhash.so /usr/lib/libmhash.so

ln -s/usr/local/lib/libmhash.so.2 /usr/lib/libmhash.so.2

ln -s/usr/local/lib/libmhash.so.2.0.1 /usr/lib/libmhash.so.2.0.1

ln -s/usr/local/bin/libmcrypt-config /usr/bin/libmcrypt-config


4.mcrypt-2.6.8


tar –zxvfmcript-2.6.8.tar.gz

cd mcrypt-2.6.8

./sbin/ldconfig

./configure

Make

Make install

Cd ../



3.2编辑安装Mysql 5.5.10

1.安装所需要系统库相关库文件

# yum install –ygcc gcc-c++ gcc-g77 autoconf automake zlib* fiex* libxml* ncurses-devellibmcrypt* libtool-ltdl-devel*

这两个网站mysql资源比较丰富

ftp://mirror.switch.ch/mirror/mysql/Downloads/MySQL-5.5/

ftp://ftp.pku.edu.cn/open/db/MySQL/



2.安装 cmake

Wget http://wwwNaNake.org/files/v2.8/cmake-2.8.5.tar.gz

Yum installcmake


3.编辑安装MySQL5.5.10

Wget http://mirrors.sohu.com/mysql/MYSQL-5.5/mysql-5.5.10.tar.gz

#/usr/sbin/groupaddmysql

#/usr/sbin/useradd–g mysql mysql

#tar –zxvf mysql-5.5.10.tar.gz

#cdmysql-5.5.10/

#cmake –DCMAKE_INSTALL_PREFIX=/usr/local/mysql\

-DMYSQL_DATADIR=/usr/local/mysql/data\

-DEXTRA_CHARSETS=all\

-DDEFAULT_CHARSET=utf8\

-DDEFAULT_COLLATION=utf8_general_ci\

-DWITH_READLINE=1\

-DWITH_SSL=bundled\

-DWITH_EMBEDDED_SERVER=1\

-DENABLED_LOCAL_INFILE=1\

-DWITH_INNOBASE_STORAGE_ENGINE=1\

-DWITHOUT_PARTITION_STORAGE_ENGINE=1\

-DWITH_DEBUG=0


#make

#make install

#chmod +w/usr/local/mysql

#chown –Rmysql:mysql /usr/local/mysql

#ln –s/usr/local/mysql/lib/libmysqlclient.so.16 /usr/lib/libmysqlclient.so.16

#cdsupport-files/

#cp my-large.cnf/etc/init.d/mysqld

4.配置启动 MySQL5.5.10

1.若有需要请先修改mysql 的配置my.cnf

#vi /etc/my.cnf

Basedir=/usr/local/mysql

Datadir =/usr/ocal/mysql/data

Log-error =/usr/local/mysql/mysql_error.log

Pid-file =/usr/local/mysql/data/mysql.pid

Default-storage-engine=MyISAM

User = mysql

2.Mysql 初始化安装执行以下命令

#/usr/local/mysql/scripts/mysql_install_db

--basedir=/usr/local/mysql\

--datadir=/usr/local/data\

--user=mysql

3.mysql加入开机启动

#chmod +x/etc/init.d/mysqld

#vi/etc/init.d/mysqld

Basedir=/usr/local/mysql

Datadir=/usr/local/mysql/data

#chkconfig –-addmysqld

#chkconfig –level345 mysqld on

mysql 配置环境变量,以后使用起来方便

#export PATH=/usr/local/mysql/bin:$PATH

4.启动mysql

#service mysqldstart

设置密码

Mysqladmin –uroot password ‘123’

注意:如果出现Starting MySql……The server quit without updating PID file

报错:

Starting MySQL…Theserver quit without updating PID file

查看日志报错:

情景一;

110206 12:58:35[ERROR] Can‘t start server : Bind on unix socket: No such file or directory


110206 12:58:35[ERROR] Do you already have another mysqld server running on socket:/mysql/mysqldir/data/mysql.sock ?


110206 12:58:35[ERROR] Aborting

#ps -ef | grepmysql #未发现有mysqld.

# netstat -an |grep 3306 也未发现异常.

最后从mysql安装目录下重新复制一个配置文件到/etc/my.cnf

修改相应参数.于是问题解决


情景二;


/mysql/mysqldir/bin/mysqld:Table ‘mysql.plugin‘ doesn‘t exist

[ERROR] Can‘topen the mysql.plugin table. Please run my sql_upgrade to create it.

原因:编译安装后忘记初始化表.

解决:运行mysql_install_db



其他情况,查看日志文件(我的是localhost.localdomain.err,具体因人而异),然后具体分析


3.3编译安装PHP

1.编译安装PHPFastCGI)代码如下所示:

# tar –zxvf php-5.4.25.tar.gz


./configure--prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc--with-mysql=/usr/local/mysql --with-mysqli=/usr/local/mysql/bin/mysql_config--with-iconv-dir=/ur/local --with-freetype-dir --with-jpeg-dir --with-png-dir--with-zlib --with-libxml-dir=/usr --enable-xml --disable-rpath  --enable-bcmath --enable-shmop--enable-sysvsem --enable-inline-optimization --with-curl --with-curlwrappers--enable-mbregex  --enable-fpm  --enable-mbstring --with-mcrypt --with-gd--enable-gd-native-ttf --with-openssl --with-mhash --enable-pcntl--enable-sockets --with-ldap --with-ldap-sasl --with-xmlrpc --enable-zip--enable-soap --without-pear

# makeZEND_EXTRA_LTBS=’-liconv’

# make install

# cp php.ini-production/usr/local/php/etc/php.ini

# cd ../

# curl http://pear.php.net/go-pear |/usr/local/php/bin/php


2.编译安装PHP5扩展模块,代码如下所示:

Memcache-3.0.6.tgz

Eaccelerator-0.9.6.1.tar.gz

Xcache-2.8.tar.gz#php加速器用来代替eaccelerator

PDO_MYSQL-1.0.2.TGZ

ImageMagick-6.7.8-2.tar.gz

Imagick-3.2.0ORC2.tar.gz



# tar –zxvf memcache-3.0.6.tgz

# cdmemcache-3.0.6/

#/usr/local/php/bin/phpize

# make

# make install

# cd../


#eaccelerator-0.9.6.1.tar.bz2

# cdeaccelerator-0.9.6.1/

#/usr/local/php/bin/phpize

# ./configure –enable-eaccelerator=shared –with-php-config=/usr/local/php/bin/php-config

# make

# 在编译的时候会出现与新版本的 PHP 不兼容的问题。而到目前为止,没有更高的版本,也就是说eaccelerator 不支持新版的 php

#如果使用 php 5.4 以上版本,就只能放弃使用 eaccelerator 加速了。

#所以这里eaccelerator 没有安装成功。可以采用 xcache 加速 PHP

#

由于 eaccelerator不支持新版的php;我用xcache替代它。下载最新版支持php5.4xcache-2.0.1.tar.gz


# tar –zxvfxcache-2.0.1.tar.gz

# cdxcache-2.0.1

#/usr/local/php/bin/phpize

# ./configure –with-php-config=/usr/loal/php/bin/php-config

# make

# make install

Installing shared extensions:    /usr/local/php/lib/php/extensions/no-debug-non-zts-20100525/


# PDO-MYSQL(数据库连接的支持)

# tar –zxvf PDO-MYSQL_1.0.2.gz

# cd PDO_MYSQL-1.0.2/

# /usr/local/php/bin/phpize

# ./configure –with-php-config=/usr/local/php/bin/php-config –with-pdo-mysql=/usr/local/mysql

# make

# make install

Installing shared extensions:    /usr/local/php/lib/php/extensions/no-debug-non-zts-20100525/

# cd ../



ImageMagick Linux下强大的图像处理函数,与GD类似)


# tar –zxvf ImageMagick-6.7.8-2.tar.gz

# cd ImageMagick-6.7.8-2/

# ./configure

# make

# make install



Imagick (连接PHP ImageMagick 的通道)

# tar –zxvf imagick-3.2.ORC1.tgz

# cd imagick-3.2.ORC1.tgz

# /usr /local/php/bin/phpize

# ./configure –with-php-config=/usr/local/php/bin/php-config

# make

# make install

Installing shared extensions:    /usr/local/php/lib/php/extensions/no-debug-non-zts-20100525/


Installing header files:         /usr/local/php/include/php/

# cd ../



3.配置PHP


修改php.ini 文件,使php支持已安装的扩展功能

# vi/usr/local/php/etc/php.ini

找到extension_dir = “/”;修改如下:

Extension = “/usr/local/php/lib/php/extensions/no-debug-non-zts-20100525/”


# extension = “imagick.so”

# extension “memcache.so”

# extension = “pdo_mysql.so”


再查找output_buffering = off 修改为 output_buffering = on

# short_open_tag= off 修改为short_open_tag = on (开启短格式支持)

# expose_php =on 修改为expose_php= off (在curl中隐藏php版本号)

# date.timezone= Asia/Shanghai



配置 eAccelerator xcache加速PHP

现在假定这里 eaccelerator 安装成功了;

# mkdir –p/usr/local/eaccelerator_cache

# vi/usr/local/php/etc/php.ini

php.ini 文件末尾加上一下配置:

[eaccelerator]


zend_extension = "/usr/local/php/lib/php/extensions/no-debug-non-zts-20100525/ /eaccelerator.so"


eaccelerator.shm_size= "64"


eaccelerator.cache_dir= "/usr/local/eaccelerator_cache"


eaccelerator.enable= "1"


eaccelerator.optimizer= "1"


eaccelerator.check_mtime= "1"


eaccelerator.debug= "0"


eaccelerator.filter= ""


eaccelerator.shm_max= "0"


eaccelerator.shm_ttl= "3600"


eaccelerator.shm_prune_period= "3600"


eaccelerator.shm_only= "0"


eaccelerator.compress= "1"


eaccelerator.compress_level= "9"


# vi/etc/sysctl.conf # 加入kernel.shmmax = 4294967295

# sysctl –p



配置 xcache,整合php xcache


#vi/usr/local/php/etc/php.ini

找到 zend_extension 开头的行,修改如下:

zend_extension = " zend_extension = " zend_extension =" /usr/local/php/lib/php/extensions/no-debug-non-zts-20100525/ /xcache.so

注意:


如果php.ini文件中有多条zend_extension指令行,要确保此新增的行排在第一位。配置完成后,重启php-fpm即生效。



创建www用户和组,以及供blog.domain.com www.domain.com两个虚拟主机使用的目录

# /usr/sbin/groupadd www

# usr/sbin/usradd –g www www

# mkdir –p /data0/htdocs/blog

# chmod +w /data0/htdocs/blog

# chown -R www:www /ata0/htdocs/blog

# mkdir –p /data0/htdocs/www

# chmod +w /data0/htdocs/www

# chown –R www:www /data0/htdocs/www


配置PHP-Fpm

建立相关配置文件

# cd /usr/local/php/etc

# mv php-fpm.conf.default php-fpm.conf

# cd /usr/local/src/php-5.4.4/

# cp sapi/fpm/init.d.php-fpm /eetc/init.d/php-fpm


修改 php-fpm.conf 配置文件

[global]


pid = /var/run/php-fpm.pid


error_log = /var/log/php/php-fpm.log


log_level = notice


[www]


listen = 127.0.0.1:9000


user = nginx #这是因为 nginx web 服务也是个这个用户。


group = nginx


pm = dynamic


pm.max_children = 50


pm.start_servers = 20


pm.min_spare_servers = 5


pm.max_spare_servers = 35


pm.max_requests = 5000


设置开机启动php-fpm(通过管理FastCGI进程)

#chmod 755 /etc/init.d/php-fpm

# chkconfig –add php-fpm

# chkconfig –level 35 php-fpm on

# chkconfig --list php-fpm

# /usr/local/php/sbin/php-fpm (-D\-R)或者 service php-fpm start

# ps –ef |grep php-fpm





4.安装Nginx 1.5.9


1)安装Nginx所需的 pcre库:

# tar –zxvfpcre-8.34.tar.gz

# cd pcre-8.34

# ./configure

# make

#make install

# cd ../


2)安装Nginx:

# tar –zxvfnginx-1.5.9.tar.gz

# cd nginx-1.5.9

# ./configure –user=www –group=www –with-http_stub_status_module –with-http_ssl_module–with-http_gzip_static_module –prefix=/usr/local/nginx –pid-path=/var/run/nginx.pid

# make

# make install


3)创建Nginx 日志目录;

# mkdir –p/data1/logs

# chmod +w/data1/logs

# chown –Rwww:www /data1/logs


4)创建Nginx日志目录:

/usr/local/nginx/config/目录中创建nginx.conf文件:

# rm –f/usr/local/nginx/conf/nginx.conf

# vi/usr/local/nginx/conf/nginx.conf 录入一下内容:


--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

user www www;

worker_processes8;

error_log/data1/logs/nginx_error.log crit;

pid       /var/run/nginx.pid;

#Specifies thevalue for maximum file descriptiors that can be opened by this proces

worker_rlimit_nofile65535;

events

{


use epoll;

worker_connections 65535;

}

http

{

include mime.types;

default_type application/octet-stream;

#charset gb2312;

server_names_hash_bucket_size 128;

client_header_buffer_size 32;

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-javascripttext/css application/xml;

gzip_vary on;

#limit_zone crawler $binary_remote_addr 10m;

server

{


 listen 80;

 server_name blog.domain.com;

# server_name localhost;

 index index.html index.htm index.php;

 root /usr/local /nginx/html;

#  root/dta0/htdocs/blog;

 #limit_conn crawler 20;


 location ~ .*\.(php|php5)?$

 {

   #root html;

   #fastcgi_pass unix:/tmp/php-cgi.sock;

   fastcgi_pass 127.0.0.1:9000;

   fastcgi_index index.php;

   include fcgi.conf;

 }


 location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$

 {

   expires   30d;

 }


 location ~ .*\.(js|css)?$

 {


 expires   1h;


 }


   # log_format  access ‘$remote_addr - $remote_user [$time_local] "$request" ‘

    #       ‘$status $body_bytes_sent "$http_referer" ‘

   #        ‘"$http_user_agent" $http_x_forwarded_for‘;

  #access_log logs/access.log  access;

  }


# server

#{


#  listen   80;

# server_name www.domain.com;

# index index.html index.htm index.php;

# root /data0/htdocs/www;


 #location ~ .*\.(php|php5)?$

 # location ~ .*\.php(\/.*)*$

# {


 ## #fastcgi_pass unix:/tmp/php-cgi.sock;

  # fastcgi_pass 127.0.0.1:9000;

  # fastcgi_index index.php;

  # include fcgi.conf;

 #}

# log_format wwwlogs ‘$remote_addr -$remote_user[$time_local]"$request" ‘

 #          ‘$status $body_bytes_sent "$http_referer" ‘

  #         ‘"$http_user_agent" $http_x_forwarded_for‘;

 #access_log /data1/logs/wwwlogs.log wwwlogs;


# }


server

{


 listen 80;

 server_name status.blog.domain.com;

 location / {

 stub_status on;

 access_log off;  

 }

}


}


--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

/usr/local/nginx/config/目录中创建fcgi.conf文件

# vi/usr/local/nginx/conf/fcgi.conf    输入以下内容:


--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

fastcgi_paramGATEWAY_INTERFACE CGI/1.1;

fastcgi_paramSERVER_SOFTWARE  nginx;


fastcgi_paramQUERY_STRING $query_string;

fastcgi_paramREQUEST_METHOD $request_method;

fastcgi_paramCONTENT_TYPE   $content_length;

fastcgi_paramCONTENT_LENGTH $content_length;


fastcgi_paramSCRIPT_FILENAME $document_root$fastcgi_script_name;

fastcgi_paramSCRIPT_NAME     $fastcgi_script_name;


fastcgi_paramREQUEST_URI   $request_uri;

fastcgi_paramDOCUMENT_URL  $document_uri;

fastcgi_paramDOCUMENT_ROOT $document_root;

fastcgi_paramSERVER_PROTOCOL $server_protocol;


fastcgi_paramREMOTE_ADDR   $remote_addr;

fastcgi_paramREMOTE_PORT   $remote_port;

fastcgi_paramSERVER_ADDR   $server_addr;

fastcgi_paramSERVER_PORT   $server_port;

fastcgi_paramSERVER_NAME   $server_name;


# PHP only,required if PHP was built with --enables-force-cgi-redirect

fastcgi_paramREDIRECT_STATUS  200;


--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------


5)启动Nginx;


# ulimit –SHn65535

#/usr/local/nginx/sbin/nginx –t

# /usr/local/nginx/sbin/nginx



6)配置开机自动启动Nginx+PHP

vi 编辑器打开文件/etc/rc.local;

# vi/etc/rc.local

在末尾增加以下内容:

      Ulimit –SHn 65535

      /usr/local/php/sbin/php-fpm –D

      /usr/local/nginx/sbin/nginx


7)优化Linux内核参数

vi 编辑器打开文件/etc/sysctl.conf

# vi /etc/sysctl.conf

在其末尾添加以下内容:

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

#Add

net.ipv4.tcp_max_syn_backlog= 65536

net.core.netdev_max_backlog= 32768

net.core.somaxconn= 32768


net.core.wmem_default= 8388608

net.core.rmem_default= 8388608

net.core.rmem_max= 16777216

net.core.wmem_max= 16777216

net.ipv4.tcp_timestamps= 0

net.ipv4.tcp_synack_retries= 2

net.ipv4.tcp_syn_retries= 2


net.ipv4.tcp_tw_recycle= 1

#net.ipv4.tcp_tw_len= 1

net.ipv4.tcp_tw_reuse= 1


net.ipv4.tcp_mem= 94500000 91500000 92700000

net.ipv4.tcp_max_orphans= 3276800


#net.ipv4.tcp_fin_timeout= 30

#net.ipv4.tcp_keepalive_tim= 120

net.ipv4.ip_local_port_range= 1024 65535


--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------


8)再不停止Nginx 服务的情况下平滑变更Nginx配置


修改/usr/local/nginx/conf/nginx.conf配置文件后,请执行以下命令检查配置文件是否正确;

#/usr/local/nginx/sbin/nginx –t

如果屏幕显示以下两行信息,说明配置文件正确:

the configuration file/usr/local/webserver/nginx/conf/nginx.conf syntax is ok

the configuration file/usr/local/webserver/nginx/conf/nginx.conf was tested successfully


Kill –HUP `cat /var/run/nginx.pid`

# echo `cat/var/run/nginx.pid`



9)编辑每天定时切割Nginx日志的脚本

创建脚步/usr/local/nginx/sbin/cut_nginx_log.sh

# vi/usr/local/nginx/sbin/cut_nginx_log.sh

输入以下内容:

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------#!/bin/bash

# This scriptrun at 00:00


# The Nginx logspath

logs_path="/usr/local/webserver/nginx/logs/"


mkdir -p${logs_path}$(date -d "yesterday" +"%Y")/$(date -d"yesterday" +"%m")/

mv${logs_path}access.log ${logs_path}$(date -d "yesterday"+"%Y")/$(date -d "yesterday" +"%m")/access_$(date-d "yesterday" +"%Y%m%d").log

kill -USR1 `cat/usr/local/webserver/nginx/nginx.pid`

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------


设置crontab,每天凌晨00:00切割nginx访问日志

# crontab –e

# 00 00 * * */bin/bash /usr/local/nginx/sbin/cut_nginx_log.sh



10)Nginx 负载均衡配置文件,具体内容如下:


-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

user www www;

worker_processes8;

error_log/data1/logs/nginx_error.log crit;

pid       /var/run/nginx.pid;

#Specifies thevalue for maximum file descriptiors that can be opened by this proces

worker_rlimit_nofile65535;

events

{


use epoll;

worker_connections 65535;

}

http

{

include mime.types;

default_type application/octet-stream;

#charset gb2312;

server_names_hash_bucket_size 128;

client_header_buffer_size 32;

large_client_header_buffers 4 32k;

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-javascripttext/css application/xml;

gzip_vary on;

#limit_zone crawler $binary_remote_addr 10m;


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

client_max_body_size300m;


#缓冲区代理缓冲用户端的最大字节数,可以理解为先保存到本地再传给用户

client_body_buffer_size128m;


#跟后端服务器连接的时间_发起握手等候相应超时时间

proxy_connect_timeout600;


#连接成功后_等候后端服务器响应时间_其实已经进入后端的排队之中等候处理

proxy_read_timeout600;


#后端服务器数据回传时间_就是在规定时间内后端服务器必须穿完所有的数据

proxy_send_timeout600;


#代理请求缓存区_这个缓存区间会保存用户的头信息以供Nginx进行规则处理_一般只要能保存下头信息即可;

proxy_buffer_size16k;


#同上告訟Nginx保存单个用的几个Buffer最大用多大空间

proxy_buffers 432k;


#如果系统很忙的时候可以申请更大的proxy_buffer官方推荐*2

proxy_busy_buffers_size64k;


#proxy缓存临时文件的大小

proxy_temp_file_write_size64k;


upstreamblog.domain.com {

  server 192.168.0.189:80 weight=1 max_fails=1fail_timeout=30s;

  #server 192.168.0.189:80;

  server 192.168.0.188:80 weight=2 max_fails=2fail_timeout=30s;

  #server 192.168.0.188:80;

}

server

{


 listen 80;

 server_name blog.domain.com;

# server_name localhost;

 index index.html index.htm index.php;

#  root /usr/local/nginx/html;

  root /data0/htdocs/blog;

 #limit_conn crawler 20;


 location ~ .*\.(php|php5)?$


# location /

 {

   #proxy_next_upstream http_502 http_504error timeout invalid_header;

   proxy_pass http://blog.domain.com;

   proxy_set_header   Host             $host;

   proxy_set_header   X-Real-IP        $remote_addr;

   proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;    

#root  html;


 }


 location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$

   {

     expires 30d;


   }


 location ~ .*\.(js|css)?$

   {


     expires 1h;


   }  


  }

}


--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------



5.Keepalived集群部署


1.服务器和软件说明

Nginx 188

Nginx 189

Vip 192.168.2.137

      Keepalived-1.2.11

      Nginx-1.5.9

      Pcre-8.34

2.安装准备

Rpm –q pcre 已经安装

Nginx 已经安装

分别在两台nginx机器创建测试文件(*)

# echo “192.168.0.188”> /data0/htdocs/blog/index.php

# echo “192.168.0.189”> /data0/htdocs/blog/index.php

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

3.Nginx188安装配置keepalived

http://www.keepalived.org/

wget http://www.keepalived.org/software/keepalived-1.2.11.tar.gz


# tar –zxvf keepalived-1.2.11.tar.gz

# cd keepalived-1.2.11

# ./configure –prefix=/usr/local/keepalived

# make

# make install

# cp /usr/local/keepalived/sbin/keepalived /usr/sbin/

# cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/

# cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/

# mkdir /etc/keepalived

# cd /etc/keepalived

# vi keepalived.conf

--------------------------------------------------------------------------------------------------------------

--------------------------------------------------------------------------------------------------------------

! Configuration File for keepalived

global_defs {

notification_email {

540914234@qq.com

}

notification_email_from 540914234@qq.com

smtp_server 127.0.0.1

smtp_connect_timeout 30

router_id LVS_DEVEL

}

vrrp_script chk_http_port {

               script"/usr/local/nginx/conf/nginx_pid.sh" ##监控脚本位置

               interval 2

               weight 2


}


vrrp_instance VI_1 {

state MASTER

interface eth0

virtual_router_id 51

mcast_src_ip 192.168.2.163

priority 100

advert_int 1

authentication {

auth_type PASS

auth_pass chtopnet

}

track_script {


      chk_http_port


}


virtual_ipaddress {


192.168.2.137


}


}

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

#启动keepalived

#service keepalived start

# tail –f /var/log/messages

bubuko.com,布布扣

# vip 虚拟ip已经启动,可以通过ip a 查看

# ip a

bubuko.com,布布扣


说明主配置已经启动,下面配置辅助机器;具体配置文件内容如下

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------


! Configuration File for keepalived

global_defs {

notification_email {

540914234@qq.com

}

notification_email_from 540914234@qq.com

smtp_server 127.0.0.1

smtp_connect_timeout 30

router_id LVS_DEVEL

}

vrrp_script chk_http_port {

          script "/usr/local/nginx/conf/nginx_pid.sh" ##监控脚本位置

          interval 2

          weight 2

}

vrrp_instance VI_1 {

state BACKUP

interface eth0

virtual_router_id 51

#mcast_src_ip 192.168.2.78

priority 99

advert_int 1

authentication {

auth_type PASS

auth_pass chtopnet

}

track_script {

    chk_http_port

}

virtual_ipaddress {


192.168.2.137


}


}

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------


4.主从服务器定义监控Nginx进程脚本,当Nginx进程死掉后将Keepalived停掉;

# cd/usr/local/nginx/conf

# vi nginx_pid.sh

# #!/bin/bash

# if [ `ps –C nginx–no-header |grep nginx|wc -l` -eq 0 ];then

               Service keepalived stop


# fi

5.将主服务器nginx进程结束掉,观察vip地址是否漂移至备机

# killall -9nginx

# ip a



本文出自 “卓延寒雪” 博客,谢绝转载!

nginx+keepalived,布布扣,bubuko.com

nginx+keepalived

原文:http://965726.blog.51cto.com/955726/1392786

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!