02 - Nginx的的目录结构,基本运行原理及常用命令

一、nginx的目录

使用tree工具,可以以树形结构的方式查看任何一个目录。当然,如果要想使用tree工具,就得通过yum install -y tree来进行安装,安装成功后,可以通过执行tree /usr/local/nginx(tree后面跟的是Nginx的安装目录),获取的结果如下:
在这里插入图片描述

  1. 查看mime.types文件内容(部分)
    在这里插入图片描述
  2. 查看logs目录
  • 查看access.log,每次请求,都会被写入到该文件中。
    在这里插入图片描述

  • 查看error.log,存放错误日志文件。

    在这里插入图片描述

  • 查看nginx.pid 存放主进程的进程号。
    在这里插入图片描述

  1. html目录存放的是静态页面
    在这里插入图片描述
    50x.html是发生错误展示的页面,index.html是默认的访问页面。可以在该目录下新建html,然后在浏览器中访问,例如在该目录下新建lss.html,内容是我坐在九千个日落里 望向白鸟衔玫瑰飞去~,然后访问:http://192.168.38.128/lss.html,结果如下:
    在这里插入图片描述
  2. nginx.conf配置文件(重点!!!)
    下篇单独讲解。

二、Nginx服务器的启停命令

Nginx安装完成后,如何启动、重启和停止Nginx服务呢?对于Nginx的启动在linux系统中也有很多方式,在这里会介绍两种方式:

  1. Nginx服务的信号控制
  2. Nginx的命令行控制

方式一:Nginx服务的信号控制

Nginx采用的是多进程的方式来工作的([Master-worker),Nginx启动后,通过ps -ef | grep nginx命令可以看到如下内容:
在这里插入图片描述
Nginx后台进程中包含一个master进程多个worker进程(目前只有一个,需要在nginx.conf配置文件中进行配置)master进程主要用来管理worker进程,包含接收外界的信息,并将接收到的信号发送给各个worker进程,监控worker进程的状态,当worker进程出现异常退出后,会自动重新启动新的worker进程。而worker进程则是专门用来处理用户请求的,各个worker进程之间是平等的并且相互独立,处理请求的机会也是一样的。nginx的进程模型:
在这里插入图片描述
我们作为管理员,只需要通过给master进程发送信号就可以来控制Nginx,这个时候我们需要有两个前提条件,一个是要操作的master进程,一个是信号

  1. 要想操作Nginx的master进程,就需要获取到master进程的进程号ID。获取方式简单介绍两个:
    方式一:通过ps -ef | grep nginx
    在这里插入图片描述
    方式二:/usr/local/nginx/logs/nginx.pid,可以通过查看该文件来获取nginx的master进程ID.
    在这里插入图片描述
  2. 信号
    在这里插入图片描述
    调用命令为kill -signal PIDsignal即为信号;PID即为获取到master进程ID
  • 发送TERM/INT信号给master进程,会将Nginx服务立即关闭。

    kill -TERM PID 或者 kill -TERM `cat /usr/local/nginx/logs/nginx.pid`
    kill -INT PID 或者 kill -INT `cat /usr/local/nginx/logs/nginx.pid`
    

    在这里插入图片描述

  • 发送QUIT信号master进程master进程会控制所有的work进程不再接收新的请求,等所有请求处理完后,在把进程都关闭掉。

    kill -QUIT PID 或 kill -QUIT `cat /usr/local/nginx/logs/nginx.pid`
    

    在这里插入图片描述

  • 发送HUP信号给master进程,master进程会把控制旧的work进程不再接收新的请求,等处理完请求后将旧的work进程关闭掉,然后根据nginx的配置文件重新启动新的work进程(master进程不变,可以看到master进程号还是原来的)。

    kill -HUP PID 或 kill -HUP `cat /usr/local/nginx/logs/nginx.pid`
    

    在这里插入图片描述

  • 发送USR1信号给master进程,告诉Nginx重新开启日志文件。

    kill -USR1 PID / kill -USR1 `cat /usr/local/nginx/logs/nginx.pid`
    

    在这里插入图片描述

  • 发送USR2信号给master进程,告诉master进程要平滑升级,这个时候,会重新开启对应的master进程和work进程,整个系统中将会有两个master进程,并且新的master进程的PID会被记录在/usr/local/nginx/logs/nginx.pid而之前的旧的master进程PID会被记录在/usr/local/nginx/logs/nginx.pid.oldbin文件中,接着再次发送QUIT信号给旧的master进程,让其处理完请求后再进行关闭。

    kill -USR2 PID 或 kill -USR2 `cat /usr/local/nginx/logs/nginx.pid`
    
    kill -QUIT PID 或 kill -QUIT `cat /usr/local/nginx/logs/nginx.pid.oldbin`
    

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

  • 发送WINCH信号给master进程,让master进程控制不让所有的work进程在接收新的请求了,请求处理完后关闭work进程。注意master进程不会被关闭掉。

    kill -WINCH PID 或 kill -WINCH`cat /usr/local/nginx/logs/nginx.pid`
    

    在这里插入图片描述

方式二:Nginx的命令行控制(常用)

此方式是通过Nginx安装目录下的sbin下的可执行文件nginx来进行Nginx状态的控制,我们可以通过nginx -h来查看都有哪些参数可以用:
在这里插入图片描述
此处给出常用的命令:

  • ?和-h:显示帮助信息

  • v:打印版本号信息并退出

  • V:打印版本号信息和配置信息并退出
    在这里插入图片描述

  • t:测试nginx的配置文件语法是否正确并退出
    nginx.conf配置文件中,随便配置一串字母hhhh使,配置文件出错,然后在sbin目录下执行命令:

    ./nginx -t
    

    在这里插入图片描述
    去掉错误配置,再次执行:
    在这里插入图片描述

  • s :singal信号(常用)

1. 快速关闭(Nginx服务立即关闭),类似于TERM/INT信号的作用。
./nginx -s stop 
2. 优雅的关闭(master进程会控制所有的work进程不再接收新的请求,等所有请求处理完后,在把进程都关闭掉), 类似于QUIT信号的作用
./nginx -s quit
3. reopen[重新打开日志文件类似于USR1信号的作用] 
./nginx -s reopen
4. reload 类似于HUP信号的作用(master进程会把控制旧的work进程不再接收新的请求,等处理完请求后将旧的work进程关闭掉,然后根据nginx的配置文件重新启动新的work进程,在后面修改了`nginx.conf`配置文件后,无需重新启动,直接执行改命令即可)
./nginx -s reload
5.指定Nginx的配置文件路径,(默认为: /usr/local/nginx/conf/nginx.conf)
./nginx -c /usr/local/nginx/conf/nginx.conf

在这里插入图片描述

  • ./nginx -s stop进行关闭(若将nginx注册过服务也可执行systemctl stop nginx.service,如何将nginx注册为服务看这里01-nginx的安装与卸载
    在这里插入图片描述

  • ./nginx -c /usr/local/nginx/conf/nginx.conf

    1 、 执行下面命令,将Nginx的配置文件nginx.conf复制一份到/opt/下:

    cp /usr/local/nginx/conf/nginx.conf /opt/
    

    在这里插入图片描述
    2、使用命令vim nginx.conf,更改配置文件,然后保存并推出。
    在这里插入图片描述
    3、进入到nginx的sbin目录下
    在这里插入图片描述
    4、执行./nginx -c /opt/nginx.conf命令来执行我们复制过的配置文件。发现可以通过./nginx -c nginx.conf文件的位置来指定nginx执行哪个配置文件。
    在这里插入图片描述

三、Nginx配置成系统服务与Nginx命令配置到系统环境

经过前面的操作,如果想要启动、关闭或重新加载nginx配置文件,都需要先进入到nginx的安装目录的sbin目录,然后使用nginx的二进制可执行文件(sbin)来操作,相对来说操作比较繁琐,这块该如何优化?另外如果我们想把Nginx设置成随着服务器启动就自动完成启动操作,又该如何来实现?这就需要用到接下来我们要讲解的两个知识点:

  1. Nginx配置成系统服务
  2. Nginx命令配置到系统环境

3.1 Nginx配置成系统服务

如何将Nginx配置成系统服务

3.2 Nginx命令配置到系统环境

前面使用过Nginx安装目录下的二进制可执行文件nginx的很多命令,要想使用这些命令前提是需要进入sbin目录下才能使用,很不方便,如何去优化,我们可以将该二进制可执行文件加入到系统的环境变量,这样的话在任何目录都可以使用nginx对应的相关命令。具体实现步骤如下:

  1. 修改etc/profile文件

    vim /etc/profile
    在最后一行添加(vim中执行G直接跳到文件尾部)
    export PATH=$PATH:/usr/local/nginx/sbin
    

    在这里插入图片描述

  2. 使修改后的文件生效

    source /etc/profile
    
  3. 在任何目录都可以执行nginx命令了

    nginx -v 
    

    在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值