首页 > 其他 > 详细

nginx+keepalived配置

时间:2015-06-01 20:35:56      阅读:176      评论:0      收藏:0      [点我收藏+]

一、环境

    系统:CentOS 6.4x64位最小化安装

    nginx-m:192.168.3.23

    nginx-s:192.168.3.24

    vip:    192.168.3.25

二、安装nginx

    在nginx-m和nginx-s安装nginx,这里使用脚本安装,脚本内容如下

#!/bin/bash
 
cur_dir=$(pwd)
NGINXVERSION=‘nginx-1.6.0‘
export LANG=zh_CN.UTF-8
 
#Source function library.
. /etc/init.d/functions
 
create_nginx_conf(){
cat >>/usr/local/nginx/conf/nginx.conf<<EOF
user  www www;
  
worker_processes auto;
  
error_log  /usr/local/nginx/logs/nginx_error.log  crit;
  
pid        /usr/local/nginx/logs/nginx.pid;
  
#Specifies the value for maximum file descriptors that can be opened by this process.
worker_rlimit_nofile 51200;
  
events
    {
        use epoll;
        worker_connections 51200;
        multi_accept on;
    }
  
http
    {
        include       mime.types;
        default_type  application/octet-stream;
  
        server_names_hash_bucket_size 128;
        client_header_buffer_size 32k;
        large_client_header_buffers 4 32k;
        client_max_body_size 50m;
  
        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 256k;
  
        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;
        gzip_proxied        expired no-cache no-store private auth;
        gzip_disable        "MSIE [1-6]\.";
  
        #limit_conn_zone \$binary_remote_addr zone=perip:10m;
        ##If enable limit_conn_zone,add "limit_conn perip 10;" to server section.
  
        server_tokens off;
        #log format
        log_format  access  ‘\$remote_addr - \$remote_user [\$time_local] "\$request" ‘
             ‘\$status \$body_bytes_sent "\$http_referer" ‘
             ‘"\$http_user_agent" \$http_x_forwarded_for‘;
  
server
    {
        listen 80 default;
        #listen [::]:80 default ipv6only=on;
        server_name www.myweb.com;
        index index.html index.htm index.php;
        root  /var/www/default;
  
        #error_page   404   /404.html;
        location ~ [^/]\.php(/|$)
            {
                # comment try_files \$uri =404; to enable pathinfo
                try_files \$uri =404;
                fastcgi_pass  unix:/tmp/php-cgi.sock;
                fastcgi_index index.php;
                include fastcgi.conf;
                #include pathinfo.conf;
            }
  
        location /nginx_status {
            stub_status on;
            access_log   off;
        }
  
        location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)\$
            {
                expires      30d;
            }
  
        location ~ .*\.(js|css)?\$
            {
                expires      12h;
            }
  
        access_log  /var/www/wwwlogs/access.log  access;
    }
include vhost/*.conf;
}
EOF
}
 
create_nginx_init(){
cat >>/etc/init.d/nginx<<EOF
#! /bin/sh
# chkconfig: 2345 55 25
# Description: Startup script for nginx webserver on Debian. Place in /etc/init.d and
# run ‘update-rc.d -f nginx defaults‘, or use the appropriate command on your
# distro. For CentOS/Redhat run: ‘chkconfig --add nginx‘
  
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
NAME=nginx
NGINX_BIN=/usr/local/nginx/sbin/\$NAME
CONFIGFILE=/usr/local/nginx/conf/\$NAME.conf
PIDFILE=/usr/local/nginx/logs/\$NAME.pid
SCRIPTNAME=/etc/init.d/\$NAME
  
case "\$1" in
    start)
        echo -n "Starting \$NAME... "
  
        if netstat -tnpl | grep -q nginx;then
            echo "\$NAME (pid \`pidof \$NAME\`) already running."
            exit 1
        fi
  
        \$NGINX_BIN -c \$CONFIGFILE
  
        if [ "\$?" != 0 ] ; then
            echo " failed"
            exit 1
        else
            echo " done"
        fi
    ;;
  
    stop)
        echo -n "Stoping \$NAME... "
  
        if ! netstat -tnpl | grep -q nginx; then
            echo "\$NAME is not running."
            exit 1
        fi
  
        \$NGINX_BIN -s stop
  
        if [ "\$?" != 0 ] ; then
            echo " failed. Use force-quit"
            exit 1
        else
            echo " done"
        fi
    ;;
  
    status)
        if netstat -tnpl | grep -q nginx; then
            PID=\`pidof nginx\`
            echo "\$NAME (pid \$PID) is running..."
        else
            echo "\$NAME is stopped"
            exit 0
        fi
    ;;
  
    force-quit)
        echo -n "Terminating \$NAME... "
  
        if ! netstat -tnpl | grep -q nginx; then
            echo "\$NAME is not running."
            exit 1
        fi
  
        kill \`pidof \$NAME\`
  
        if [ "\$?" != 0 ] ; then
            echo " failed"
            exit 1
        else
            echo " done"
        fi
    ;;
  
    restart)
        \$SCRIPTNAME stop
        sleep 1
        \$SCRIPTNAME start
    ;;
  
    reload)
  
        echo -n "Reload service \$NAME... "
  
        if netstat -tnpl | grep -q nginx; then
            \$NGINX_BIN -s reload
            echo " done"
        else
            echo "\$NAME is not running, can‘t reload."
            exit 1
        fi
    ;;
  
    configtest)
  
        echo -n "Test \$NAME configure files... "
  
        \$NGINX_BIN -t
    ;;
  
    *)
        echo "Usage: \$SCRIPTNAME {start|stop|force-quit|restart|reload|status|configtest}"
        exit 1
    ;;
  
esac
EOF
}
 
#install_nginx
install_nginx(){
        cd $cur_dir
        yum install make gcc gcc-c++ openssl-devel -y
        #add user www for nginx
        id www &>/dev/null
        if [ $? -ne 0 ];then
                groupadd www
                useradd -s /sbin/nologin -g www www
        fi
        wget http://sourceforge.net/projects/pcre/files/pcre/8.30/pcre-8.30.tar.gz/download
        if [ $? -ne 0 ];then
                echo "download pcre package is fail"
                exit $?
        fi
        tar xf  pcre-8.30.tar.gz
        cd pcre-8.30
        ./configure
        make && make install
        if [ $? -eq 0 ];then
                echo "install pcre is successful!!!"
        else
                echo "install pcre is fail!!!"
                exit $?
        fi
        echo "/usr/local/lib/" >>/etc/ld.so.conf
        ldconfig
        #download nginx package
        cd $cur_dir
        wget http://mirrors.sohu.com/nginx/$NGINXVERSION.tar.gz
        if [ $? -ne 0 ];then
                echo "download nginx is fail!!!"
                exit $?
        fi
        tar xf $NGINXVERSION.tar.gz
        cd $NGINXVERSION
         ./configure --user=www --group=www --prefix=/usr/local/$NGINXVERSION --with-http_stub_status_module --with-http_ssl_module --with-http_gzip_static_module --with-ipv6 
         make && make install
        if [ $? -ne 0 ];then
                echo "install nginx fail!!!"
                exit $?
        fi 
        #links
        ln -s /usr/local/$NGINXVERSION /usr/local/nginx
        ln -s /usr/local/nginx/sbin/nginx /usr/bin/nginx
        mv /usr/local/nginx/conf/nginx.conf /usr/local/nginx/conf/nginx.conf.bak
        #create file nginx.conf
        create_nginx_conf 
        mkdir -p /var/www/default
        chmod +w /var/www/default
        mkdir -p /var/www/wwwlogs
        chmod 777 /var/www/wwwlogs 
        chown -R www:www /var/www/default
        cp /usr/local/nginx/html/index.html /var/www/default/index.html 
        #create start scripts for nginx
        create_nginx_init
        chmod +x /etc/init.d/nginx
        chkconfig --add nginx
        chkconfig nginx on
        /etc/init.d/nginx start
        if [ $? -eq 0 ];then
                action "start nginx" /bin/true
                echo "+---------------------------------+"
                echo "+------nginx  install done--------+"
                echo "+---------------------------------+"
        fi
}
 
install_nginx

    在iptables中对80端口进行放行

[root@nginx-m ~]# iptables -I INPUT -p tcp --dport 80 -j ACCEPT
[root@nginx-m ~]# service iptables save
iptables: Saving firewall rules to /etc/sysconfig/iptables:[  OK  ]
[root@nginx-m ~]# echo "nginx-m 23" >/var/www/default/index.html 
[root@nginx-m ~]# curl http://192.168.3.23
nginx-m 23

    nginx-s的配置相同,只有主页内容不一样

[root@nginx-s ~]# echo "nginx-s 24" >/var/www/default/index.html 
[root@nginx-s ~]# iptables -I INPUT -p tcp --dport 80 -j ACCEPT
[root@nginx-s ~]# service iptables save
iptables: Saving firewall rules to /etc/sysconfig/iptables:[  OK  ]
[root@nginx-s ~]# curl http://192.168.3.24
nginx-s 24


本文出自 “ly36843运维” 博客,请务必保留此出处http://ly36843.blog.51cto.com/3120113/1657265

nginx+keepalived配置

原文:http://ly36843.blog.51cto.com/3120113/1657265

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