欢迎大家关注 github.com/hsfxuebao ,希望对大家有所帮助,要是觉得可以的话麻烦给点一下Star哈
1. 概述
Web服务器也称为WWW(WORLD WIDE WEB)服务器、HTTP服务器,其主要功能是提供网上信息浏览服务。
Unix和Linux平台下的常用Web服务器有Apache、Nginx、Lighttpd、Tomcat、IBM WebSphere等,其中应用最广泛的是Apache。
1.1 Nginx的发展
Nginx ( "engine x")是俄罗斯人 Igor Sysoev (伊戈尔·赛索耶夫)编写的一款高性能HTTP和反向代理服务器。Nginx能够选择高效的epoll(Linux2.6内核)、kqueue(FreeBSD)、eventport(Solaris 10)作为网络I/O模型,在高连接并发的情况下,Nginx是Apache服务器不错的替代品,它能够支持高达50O00个并发连接数的响应,而内存、CPU等系统资源消耗却非常低,运行非常稳定。
Nginx已经在俄罗斯最大的门户网站一Rambler Media(www.rambler..ru) 上运行了3年时间,同时俄罗斯超过20%的虚拟主机平台采用Nginx作为反向代理服务器。
在国内,已经有新浪博客、新浪播客、网易新闻、六间房、56.com、Discuz!官方论坛、水木社区、豆瓣、YUPOO相册、海内SNS、迅雷在线等多家网站使用Nginx作为Web服务器或反向代理服务器。
1.2 选择Nginx的理由
1.2.1 它可以高并发连接
官方测试Nginx能够支撑5万并发连接,在实际生产环境中可支撑2~4万并发连接数。这得益于Nginx使用了最新的epoll(Linux2.6内核)和kqueue(freebsd)网络I/O模型,而Apache使用的则是传统的select模型,其比较稳定的Prefork模式为多进程模式,需要经常派生子进程,所消耗的CPU等服务器资源要比Nginx高得多。
1.2.2 内存消耗少
Nginx+PHP(FastCGI)服务器在3万并发连接下,开启的10个Nginx进程消耗150MB内存(15MB×10=150MB),开启的64个Php-cgi进程消耗1280MB内存(20MB×64=1280MB),加上系统自身消耗的内存,总共消耗不到2GB的内存。如果服务器内存较小,完全可以只开肩25个php-cgi进程,这样php-cgi消耗的总内存数才500MB。用Webbench做压力测试,在3万并发连接下,访问Nginx+PHP(FastCGI)服务器的PHP程序,运行速度仍然飞快。
1.2.3 成本低廉
购买F5 BIG-P、NetScaler等硬件负载均衡交换机需要十多万甚至几十万人民币。而Nginx为开源软件,采用的是2-clause BSD-like协议,可以免费使用,并且可用于商业用途。
BSD开源协议是一个给使用者很大自由的协议。协议指出可以自由使用、修改源代码,也可以将修改后的代码作为开源或专有软件再发布。当你发布使用了BSD协议的代码,或者以BSD协议代码为基础做二次开发时,须满足三个条件:
- (1)如果再发布的产品中包含源代码,则源代码中必须带有原来代码中的BSD协议。
- (2)如果再发布的是二进制类库软件,则需要在类库软件的文档和版权声明中包含原来代码中的BSD协议。
- (3)不可以用开源代码的作者机构名字和原来产品的名字做市场推广。 BSD代码鼓励代码共享,但须尊重代码作者的著作权。BSD由于允许使用者修改和重新发 布代码,也允许使用或在B$D代码上开发商业软件,并进行发布和销售,因此它是对商业集成 很友好的协议。很多的公司、企业在选用开源产品的时候都会首选BSD协议,因为可以完全控 制这些第三方的代码,在必要的时候可以修改或二次开发。
Nginx所采用的2-clause BSD-like license衍生自BSD协议,也就是删掉了BSD协议的第3 个条件一“不可以用开源代码的作者机构名字和原来产品的名字做市场推“”。
1.2.4 其他理由
-
配置文件非常简单:网络跟程序一样通俗易懂,即使非专业系统管理员也能看懂。 -
支持Rewrite重写规则:能够根据域名、URL的不同,将HTTP请求分到不同的后端服务器群组。 -
内置的健康检查功能:如果Nginx Proxy后端的某台Web服务器岩机了,不会影响前端访问。
-
节省带宽:支持GZIP压缩,可以添加浏览器本地缓存的Header头。 -
稳定性高:用于反向代理,宕机的概率微乎其微。
-
支持热部署:Nginx支持热部署。它的启动特别容易,并且几乎可以7天×24小时不间断地运行,即使运行数个月也不需要重新启动。你还能够在不间断服务的情况下,对软件版本进行升级。
2. 安装和启动
2.1 版本区别
常用版本分为四大阵营
2.2 Nginx开源版安装
.tar.gz放到linux操作系统 .. 目录下,使用tar zxvf安装
安装指令:
./configure --prefix=/usr/local/nginx
安装到usr/local/nginx路径下
安装成功页面
\
但遇到报错,需要安装以下环境 (本人使用的是已经安装过环境的CentOS-7,若使用mini版的需要安装环境 )
安装Nginx需要C语言编译器等。。
安装 gcc yum install -y gcc
安装perl库 yum install -y pcre pcre-devel
安装zlib库 yum install -y zlib zlib-devel
接下来执行
make
make install
查看 /usr/local目录,确定安装成功
2.3 启动Nginx
进入安装好的目录 /usr/local/nginx/sbin
启动Nginx ./nginx
./nginx 启动
./nginx -s stop 快速停止
./nginx -s quit 优雅关闭,在退出前完成已经接受的连接请求
./nginx -s reload 重新加载配置
放行Nginx,端口号:80
firewall-cmd --zone=public --add-port=80/tcp --permanent
重启防火墙
firewall-cmd --reload
访问服务器ip
2.4 安装成系统服务,开机自启
创建服务脚本
vi /usr/lib/systemd/system/nginx.service
服务脚本内容
[Unit]
Description=nginx - web server
After=network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStartPre=/usr/local/nginx/sbin/nginx -t -c /usr/local/nginx/conf/nginx.conf
ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s stop
ExecQuit=/usr/local/nginx/sbin/nginx -s quit
PrivateTmp=true
[Install]
WantedBy=multi-user.target
重新加载系统服务
systemctl daemon-reload
启动服务
systemctl start nginx.service
使用系统启动服务之前,建议先把之前启动的关闭,否则可能有冲突
重新启动nginx服务
systemctl reload nginx
开机启动
systemctl enable nginx.service
参考文章
深入先出Nginx实战 第一、二章
深入理解Nginx模块开发与架构解析
nginx安装和启动