搭建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 ; ##主机名
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端口是否开启如图:
检测能否正常访问www.linux.org,www.unix.org
如图:
在物理机上:
vim /etc/hosts 172.25.44.22 www.linux.org www.unix.org ##加入地址解析
登陆http://172.25.44.22,如图:
登陆http://172.25.44.22/status,如图:
登陆http://www.linux.org/,如图:
登陆http://www.unix.org/,如图:
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/,如图:
当server3上被停掉后,登陆http://www.linux.org/,如图:
从而实现负载均衡。
























