Nginx基础篇1-简介和安装启动

178 阅读6分钟

欢迎大家关注 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 版本区别

常用版本分为四大阵营

Nginx开源版

Nginx plus 商业版

openresty

Tengine

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目录,确定安装成功

image.png

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

使用系统启动服务之前,建议先把之前启动的关闭,否则可能有冲突

image.png

重新启动nginx服务

systemctl reload nginx

开机启动

systemctl enable nginx.service

参考文章

深入先出Nginx实战 第一、二章
深入理解Nginx模块开发与架构解析
nginx安装和启动