编译安装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