Nginx安装、平滑升级与虚拟机配置
Nginx 高性能HTTP反向代理服务器,也是 LAMP/POP3/SMTP代理服务器
由内核和模块组成,内核通过找配置文件讲客户端请求映射到一个location(location是Nginx配置中的一个指令用于URL匹配)而在这个LOCATION所配置的每个指令将会启动不同的模块去完成相应工作。
NGINX 与APCHE对比
1高并发响应非常好,官方NGINX处理静态状态并发5W/S
2反向代理能力非常强(可用于负载均衡)
3内存和CPU占用率低(为APACHE的1/5-1/10)
4对后端服务有健康检查功能。
5支持PHP cgi和fasstcgi方式
6配置代码简洁容易上手
核心模块:HTTP模块、EVENT模块和MAIL模块
基础模块:HTTP Access模块、HTTP FastCGI模块、HTTP Proxy模块和HTTP Rewrite模块,
第三方模块:HTTP Upstream Request Hash模块、Notice模块和HTTP Access Key模块。
NGINX高并发采用了EPOLL模型 LINUX 内核2.6才使用 APACHE 采用的select
select :遍历所有句柄
epoll :不是遍历,是事件响应,就是句柄上事情来马上选择出来。
NGINX 安装 需安装PCRE库
nginx安装
首先需要安装pcre库,然后再安装Nginx:
yum install pcre* openssl* -y
useradd -s /sbin/nologin -M nginx
-M 不建家目录
#安装pcre支持rewrite库,也可以安装源码,注*安装源码时,指定pcre路径为解压源码的路径 openssl也是源码路径
,而不是编译后的路径,否则会报错。
(make[1]: *** [/usr/local/pcre/Makefile] Error 127 错误)
PCRE版本8左右就行10的会报错
#下载Nginx源码包
cd /usr/src ;wget -c http://nginx.org/download/nginx-1.4.2.tar.gz
#解压Nginx源码包
tar -xzf nginx-1.4.2.tar.gz
#进入解压目录,然后sed修改Nginx版本信息为WS,返回头文件,404返回
cd nginx-1.4.2 ; sed -i -e 's/1.4.2//g' -e 's/nginx\//WS/g' -e
's/"NGINX"/"WS"/g' src/core/nginx.h 一般修改src/core/nginx.h这三个参数就能达到效果
#预编译Nginx
./configure --user=www --group=www --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module
--with-http_ssl_module 开启SSL支持,可用于https连接。开启此模块需要先安装OpenSSL。
#.configure预编译成功后,执行make命令进行编译
make
#make执行成功后,执行make install 正式安装
make install
#自此Nginx安装完毕
/usr/local/nginx/sbin/nginx -t 检查nginx配置文件是否正确,返回OK即正确。
监测nginx状态 在server 加入
location /ngx_status
{
stub_status on;
access_log off;
}
访问ip/ngx_status
3.Nginx常用命令管理及升级
查看nginx进程
ps -ef|grep nginx
说明:nginx的进程由主进程和工作进程组成。
启动nginx
nginx
启动结果显示nginx的主线程和工作线程,工作线程的数量跟nginx.conf中的配置参数worker_processes有关。
平滑启动nginx
kill -HUP `cat /var/run/nginx.pid`
或者
nginx -s reload
其中进程文件路径在配置文件nginx.conf中可以找到。
平滑启动的意思是在不停止nginx的情况下,重启nginx,重新加载配置文件,启动新的工作线程,完美停止旧的工作线程。
完美停止nginx
kill -QUIT `cat /var/run/nginx.pid`
快速停止nginx
kill -TERM `cat /var/run/nginx.pid`
或者
kill -INT `cat /var/run/nginx.pid`
完美停止工作进程(主要用于平滑升级)
kill -WINCH `cat /var/run/nginx.pid`
强制停止nginx
pkill -9 nginx
检查对nginx.conf文件的修改是否正确
nginx -t -c /etc/nginx/nginx.conf 或者 nginx -t
停止nginx的命令
nginx -s stop或者pkill nginx
查看nginx的版本信息
nginx -v
查看完整的nginx的配置信息
nginx -V
Nginx升级方法:
下载所需版本的Nginx
wget http://www.nginx.org/download/nginx-1.4.2.tar.gz
获取旧版本nginx的configure选项
/usr/local/nginx/sbin/nginx -V
编译新版本的nginx
tar -xvf nginx-1.4.2.tar.gz
cd nginx-1.4.2
./configure --prefix=/usr/local/nginx --user=www --group=www --with-http_stub_status_module --with-http_ssl_module
make
备份旧版本的nginx可执行文件,复制新版本的nginx这行文件
mv /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.old
cp objs/nginx /usr/local/nginx/sbin/
测试新版本nginx是否正常
/usr/local/nginx/sbin/nginx -t
平滑重启升级nginx
kill -USR2 `cat /usr/local/nginx/logs/nginx.pid`
旧版本Nginx的pid变为oldbin,这是旧版本和新版本的nginx同时运行,过一段时间等就nginx处理完用户请求后,执行下面操作
从容关闭旧版本的Nginx进程
kill -WINCH `cat /usr/local/nginx/logs/nginx.pid.oldbin`
慢慢旧的工作进程就都会随着任务执行完毕而退出,新版的Nginx的工作进程会逐渐取代旧版 工作进程
此时,我们可以决定是否升级到新版的nginx
kill -HUP `cat /usr/local/nginx/logs/nginx.pid.oldbin` ##nginx在不重载配置文件启动旧工作进程 (不升级)=/usr/local/sbin/nginx -s reload
kill -QUIT `cat /usr/local/nginx/logs/nginx.pid.oldbin` ##关闭旧版nginx (升级)
如果此时报错,提示还有进程没有结束就用下面命令先关闭旧/新工作进程,再关闭主进程号:
kill -TERM 旧/新工作进程号
这样下来,如果要恢复到旧版本,只需要上面的几个步
验证nginx是否升级成功kill
/usr/local/nginx/sbin/nginx –V ###显示下图则升级成功
虚拟机配置
在真实的服务器环境,为了充分利用服务器资源,一台nginx web服务器同时会配置N个虚拟域名主机,即多个域名对于同样一个80端口。然后服务器IP数量很多,也可以配置基于多个IP对应同一个端口。
vi修改nginx.conf server段配置内容如下:
#virtual hosts config 2014/5/18
server {
listen 80;
server_name www.a.com;
#access_log logs/host.access.log main;
location / {
root html/a;
index index.html index.htm;
}
server {
listen 80;
server_name www.b.com
#access_log logs/host.access.log main;
location / {
root html/b;
index index.html index.htm;
}
创建两个不同的目录mkdir –p /usr/local/nginx/html/{a,b},然后分别在两个目录创建两个不同的index.html网站页面即可。通过客户端配置hosts指向两个域名,然后在IE浏览器访问测试效果。