淘淘商城第87讲——nginx的介绍与安装

nginx的介绍

上一讲,我们已经简单介绍和使用过nginx了,咱是将它作为Http服务器来用的,这一讲,我们将会详细介绍它。

为什么需要nginx?

目前我们访问各个系统是存在问题的,访问后台管理系统需要在浏览器地址栏中输入http://localhost:8081/,如下图所示。
在这里插入图片描述
访问首页系统需要在浏览器地址栏中输入http://localhost:8082/,如下图所示。
在这里插入图片描述
访问商品搜索结果页面时,可以看到浏览器地址栏中有http://localhost:8085/字样。
在这里插入图片描述
而且,在搜索结果页面(即search.jsp)中,写死了其他的系统的全路径。
在这里插入图片描述
问题来了,localhost只能访问本地,不能访问其他的服务器,但是将来我们的系统应当是要部署在测试环境和生产环境中的,这个时候该怎么办呢?你这时可能想到可以使用ip地址啊?可以吗?这是不可以的,因为开发环境的ip地址和测试环境的ip地址是不一样的,每次环境变化的时候,我们都需要修改访问的ip地址。而且,页面加载资源或者请求其他系统的URL时,如果使用了全路径,那么一旦环境发生改变,资源将无法加载,请求也无法访问。最关键的一点是,ip地址没有意义,不容易记忆,用户不会通过ip地址进行访问,一般是通过域名访问。

如果使用域名来访问,就比方说我们使用www.baidu.com这个域名来访问百度,那么你知道使用域名访问百度的流程吗?
在这里插入图片描述
就拿访问本地开发环境下的商品详情页面这件事来说,如果真是要通过域名来访问的话,那么浏览器地址栏中就得输入http://item.taotao.com:8086/item/{商品id}.html这样的url,如下图所示。
在这里插入图片描述
要想做到这一点,我们只须修改一下本机的hosts文件即可。
在这里插入图片描述
但是这样访问又会存在一个问题,那就是访问时域名后还需要加上端口。一般我们用户去访问的时候,有这个端口吗?没有,如果没有端口的话,那么他用的是哪个端口呢?其实就是80端口。

我们这么多系统,而开发环境中80端口就只有一个,每个系统又都要用这个80端口,这个时候该怎么办呢?反正咱们以前学的技术是没办法解决的。这个时候,就可以使用nginx进行配置了,很容易就能达到只使用域名(不使用端口)访问的目的。只要nginx配置了一个反向代理,大家就都可以使用80端口了。

什么是nginx?

nginx是一款高性能的Http服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器。由俄罗斯的程序设计师Igor Sysoev所开发,官方测试nginx能够支撑5万并发链接,并且cpu、内存等资源消耗都非常低,运行也非常稳定。

nginx的应用场景

nginx的应用场景主要有三处。

Http服务器

nginx是一个Http服务器,可以独立提供http服务,所以可以做网页静态服务器。

虚拟主机

虚拟主机其实就是虚拟出多个虚拟的主机。

nginx可以实现在一台服务器中虚拟出多个网站,例如个人网站使用的虚拟主机。这里我举一个例子来进行说明,前几年流行自己创建个人网站来娱乐,如果要是每个人都买一台服务器来维护网站的话,费用是比较高的,很划不来,为了降低费用便催生出了虚拟主机,就是在一台服务器上虚拟出多个"主机"出来,大家可以共用这一台服务器,费用当然就很低了,但是有个问题,我们知道nginx默认的端口是80,使用nginx访问静态网页的时候,是不用输入80端口就可以访问的,如果nginx的端口修改为别的端口号(如81),那么访问的时候便需要输入端口号81才能访问。多个人共用一台服务器,访问地址不能以端口号作为区分网站的标志,因为谁也不想在输入访问地址的时候还带个端口号,大家掏的钱都是一样的,那么怎么让大家都使用80端口而且区分出不同的个人网站呢?这就需要用到域名了,不同的用户输入自己的域名就可以访问自己的网站,比如aaaa.com、bbbb.com等域名,这两个域名都对应着同一台服务器并且共用80端口。

反向代理,负载均衡

当网站的访问量达到一定程度后,单台服务器不能满足用户的请求时,需要用多台服务器搭建集群,这时便可以使用nginx做反向代理,这样多台服务器就可以平均分担负载,不会因为某台服务器负载高宕机而某台服务器闲置的情况。关于这点我们后面会再详细介绍。

nginx的安装与使用

写在前面

新建一台虚拟机

首先,新建一台虚拟机,而且最好设置为固定IP地址,别跟我说你不知道怎么做,要是你真不晓得,那么可以参考我下面的两篇文章。

  1. 《Linux入门第三讲——VMware Workstation 12 Pro安装CentOS-7.6》
  2. 《Linux入门番外篇——VMware虚拟机中Linux/CentOS 7.6设置固定IP地址》

下载nginx的源码包

大家可以从nginx的官方网站(即http://nginx.org/)下载nginx的源码包,我下载的nginx源码包是nginx-1.18.0.tar.gz

要求的安装环境

由于我们是在Linux系统上安装nginx,而我们拿到的又是nginx的源码包,所以还需要重新编译,这与redis是一个道理。下面我们使用yum install gcc-c++命令来安装gcc的环境,如下图所示。
在这里插入图片描述
接下来我们还需要安装第三方的开发包。

PCRE

PCRE(Perl Compatible Regular Expressions)是一个Perl库,包括perl兼容的正则表达式库。nginx的http模块使用pcre来解析正则表达式,所以需要在Linux上安装pcre库,安装命令为yum install -y pcre pcre-devel,如下图所示。
在这里插入图片描述
注意,pcre-devel是使用pcre开发的一个二次开发库,nginx也需要此库。

zlib

zlib库提供了很多种压缩和解压缩的方式,nginx使用zlib对http包的内容进行gzip,所以需要在Linux上安装zlib库,安装命令为yum install -y zlib zlib-devel,如下图所示。
在这里插入图片描述

openssl

OpenSSL是一个强大的安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及SSL协议,并提供丰富的应用程序供测试或其它目的使用。

nginx不仅支持http协议,还支持https协议(即在ssl协议上传输http),所以需要在Linux上安装openssl库,安装命令为yum install -y openssl openssl-devel,如下图所示。
在这里插入图片描述

安装nginx

首先,将nginx的源码包上传到Linux系统上,关于怎样将文件上传到Linux系统上,我想我已经说的要吐了,所以这儿不再浪费口舌。与以往一样,我把nginx-1.18.0.tar.gz上传到了用户主目录(即root)下,如下图所示。
在这里插入图片描述
然后,我们使用tar zxf nginx-1.18.0.tar.gz命令将nginx的源码包解压缩到用户主目录下,解压完之后,可以看到解压后的nginx-1.18.0目录。
在这里插入图片描述
进入到解压好的nginx-1.18.0目录下,如下图所示。
在这里插入图片描述
接着,我们使用configure命令创建一个makeFile文件,具体命令如下:

./configure \
--prefix=/usr/local/nginx \
--pid-path=/var/run/nginx/nginx.pid \
--lock-path=/var/lock/nginx.lock \
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log \
--with-http_gzip_static_module \
--http-client-body-temp-path=/var/temp/nginx/client \
--http-proxy-temp-path=/var/temp/nginx/proxy \
--http-fastcgi-temp-path=/var/temp/nginx/fastcgi \
--http-uwsgi-temp-path=/var/temp/nginx/uwsgi \
--http-scgi-temp-path=/var/temp/nginx/scgi

这里,我还截了图,如下所示。
在这里插入图片描述
执行完configure命令后,可以看到nginx-1.18.0目录下多了一个Makefile文件,如下图所示。
在这里插入图片描述
注意:启动nginx之前,上边将临时文件目录指定为/var/temp/nginx,故需要在/var下创建temp及nginx目录。
在这里插入图片描述
紧接着,使用make命令编译nginx的源码,如下图所示。
在这里插入图片描述
再接着使用make install命令进行安装,如下图所示。
在这里插入图片描述
安装完后,进入到/usr/local目录下,可以看到多了一个nginx的目录。
在这里插入图片描述
进入到nginx目录中,可以看到有三个目录,如下图所示。其中conf中存放的都是配置文件,html目录下放置的是欢迎页等相关文件,sbin目录下只有nginx文件,它是用来启动nginx的。
在这里插入图片描述

启动nginx

安装完了nginx,我们就要来启动nginx了,如下图所示。
在这里插入图片描述
启动完之后,我们可以使用ps aux | grep nginx命令来查看进程,如下图所示,看到master和worker这两个进程就代表nginx启动成功了。
在这里插入图片描述
如果要停止nginx,那么可以使用./nginx -s stop命令,停止后,再查看进程发现nginx进程已经没有了。
在这里插入图片描述
注意,关闭nginx,推荐使用./nginx -s quit命令。

如果修改了配置文件,想要使用新的配置文件,那么就需要使用热启动了,即动态地刷新配置文件,使用的命令是./nginx -s reload。简单一点说,就是修改了nginx.conf文件之后,可以不用重启nginx,就能马上生效。

访问nginx

安装完nginx,并成功启动了nginx之后,在浏览器地址栏中输入nginx所在虚拟机的IP地址进行访问,如下图所示,发现可以正常访问nginx首页。这里之所以不用输入端口号是因为nginx默认使用的是80端口,80端口不用输入,如果使用别的端口号的话,访问nginx首页的时候就要输入端口号才能正常访问了。
在这里插入图片描述
注意:是否关闭了防火墙。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

李阿昀

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值