CentOS6.5安裝nginx及負載均衡配置


所有的安裝包可以去以下地址下載,或者自行去官網下載,下面都有介紹.
所有安裝包地址:http://download.csdn.net/detail/carboncomputer/9238037
原文地址:http://www.cnblogs.com/zhongshengzhen/p/nginx.html

1、下載PCRE, 是一個用C語言編寫的正則表達式函數庫

[root@localhost pcre-8.36]# cd /tmp/download/
[root@localhost download]# tar zxvf pcre-8.36.tar.gz
 
2、下載zlib
[root@localhost pcre-8.36]# cd /tmp/download/
[root@localhost download]# wget  http://ncu.dl.sourceforge.net/project/libpng/zlib/1.2.8/zlib-1.2.8.tar.gz
[root@localhost download]# tar -zxvf zlib-1.2.8.tar.gz cd zlib-1.2.8

4、下載SSL
[root@localhost zlib-1.2.8]# cd ..
[root@localhost download]# wget http://www.openssl.org/source/openssl-1.0.1p.tar.gz
[root@localhost download]# cd openssl-1.0.1c
[root@localhost openssl-1.0.1c]# tar -zxvf openssl-1.0.1c.tar.gz
 
5、下載nginx
[root@localhost download]# wget http://nginx.org/download/nginx-1.2.8.tar.gz
[root@localhost download]# tar -zxvf nginx-1.2.8.tar.gz
 
6、安裝
[root@localhost download]mv pcre-8.36 /usr/local/
[root@localhost download]mv zlib-1.2.8 /usr/local/
[root@localhost download]mv openssl-1.0.1c /usr/local/
[root@localhost download]mv nginx-1.2.8 /usr/local/
 
[root@localhost download]cd /usr/local/
 
[root@localhost local]# cd pcre-8.36
[root@localhost pcre-8.36]# ./configure&&make&&make install
 
[root@localhost pcre-8.36] cd ../zlib-1.2.8
[root@localhost zlib-1.2.8]# ./configure && make && make install
 
[root@localhost zlib-1.2.8]# cd ../openssl-1.0.1c
[root@localhost openssl-1.0.1c]# ./config && make && make install
 
[root@localhost openssl-1.0.1c]# cd ../nginx-1.2.8
[root@localhost nginx-1.2.8]# ./configure --prefix=/usr/local/nginx && make && make install
 
7、啟動nginx
[root@localhost nginx]# /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
 
8、測試
在確保可以連接到服務器的電腦上,瀏覽器輸入裝了nginx的機器的ip地址,會看到Welcome to nginx!的提示說明安裝配配置成功了。
 
 
 
 
9、設置開機自動啟動(shell腳本處理)
[root@localhost logs]# vi /etc/init.d/nginx
 
添加以下shell腳本。
 
#!/bin/bash
# nginx Startup script for the Nginx HTTP Server
# it is v.0.0.2 version.
# chkconfig: - 85 15
# description: Nginx is a high-performance web and proxy server.
#              It has a lot of features, but it's not for everyone.
# processname: nginx
# 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=/var/run/nginx.pid
RETVAL=0
prog="nginx"
# Source function library.
. /etc/rc.d/init.d/functions
# Source networking configuration.
. /etc/sysconfig/network
# Check that networking is up.
[ ${NETWORKING} = "no" ] && exit 0
[ -x $nginxd ] || exit 0
# Start nginx daemons functions.
start() {
if [ -e $nginx_pid ];then
   echo "nginx already running...."
   exit 1
fi
   echo -n $"Starting $prog: "
   daemon $nginxd -c ${nginx_config}
   RETVAL=$?
   echo
   [ $RETVAL = 0 ] && touch /var/lock/subsys/nginx
   return $RETVAL
}
# Stop nginx daemons functions.
stop() {
        echo -n $"Stopping $prog: "
        killproc $nginxd
        RETVAL=$?
        echo
        [ $RETVAL = 0 ] && rm -f /var/lock/subsys/nginx /var/run/nginx.pid
}
# reload nginx service functions.
reload() {
    echo -n $"Reloading $prog: "
    #kill -HUP `cat ${nginx_pid}`
    killproc $nginxd -HUP
    RETVAL=$?
    echo
}
# See how we were called.
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}"
        exit 1
esac
exit $RETVAL
保存后,設置權限讓所有人可以操作。
[root@localhost ~]# chmod a+x /etc/init.d/nginx 
[root@localhost logs]#  /etc/init.d/nginx status
nginx (pid 2417 2416) is running...
[root@localhost logs]#  /etc/init.d/nginx stop
Stopping nginx: [  OK  ]
[root@localhost logs]#  /etc/init.d/nginx start
Starting nginx: [  OK  ]
[root@localhost logs]#  /etc/init.d/nginx status
nginx (pid 2454 2452) is running...
[root@localhost ~]# vi /etc/rc.local
添加:
/etc/init.d/nginx start
 
重啟電腦就會生效。
注意:腳本里面關於啟動目錄的,如果你的安裝地址不一樣,要進行修改。
 
負載均衡配置:
現有兩部服務器:
192.168.137.197     (按照以上操作安裝有 nginx,作為轉發機,虛擬機)
192.168.137.33     (無安裝nginx,運行有測試用的web工程,虛擬機)
10.10.33.59    (無安裝nginx,運行有測試用的web工程,本地電腦地址)
,運行有測試用的web工程
127.0.0.1 web_app
[root@a conf]# vi /usr/local/nginx/conf/nginx.conf
配置如下展示:
worker_processes 8;
pid /usr/local/nginx/nginx.pid;
worker_rlimit_nofile 102400;
events
{
use epoll;
worker_connections 102400;
}
http
{
  include       mime.types;
  default_type  application/octet-stream;
  fastcgi_intercept_errors on;
  charset  utf-8;
  server_names_hash_bucket_size 128;
  client_header_buffer_size 4k;
  large_client_header_buffers 4 32k;
  client_max_body_size 300m;
  sendfile on;
  tcp_nopush     on;

  keepalive_timeout 60;

  tcp_nodelay on;
  client_body_buffer_size  512k;

  proxy_connect_timeout    5;
  proxy_read_timeout       60;
  proxy_send_timeout       5;
  proxy_buffer_size        16k;
  proxy_buffers            4 64k;
  proxy_busy_buffers_size 128k;
  proxy_temp_file_write_size 128k;
  gzip on;
  gzip_min_length  1k;
  gzip_buffers     4 16k;
  gzip_http_version 1.1;
  gzip_comp_level 2;
  gzip_types       text/plain application/x-javascript text/css application/xml;
  gzip_vary on;

###2012-12-19 change nginx logs
log_format  main  '$http_x_forwarded_for - $remote_user [$time_local] "$request" '
              '$status $body_bytes_sent "$http_referer" '
              '"$http_user_agent"  $request_time $remote_addr';

upstream web_app {
server 192.168.137.197:8080 weight=1 max_fails=2 fail_timeout=30s;
server 192.168.137.33:8080 weight=1 max_fails=2 fail_timeout=30s;
server 10.10.33.59:8080 weight=1 max_fails=2 fail_timeout=30s;
}  

####chinaapp.sinaapp.com
server {  
    listen 80; 
    server_name  chinaapp.sinaapp.com;
    index index.jsp index.html index.htm;
    #發布目錄/data/www
    root  /data/www;

    location / 
    {  
    proxy_next_upstream http_502 http_504 error timeout invalid_header;
    proxy_set_header Host  $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_pass http://web_app;
    expires      3d;
    }  
  }  
}
設置host:
[root@a conf]# vi /etc/hosts
添加hosts:
127.0.0.1 web_app
 
啟動nginx
[root@localhost nginx]# /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
 
啟動三部服務器的web應用:
在192.168.137.197執行指令:
[root@a PROGRAM]# curl "http://web_app/index.jsp"
測試結果如下:
 
 
 
常見問題及解決辦法:
1、安裝PCRE時提示configure: error: You need a C++ compiler for C++ support.
原因是沒有安裝c++編譯器,采用下面的命令安裝:
[root@localhost pcre-8.37]# yum install -y gcc gcc-c++
 
2、啟動nginx失敗
[root@localhost nginx]# /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
/usr/local/nginx/sbin/nginx: error while loading shared libraries: libpcre.so.1: cannot open shared object file: No such file or directory
原因是64bit的系統,但是默認取了/usr/local/lib里面的包
檢查方法:
[root@localhost nginx]# cd /usr/local/
[root@localhost local]# ls /lib64/ |grep pcre
libpcre.so.0
libpcre.so.0.0.1
[root@localhost local]# ls /lib/ |grep pcre
說明缺失的包在lib64
設置軟連接來解決:
[root@localhost local]# ln -s /lib64/libpcre.so.0.0.1 /lib64/libpcre.so.1
[root@localhost local]# cd nginx
[root@localhost nginx]# /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
3、啟動報錯:
報錯:nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
解決辦法:sudo fuser -k 80/tcp
端口被占用,關閉占用端口
 
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM