1.Nginx是什么
web服务器:以统一资源描述符(URI)或统一资源定位符(URL)作为沟通依据,通过HTTP为浏览器等客户端程序提供各种网络服务;
常见的web服务器:
Apache:发展时间最长,重量级,大并发环境下会消耗大量cpu和内存,导致HTTP平均响应速度降低
Tomcat和Jetty:面向java语言,重量级
IIS:只能在Windows系统运行
Nginx:性能为王,轻量级,基于事件驱动,高度模块化设计,使用操作系统特有api提高性能:支持linux的epoll(大并发处理利器),linux的sendfile(直接把硬盘数据发送到网络)
2.Nginx的优点:
更快
高扩展性:由多个不同层次,不同功能,不同类型的耦合度极低的模块组成
高可靠性
低内存消耗:1W个非活跃的HTTP Keep-alive在Nginx中消耗2.5M内存
单机支持10万以上的并发连接:理论上, Nginx支持的并发连接上限取决于内存, 10万远未封顶。当然, 能够及时地处理更多的并发请求, 是与业务特点紧密相关的
热部署:可以在7×24小时不间断服务的前提下, 升级Nginx的可执行文件。 当然, 它也支持不停止服务就
更新配置项、 更换日志文件等功能
最自由的BSD许可协议:不只是允许用户免费使用Nginx, 它还允许用户在自己的项目中直接使用或修改Nginx源码, 然后发布。 这吸引了无数开发者继续为Nginx贡献自己的智慧
当然, 选择Nginx的核心理由还是它能在支持高并发请求的同时保持高效的服务。
也就是说, 在低并发压力下, 用户可以获得高速体验, 而在高并发压力下, 更多的用户都能接入, 可能访问速度会下降, 但这只应受制于带宽和处理器的速度, 而不应该是服务器设计导致的软件瓶颈。
3.安装
检查内核2.6以上支持epoll:uname -a
安装GCC编译器:yum install -y gcc yum install -y gcc-c++
PCRE( Perl Compatible Regular Expressions, Perl兼容正则表达式):yum install -y pcre pcre-devel
zlib:yum install -y zlib zlib-devel
OpenSSL开发库:yum install -y openssl openssl-devel
用links获取源码:http://nginx.org/en/download.html下载稳定版本
解压:tar -zxvf nginx-1.0.14.tar.gz
编译安装:
./configure
make
make install
4.使用
Nginx被安装在目录usr/local/nginx/中, 其二进制文件路径为usr/local/nginx/sbin/nginx, 配置文件路径为usrlocal/nginx/conf/nginx.conf
默认配置文件启动:usr/local/nginx/sbin/nginx
指定配置文件启动:usr/local/nginx/sbin/nginx -c tmpnginx.conf
快速停止服务:usr/local/nginx/sbin/nginx -s stop
“优雅”地停止服务:usrlocal/nginx/sbin/nginx -s quit
(该命令与快速停止Nginx服务是有区别的。 当快速停止服务时, worker进程与master进程在收到信号后会立刻跳出循环, 退出进程。 而“优雅”地停止服务时, 首先会关闭监听端口,
停止接收新的连接, 然后把当前正在处理的连接全部处理完, 最后再退出进程。)
使运行中的Nginx重读配置项并生效:usr/local/nginx/sbin/nginx -s reload
平滑升级Nginx:
1) 通知正在运行的旧版本Nginx准备升级。 通过向master进程发送USR2信号可达到目的 kill -s SIGUSR2 <nginx master pid>
2) 启动新版本的Nginx, 可以使用以上介绍过的任意一种启动方法。 这时通过ps命令可
以发现新旧版本的Nginx在同时运行。
3) 通过kill命令向旧版本的master进程发送SIGQUIT信号, 以“优雅”的方式关闭旧版本的
Nginx。 随后将只有新版本的Nginx服务运行, 此时平滑升级完毕。