Nginx


nginx四个发行版本呢简单介绍

常用版本分为四大阵营

  • Nginx开源版
    • http://nginx.org/
  • Nginx plus 商业版
    • https://www.nginx.com
  • Openresty
    • http://openresty.org
  • Tengine
    • http://tengine.taobao.org/

第一章 安装

上传安装包

将nginx的安装包放入/root目录下
在这里插入图片描述

解压tar.gz包

tar zxvf nginx-1.21.6.tar.gz

在这里插入图片描述

编译

cd nginx-1.21.6
ls
./configure

在这里插入图片描述

发现编译会报c编译器gcc没有发现

checking for OS
+ Linux 3.10.0-693.el7.x86_64 x86_64
checking for C compiler ... not found
./configure: error: C compiler cc is not found

这时候需要安装c语言的编译器gcc

yum install -y gcc

在这里插入图片描述

继续编译

./configure --prefix=/usr/local/nginx   //编译并将安装目录设置在/usr/local/nginx

在这里插入图片描述

会发现报错,需要安装perl库

yum install -y pcre pcre-devel

在进行编译

./configure --prefix=/usr/local/nginx  //--prefix指定安装目录

发现又报错
在这里插入图片描述
需要安装zlib库

yum install -y zlib zlib-devel

再进行重新编译

./configure --prefix=/usr/local/nginx

在这里插入图片描述

发现编译成功了

安装

make
make install

在这里插入图片描述
在这里插入图片描述

看下nginx安装目录是否在我们设置的/usr/local目录下

在这里插入图片描述
发现是有的

启动

进入安装好的目录 /usr/local/nginx/sbin

./nginx 启动
./nginx -s stop 快速停止
./nginx -s quit 优雅关闭,在退出前完成已经接受的连接请求
./nginx -s reload 重新加载配置

在这里插入图片描述

在宿主机上打开浏览器访问虚拟机ip
http://虚拟机ip,发现无法访问此网站

在这里插入图片描述

是因为cenos7虚拟机的防火墙没有开放80端口
可以设置防火墙放开80端口

firewall-cmd --zone=public --add-port=80/tcp --permanent

也可以关闭防火墙

systemctl stop firewalld.service

如果是设置防火墙放开80端口,就需要重启防火墙,但如果是关闭防火墙,这步就不需要做了

firewall-cmd --reload

在访问虚拟机ip,会发现访问nginx成功了
在这里插入图片描述

关于防火墙

关闭防火墙

systemctl stop firewalld.service

禁止防火墙开机启动

systemctl disable firewalld.service

放行端口

firewall-cmd --zone=public --add-port=80/tcp --permanent

重启防火墙

firewall-cmd --reload

安装成系统服务

安装成系统服务

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

启动服务

启动前需要看下nginx是否开启着,如果开启着需要关闭下nginx,可以使用ps -ef | grep nginx查看下nginx的进程是否开启着
在这里插入图片描述

进行nginx关闭服务

./nginx -s stop 快速停止
./nginx -s quit 优雅关闭,在退出前完成已经接受的连接请求

在这里插入图片描述

systemctl start nginx.service

可以通过以下命令来查看nginx是或否启动着

systemctl status nginx.service

在这里插入图片描述

开机启动

systemctl enable nginx.service

在这里插入图片描述

测试nginx是否可以访问了

在浏览器中访问:虚拟机ip
在这里插入图片描述

目录结构

进入Nginx的主目录我们可以看到这些文件夹
在这里插入图片描述

其中这几个文件夹在刚安装后是没有的,主要用来存放运行过程中的临时文件

client_body_temp fastcgi_temp proxy_temp scgi_temp uwsgi_temp

conf

用来存放配置文件相关
主要放着nginx的相关配置文件,nginx的主配置文件其实就一个,就是nginx.cof,这个nginx.conf文件里面会引用其他的配置文件,比如说mine.types
在这里插入图片描述

html

用来存放静态文件的默认目录 html、css等
默认情况下,存放我们的页面和静态资源

在这里插入图片描述

当在浏览器访问:http://192.168.133.110/访问站点时,他给我们显示出来的界面它是对应的是这html目录下的index.html文件。

在nginx里,index是默认页的默认配置,在访问该站点的时候,我没有具体指向访问哪个页面,如果当前html目录下,有个index.html文件,他就会加载这个默认的页面即index.html给我们展示出来,这是默认页。

看index.html文件代码,会发现跟访问http://192.168.133.110/展示出来的界面是一样的。

当然,默认页和默认页的目录是可以配置的
这个html目录下只能放一个站点,所以这个配置一般来说,都会改,会在后续的课程中讲到。

logs

用于记录日志

在这里插入图片描述

  • access.log 用于记录访问日志,就是用户访问我们系统时,在nginx这里面,它会记录用户的访问时间,访问请求的具体文件以及有没有附加的参数等等都会把它记录下来在access.log。记录用户访问系统的时间,请求的地址的文件以及附加的参数等等,每个人访问的每一次都会记录在里面,可想而知,这个日志文件后续可能会比较大,现在是刚启动nginx,所以只有979bytes大小,虽然access.log比较大,但是不影响太多nginx性能。但一定要注意磁盘要控制好,不能让access.log无限的扩增,在配置文件里也会限制access.log的大小,当记录到一定大小后,就会往另外一个文件里去记录,当我们磁盘满了之后,可能会写不进来了,一旦写不进来,我们服务器可能会出现一些莫名其妙的问题
  • error.log 就跟access.log不一样,它就比较小一些,就访问出错,当系统出现错误的时候,它会把用户请求的错误包括404记录到error.log里面
  • nginx.pid文件主要是用来记录nginx主进程的id号,可以进行打开看下
    在这里插入图片描述

在这里插入图片描述
通过ps命令我们可以看到当前nginx的进程id是994,如果我们想终止这个进程,可以使用kill命令 kill 994

sbin

就一个文件,就是nginx的主进程文件

修改默认页

对/usr/local/html目录下的index.html文件进行修改,即是修改默认页

在这里插入图片描述

在这里插入图片描述

基本运行原理

在这里插入图片描述

左边用户在访问我们系统的时候,nginx主目录下有个/sbin/nginx可执行文件,在这个可执行文件跑起来之后,它会发生以下几个动作,首先它会开启Master的主进程,注意,这是进程,这个主进程里边会把这个配置文件读取出来,然后把这个配置文件做一次校验,看下这个配置文件究竟有没有错误,没有错误的话,它会开启这个它的子进程,子进程开启之后,就真正运行在我们服务器当中多个进程当中其中之一,也就是它运行的时候,会分为两种进程,一个是这个主进程,一个是子进程,主进程叫Master,子进程叫Worker,我们刚刚通过ps命令也能看到,我们启动好的nginx,它不止是只有一个进程在的,通过图片看,这个nginx里面有个master还有个worker,master是主进程,主进程它是不处理业务,它去协调这些子进程worker进程。在启动nginx之后,主进程和子进程全部启动完成之后,接下来就会等待用户的请求接入进来,用户请求接入到我们系统当中,会由worker进程来响应并解析的。它流程是这样的,这个worker已经获取到这个配置文件(即/conf/nginx.conf),也就是说它知道用户请求我能不能完成,比如说用户请求的位置,它这个目录,或者说它这个文件,我能不能找的着,用户请求打过来,worker会接收并解析这个请求,解析请求会发现用户想要的是/index.html,worker子进程会读取配置文件(conf/nginx.conf)这配置文件里就写了主目录站点在哪里,或者说它有几个站点,当前我们只有一个站点

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值