編譯安裝nginx
1.安裝依賴包
<code>yum -y </code><code>install</code> <code>openssl openssl-devel zlibzlib-devel gcc gcc-c++</code>
2.安裝pcre
安裝nginx所需要的pcre庫(為了使nginx支援http rewrite子產品)
<code>mkdir</code> <code>-p</code><code>/home/darren/tools</code>
<code>cd</code> <code>/home/darren/tools/</code>
<code>wget </code><code>ftp</code><code>:</code><code>//ftp</code><code>.csx.cam.ac.uk</code><code>/pub/software/programming/pcre/pcre-8</code><code>.37.</code><code>tar</code><code>.gz</code>
<code>tar</code> <code>zxf pcre-8.37.</code><code>tar</code><code>.gz</code>
<code>cd</code> <code>pcre-8.37</code>
<code>.</code><code>/configure</code>
<code>make</code> <code>&& makeinstall</code>
<code>cd</code> <code>..</code>
<code>如果安裝完以後需要重新安裝pcre,則需要</code>
<code>rm</code> <code>-rf</code><code>/usr/local/share/man/man3/pcre</code><code>*</code>
3.安裝nginx
建立nginx使用者
<code>groupaddnginx</code>
<code>useradd</code> <code>nginx-s </code><code>/sbin/nologin</code> <code>-M</code>
<code>wget http:</code><code>//nginx</code><code>.org</code><code>/download/nginx-1</code><code>.8.1.</code><code>tar</code><code>.gz</code>
<code>wgethttp:</code><code>//nginx</code><code>.org</code><code>/download/nginx-1</code><code>.2.6.</code><code>tar</code><code>.gz</code>
<code>tarzxf nginx-1.8.1.</code><code>tar</code><code>.gz</code>
<code>cd</code> <code>nginx-1.8.1</code>
<code>.</code><code>/configure</code> <code>--user=nginx --group=nginx --prefix=</code><code>/usr/local/nginx</code> <code>--with-http_stub_status_module --with-http_ssl_module</code>
檢查nginx安裝
<code>/usr/local/nginx/sbin/nginx</code> <code>-</code><code>v</code>
<code>#提示錯誤:/usr/local/nginx/sbin/nginx: error while loading shared libraries:libpcre.so.1: cannot open shared object file: No such file ordirectory</code>
<code>yum </code><code>install</code> <code>pcre -y 則不會出現這種錯誤</code>
<code>find</code> <code>/-name</code> <code>libpcre.so.1</code>
<code>/usr/local/lib/libpcre</code><code>.so.1</code>
<code>echo</code> <code>'/usr/local/lib/'</code><code>>></code><code>/etc/ld</code><code>.so.conf</code>
<code>ldconfig</code>
檢查文法
<code>/usr/local/nginx/sbin/nginx</code> <code>-t</code>
啟動nginx服務
<code>/usr/local/nginx/sbin/nginx</code>
<code>netstat</code> <code>-lnt</code>
浏覽器中輸入10.1.1.1測試
附一個一鍵安裝腳本:
<code>#!/bin/sh</code>
<code>#for one install nginx</code>
<code>#for wangjiadongge</code>
<code> </code>
<code>#install centos source</code>
<code>rpm -Uvh http:</code><code>//mirrors</code><code>.yun-idc.com</code><code>/epel/6Server/x86_64/epel-release-6-8</code><code>.noarch.rpm</code>
<code>#install plugin</code>
<code>yum </code><code>install</code> <code>gcc gcc-c++ openssl-devel pcre-devel zlib-devel -y</code>
<code>#create user and group</code>
<code>groupadd nginx </code>
<code>useradd</code> <code>nginx -g nginx -s </code><code>/sbin/nologin</code> <code>-M</code>
<code>#cd /tmp/</code>
<code>[ -d </code><code>/tmp/download</code> <code>] || </code><code>mkdir</code> <code>-p </code><code>/tmp/download</code>
<code>cd</code> <code>/tmp/download/</code>
<code>#wget nginx from www.nginx.org</code>
<code>wget http:</code><code>//nginx</code><code>.org</code><code>/download/nginx-1</code><code>.8.1.</code><code>tar</code><code>.gz </code>
<code>tar</code> <code>zxvf nginx-1.8.1.</code><code>tar</code><code>.gz</code>
<code>.</code><code>/configure</code> <code>--prefix=</code><code>/usr/local/nginx</code> <code>--user=nginx --group=nginx --with-http_stub_status_module --with-http_ssl_module</code>
<code>make</code> <code>&& </code><code>make</code> <code>install</code>
<code>chown</code> <code>-R nginx.nginx </code><code>/usr/local/nginx/</code>
<code>echo</code> <code>"/usr/local/nginx/sbin/nginx"</code> <code>>></code><code>/etc/rc</code><code>.</code><code>local</code>
<code>#end</code>
#nginx負載均衡腳本
<code>mv</code> <code>/usr/local/nginx/conf/nginx</code><code>.conf </code><code>/usr/local/nginx/conf/nginx</code><code>.conf.bak</code>
<code>echo</code> <code>"</code>
<code>user nginx;</code>
<code>worker_processes 4;</code>
<code>events {</code>
<code> </code><code>use epoll;</code>
<code> </code><code>worker_connections 10240;</code>
<code>}</code>
<code>http {</code>
<code> </code><code>include mime.types;</code>
<code> </code><code>default_type application</code><code>/octet-stream</code><code>;</code>
<code> </code><code>log_format main </code><code>'$remote_addr - $remote_user [$time_local] "$request" '</code>
<code> </code><code>'$status $body_bytes_sent "$http_referer" '</code>
<code> </code><code>'"$http_user_agent" "$http_x_forwarded_for"'</code><code>;</code>
<code> </code><code>access_log logs</code><code>/access</code><code>.log main;</code>
<code> </code><code>sendfile on; </code>
<code> </code><code>keepalive_timeout 120;</code>
<code> </code><code>include conf.d/*.conf;</code>
<code>" >></code><code>/usr/local/nginx/conf/nginx</code><code>.conf</code>
<code>mkdir</code> <code>/usr/local/nginx/conf/conf</code><code>.d</code>
<code>server {</code>
<code> </code><code>listen 80;</code>
<code> </code><code>server_name login.xiaodongge.com;</code>
<code> </code><code>access_log logs</code><code>/host</code><code>.access.log main;</code>
<code> </code><code>location / {</code>
<code> </code><code>proxy_pass http:</code><code>//loginserver</code><code>;</code>
<code> </code><code>}</code>
<code>upstream loginserver {</code>
<code> </code><code>server 10.86.10.21:8300;</code>
<code> </code><code>server 10.86.10.22:8300;</code>
<code> </code><code>server 10.86.10.23:8300;</code>
<code> </code><code>}</code>
解釋:nginx做負載均衡預設是輪詢負載,下面逐一來看:
<code>#預設的負載方式,輪詢</code>
<code> </code><code>upstream myapp1 {</code>
<code> </code><code>server srv1.example.com;</code>
<code> </code><code>server srv2.example.com;</code>
<code> </code><code>server srv3.example.com;</code>
<code> </code><code>server {</code>
<code> </code><code>listen 80;</code>
<code> </code><code>proxy_pass http:</code><code>//myapp1</code><code>;</code>
<code>#最小連接配接數,哪台伺服器連接配接的最少就向哪台伺服器上負載</code>
<code>upstream myapp1 {</code>
<code> </code><code>least_conn;</code>
<code>#ip hash如果一個連接配接建立,就會始終和這台伺服器連接配接</code>
<code> </code><code>ip_hash;</code>
<code> </code><code>server srv1.example.com;</code>
<code> </code><code>server srv2.example.com;</code>
<code> </code><code>server srv3.example.com;</code>
<code>#權重,自定義設定哪台伺服器負載的多</code>
<code> </code><code>upstream myapp1 {</code>
<code> </code><code>server srv1.example.com weight=3;</code>
版權聲明:原創作品,謝絕轉載。否則将追究法律責任
本文轉自 王家東哥 51CTO部落格,原文連結:http://blog.51cto.com/xiaodongge/1919496