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网站。
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
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
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.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.编译安装PHP(FastCGI)代码如下所示:
# 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.4的xcache-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
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;
}
}
}
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
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.Nginx主188安装配置keepalived
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
# vip 虚拟ip已经启动,可以通过ip a 查看
# ip a
说明主配置已经启动,下面配置辅助机器;具体配置文件内容如下
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
! 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
原文:http://965726.blog.51cto.com/955726/1392786