<1>Nginx简介及安装

一、Nginx简介
1.1 常用的web服务器简介
Web服务器也称为www服务器,http服务器,其主要功能时提供网上信息浏览服务。Unix和Linux平台下的常用web服务器有Apache, Nginx(读作'engine x'), Lighttpd, Tomcat, IBMSphere等,其中应用最广泛的是Apache。 而Windows NT/2000/2003平台下最常用的服务器则是微软的IIS(Internet Information Server)。

下图是截止2014年5月世界各地web服务器市场占有率统计图:

在所有网站使用的Web服务器中,Apache的占有率是60.5%。在前100万家网站使用的Web服务器中,Apache的占有率是56.5%。在前1万家网站使用的Web服务器中,Apache的占有率是39.1%,低于Nginx的39.3%的占有率。

1.1.1  Apache 服务器
Apache 仍然是世界上用得最多的 Web 服务器,市场占有率达 60%左右。它源于 NCSAhttpd 服务器,在 NCSA WWW 服务器项目停止后,那些使用 NCSA www 服务器的人们开始交换用于此服务器的补丁,这也是 Apache 名称的由来 (pache补丁)。世界上很多著名的网站都是Apache 的用户,它的优势主要在于源代码开放、有一支开放的开发队伍、支持跨平台的应用(可以运行 在几乎所有的 Unix 、Windows 、Linux 系统平台上) ,以及其可移植性等。Apache 的模块支持非常丰富,虽在速度、性能上不及其他 轻量级 Web 服务器,他是属于 重量级产品,所消耗的内存 也比其他 Web 服务器要高。

1.1.2   Tomcat服务器
Tomcat 是一个开放源代码、运行 servlet 和 JSPWeb 应用软件的基于 Java 的 Web 应用软件容 器。 Tomcat Server 是根据 servlet 和 JSP 规范执行的,因此也可以说 Tomcat Server 实行了 Apache-J akarta 规范,且比绝大多数商业应用软件服务器要好。但是, Tomcat 对静态文件、高并发的处理比较弱

1.2 Nginx 的发展
Nginx  ( 读 "engine x"  )是俄罗斯人 Igor Sysoev (伊戈尔•塞索耶夫)编写的一款高性能的 HTTP和反向代理服务器。 Nginx选择高效的 epoll ( Linux 2.6 内核)、 kqueue (FreeBSD) 、 eventport  (Solaris 10) 作为网络 I/O 模型,在高连接并发的情况下. Nginx 是 Apache 服务器不错的替代品,它能够支持高达到 50,000 个并发连接数的响应,而内存、 CPU 等系统资源消耗却非常低,运行非常稳定。

1.3选择Nginx的理由
1.3.1 他可以高并发连接
官方测试Nginx能够支撑5万并发连接,在实际生产环境中可支撑2-4万并发连接数。这得益于使用了最新的epoll和kqueue网络IO模型,而Apache使用的则是传统的select模型,其比较稳定的Prefork模式为多进程模式,需要经常派生子进程,所消耗的cpu等服务器资源要逼Nginx高得多。

1.3.2 内存消耗少
Nginx+PHP(FastCGI)服务器在3万并发连接下,开启的10个Nginx进程消耗150MB内存(15MB*10),开启的64个php-cgi进程消耗1280MB内存(20MB*64),加上系统自身消耗的内存,总共消耗不到2GB内存。如果服务器内存较小,完全可以只开启25个php-cgi进程,这样php-cgi消耗的总内存数才500MB.
同等硬件环境下,Nginx的处理能力相当于Apache的 5-10倍。

1.3.3 成本低廉
购买F5 BIG-IP 、NetScal町等硬件负载均衡交换机需要十多万甚至几十万人民币。而Nginx为开源软件,采用的是 2-clause BSD-like 协议,可以免费使用,并且可用于商业用途。

1.3.4  其他理由
1)配置文件非常简单
网络跟程序一样通俗易懂,即使非专业系统管理员也能看懂。

2)支持 Rewrite 重写规则
能够根据域名、 URL 的不同,将 HTIP  请求分到不同的后端服务器群组。
内置的健康检查功能.如果 Nginx Proxy 后端的某台 Web 服务器宕机了,不会影响前端访问。

3)节省带宽
支持 GZIP 压缩,可以添加浏览器本地缓存的Header头。

4)稳定性高
用于反向代理,宕机的概率微乎其微。

5)支持热部署
Nginx 支持热部署。它的启动特别容易,并且几乎可以 7天 *24 小时不间断地运行,即使运 行数个月也不需要重新启动。你还能够在不间断服务的情况下,对软件版本进行升级。

2. 安装
Ubuntu下Nginx的安装可以参考(在线安装已验证): http://www.cnblogs.com/languoliang/archive/2013/04/01/nginx.html
其他操作系统下的安装也都很容易,很方便可以找到安装指南。

2.1 Nginx的启动、停止、平滑重启
在linux下安装好之后,Nginx服务主要的操作就是 启动、停止和平滑重启

2.1.1 Nginx的启动
启动Nginx,可以执行以下命令。假设Nginx安装在/usr/local/nginx目录中,那么启动Nginx的命令就是:
/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf


参数“-c”指定了配置文件的路径,如果不加此参数,Nginx会 默认加载其安装目录的conf子目录中的nginx.conf文件。在本例中即:/usr/local/nginx/sbin/nginx/conf/nginx.conf。

2.1.2 Nginx的停止
Nginx的停止方法有很多种,一般通过发送系统信号给Nginx主进程的方式来停止Nginx.
我们可以通过ps命令来查找Nginx的主进程号:
ps –ef| grep nginx

会输出:

从上图可以看到,1个Nginx进程的备注信息为“ master process”,表示它为 主进程,另外的4个备注信息为“ worker process”,表示他们为子进程。1021为主进程号。

如果在 nginx.conf配置文件中指定了 pid文件存放的路径(例如: pid /usr/local/webserver/nginx/logs/nginx.pid;),该文件中存放的就是Nginx当前的主进程号。如果没有指定pid文件存放的路径,nginx.pid文件默认存放在Nginx安装目录的logs目录下。所以,我们可以直接通过以下命令来完成停止,省下寻找Nginx主进程号的步骤:

Kill –信号类型 `/usr/local/webserver/nginx/logs/nginx.pid`

(1) 从容停止Nginx
kill –QUIT Nginx主进程号

kill –QUIT `/usr/local/webserver/nginx/logs/nginx.pid`


(2)快速停止Nginx
kill -TERM Nginx主进程号
kill -TERM `/usr/local/webserver/nginx/logs/nginx.pid`

kill  -INT Nginx主进程号
kill  -INT  `/usr/local/webserver/nginx/logs/nginx.pid`

(3)强制停止所有Nginx进程
kill -9 nginx

2.2 Nginx的平滑重启
如果改变了 Nginx 的配置文件 (nginx.conf),想重启 Nginx.  同样可以通过发送系统信号给Nginx 主进程的方式来进行。不过,重启之前,要确认 Nginx 配置文件( nginx.conf)的语法是正确的,否则 Nginx 将不会加载新的配置文件。 通过以下命令可以判断 Nginx 配置文件是否正确:
/usr/local/webserver/nginx/sbin/nginx -t -c /usr/local/webserver/nginx/conf/ nginx.conf

如果配置文件不正确,屏幕将会提示配置文件的第几行出错:
[emerg]: unknown directive "abc" in /usr/local/webserver/ngin x/conf/nginx.conf:55 configuration file /usr/local/webserver/ngin x/conf/nginx.conf  test failed

如果配置文件正确,屏幕将提示以下两行信息:
the configuration file /usr/local/webserver/ngin x/conf/nginx.conf  syntax is ok
configuration file /usr/local/webserver/ngin x/conf/nginx.conf  test is successful
这时候,就可以平滑重启 Nginx了,使用命令:
kill  -HUP Nginx主进程号


kill -HUP  `cat /usr/local/webserver/nginx/logs/nginx.pid`
当 Nginx 接收到 HUP 信号时,它会尝试先解析配置文件(如果指定配置文件,就使用指定的,否则使用默认的)  .如果成功,就应用新的配置文件(例如,重新打开日志文件或监昕的套接字)。之后, Nginx运行新的工作进程并从容关闭旧的工作进程。通知工作进程关闭监听套接字,但是继续为当前连接的客户提供服务。所有客户端的服务完成后,旧的工作进程被关闭。如果新的配置文件应用失败, Nginx将继续使用旧的配置进行工作。

2.3 Nginx的信号控制
在上一节中,我们使用了信号来控制 Nginx 停止、平滑重启,  Nginx支持以下几种信号:

•TERM,INT 快速关闭:

• QUIT 从容关闭:

• HUP 平滑重启,重新加载配置文件:

• USRl  重新打开日志文件,在切割日志时用途较大;

• USR2 平滑升级可执行程序:

• WINCH 从容关闭工作进程。


参考资料:
《实战Nginx 取代apache的高性能web服务器》

猜你喜欢

转载自zoroeye.iteye.com/blog/2158382