搭建Lnmp架构

Part 1:单线程、事件驱动、异步非阻塞的Nginx

     Nginx(发音"engine x")是俄罗斯软件工程师Igor Sysoev开发的免费开源web服务器软件。nginx于2004年发布,聚焦于高性能,高并发和低内存消耗问题。并且具有多种web服务器功能特性:负载均衡,缓存,访问控制,带宽控制,以及高效整合各种应用的能力,这些特性使nginx很适合于现代网站架构。目前,nginx已经是互联网上第二流行的开源web服务器软件。

     Nginx是一款轻量级Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行。由俄罗斯的程序设计师Igor Sysoev所开发,供俄国大型的入口网站及搜索引擎Rambler(俄文:Рамблер)使用。其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:京东新浪网易腾讯淘宝等。


1.Nginx源码编译

实验主机:172.25.44.22

yum install -y gcc gcc-c++ pcre-devel 
tar zxf nginx-1.9.14.tar.gz
cd nginx-1.9.14/
vim auto/cc/gcc
#CFLAGS=”$CFLAGS -g”  ##将这行注释掉,去掉debug编译模式)
vim src/core/nginx.h
#define NGINX_VER  "nginx"  ##安全起见,将NGINX_VERSION删掉,这样编译后外界无法获取程序的版本号
vim ~/.bash_profile  ##修改环境变量
PATH=$PATH:$HOME/bin:/usr/local/lnmp/nginx/sbin
export PATH
source ~/.bash_profile  ##生效
./configure --prefix=/usr/local/lnmp/nginx
--with-http_stub_status_module --with-http_ssl_module  ##对即将安装的Nginx进行配置,检验当前的环境是否满足Nginx的依赖关系
make && make install  ##编译并安装
cd /usr/local/lnmp/nginx/sbin/
[root@server2 sbin]# curl -I localhost
HTTP/1.1 200 OK
Server: nginx/
Date: Thu, 28 Jul 2016 08:31:36 GMT
Content-Type: text/html
Content-Length: 612
Last-Modified: Thu, 28 Jul 2016 08:27:14 GMT
Connection: keep-alive
ETag: "5799c1e2-264"
Accept-Ranges: bytes
useradd -s /sbin/nologin nginx  ##新建用户Nginx,非交互式
usermod -d /usr/local/lnmp/nginx/ nginx  ##指定用户加目录
vim /usr/local/lnmp/nginx/conf/nginx.conf
user  nginx;  用户nginx
worker_processes  2;   ##运行进程为2
events {
    use epoll;  ##采用高效的事件模型机制
    worker_connections  2048;
}
server {
        listen       80;
        server_name  localhost;
 
        #charset koi8-r;
 
        #access_log  logs/host.access.log  main;
 
        location / {
            root   html;
            index  index.html index.htm;
        }
        location /status {  
            stub_status on;  ##显示运行状态
            access_log off;
}
 
 server {
       listen       443 ssl;
       server_name  server2.example.com;  ##主机名
 
       ssl_certificate      cert.pem;
       ssl_certificate_key  cert.pem;
 
       ssl_session_cache    shared:SSL:1m;
       ssl_session_timeout  5m;
 
       ssl_ciphers  HIGH:!aNULL:!MD5;
       ssl_prefer_server_ciphers  on;
 
       location / {
           root   html;
           index  index.html index.htm;
       }
   }
 server {
         listen 80;
         server_name  www.linux.org;
 location / {
             root   /web1;
           index  index.html index.htm;
         }
      }
 
  server {
         listen 80;
         server_name  www.unix.org;
 location / {
           root   /web2;
           index  index.html index.htm;
       }
}
cp /etc/pki/tls/certs/cert.pem  /usr/local/lnmp/nginx/conf/
mkdir /web{1,2}  ##创建web1,web2
cd /web1/
echo www.linux.org > index.html  ##给web1写入测试页
cd /web2/
echo www.unix.org > index.html  ##给web2写入测试页
nginx -t  ##检验语法
nginx  ##运行Nginx
netstat -antple  ##查看443端口是否开启


如图:

Lnmp架构之Nginx_web服务器 

检测能否正常访问www.linux.org,www.unix.org

如图:

Lnmp架构之Nginx_web服务器_02

在物理机上:

vim /etc/hosts
172.25.44.22    server2.example.com  www.linux.org   www.unix.org   ##加入地址解析


登陆http://172.25.44.22,如图:

 Lnmp架构之Nginx_搜索引擎_03

 

登陆http://172.25.44.22/status,如图:

 Lnmp架构之Nginx_搜索引擎_04

 

登陆http://www.linux.org/,如图:

 

 Lnmp架构之Nginx_代理服务器_05

登陆http://www.unix.org/,如图:

 

 Lnmp架构之Nginx_搜索引擎_06

 

2.通过配置upstream来搭建web服务器集群,实现Nginx的负载均衡

实验主机:172.25.44.22

          172.25.44.33

          172.25.44.44

在主节点(172.25.44.22)上:

vim /usr/local/lnmp/nginx/conf/nginx.conf
http {
         upstream westos {
                 server 172.25.44.33:80;
                 server 172.25.44.44:80;
         }
    include       mime.types;
default_type  application/octet-stream;
    sendfile        on;
keepalive_timeout  65;
 server {
         listen 80;
         server_name  www.linux.org;
 location / {
            proxy_pass http://westos;  ##更改优先级,出故障先访问http://westos
           }
      }
  server {
         listen 80;
         server_name  www.unix.org;
 location / {
           root   /web2;
           index  index.html index.htm;
       }
}
}
在从节点(172.25.44.33,172.25.44.44)上:
yum install -y httpd  ##安装apache
/etc/init.d/httpd start  ##启动apache
vim /var/www/html/index.html  ##分别写入测试页
server3(4).example.com  
在主节点上:
nginx -t  ##检验语法
nginx -s reload  ##重新加载Nginx
登陆http://www.linux.org/,如图:


 Lnmp架构之Nginx_代理服务器_07

 

server3上被停掉后,登陆http://www.linux.org/,如图:

 Lnmp架构之Nginx_代理服务器_08

 

从而实现负载均衡。