关于Nginx

 

目录

1.nginx的安装:

2.Nginx显示默认首页过程解析:

3. nginx的进程模型:

4. Nginx处理web请求机制解析:

5. Nginx.conf 配置结构:

6.  nginx.conf 配置文件详解:

6.1.worker进程用户:

6.2. worker进程数量:

6.3. nginx 日志:

6.4. events

6.5.keepalive

7.解决 nginx.pid 打开失败:

8.Nginx常用命令解析:

1.关闭nginx:

2.检测配置是否正确:

3.查看版本号:

9. Nginx日志切割:

10. Nginx日志定时切割:



 

 

 

 

1.nginx的安装:

1.将压缩包上传到 centos的 /home/software 目录下(目录可以更改)

2.安装依赖环境:

  2.1 安装 gcc环境:

yum install gcc-c++

2.2 安装PCRE库,用于解析正则表达式;

 yum install -y pcre pcre-devel

2.3 zlib压缩和解压缩依赖:

yum install -y zlib zlib-devel

2.4 SSL 安全的加密的套接字协议层,用于 HTTP安全传输,也就是https

yum install -y openssl openssl-devel

 

3.解压:解压后得到的是源码,源码需要编译后,才能安装

tar -zxvf nginx-1.18.0.tar.gz  【注意:下载的版本号】

 

4. 编译之前,先创建nginx的临时目录,若不创建,在启动 nginx时会报错:

mkdir /var/temp/nginx -p

 

 

5. nginx目录,输入如下命令进行配置【注意:是一次性输入,不是一行一行的输入】,目的是为了创建makefile文件

 

 

【注意:进入到nginx 中直接 将下面的命令复制即可,我的是nginx ,是因为改名字了,原来是 nginx-1.18.0 】

======================================================================

  • ./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

======================================================================

 

 

但是在我的Linux上创建不了,显示找不到目录,所以使用第二种方法:

 

在/home/software/nginx目录下 执行:

./configure

 

 

 

 

 

6. make编译:【在nginx目录下输入】

make

7.安装:

make install

      7.1 通过命令找nginx是否安装成功

whereis nginx

 

 

8.进入  /usr/local/nginx/sbin目录启动nginx:

9.打开浏览器,

9.1 若是在虚拟机上,则访问虚拟机所处内网ip即可打开nginx默认页面,

9.2 若是在云服务器上,则则访问公网ip即可打开nginx默认页面,

 

如果nginx启动,但是在浏览器上打不开,参考一下:https://www.cnblogs.com/chenleideblog/p/10499807.html 。

 

 

2.Nginx显示默认首页过程解析:

 

 

192.168.1.172 是虚拟机所处内网ip,80是端口号

在  /usr/local/nginx/conf 目录下:

打开 nginx.conf.default 文件:

1. listen:监听的端口号: 默认的是80,也可以更改为88或其他。【当端口是80时,可以省略】

2.server_name:是请求时的IP。(我的是 虚拟机所以是localhost,也可以是备案好的域名)

当 IP和端口号都符合时,就会映射到  root(根目录), html是个文件夹,和conf同一级别

在html文件夹中有 index.html

所以当IP 和端口都符合时,就会默认打开 index.html(注意:是 index 的第一个 index.html,不是第二个,如果想要更改,也是修改第一个 )

 

3. nginx的进程模型:

 

默认情况下:worker 和 master进程数量 都只有一个

1. 配置 worker 进程数量:

进入 /usr/local/nginx/conf目录

vi  nginx.conf

修改 worker_processes 的值 ,我改为 2

保存退出 ,

先检测一下配置文件是否有错:

../sbin/nginx -t  【注意:目前我在conf目录下所以用了 ../sbin ,转到了conf同级目录的sbin下】

没有报错

然后重新加载:

../sbin/nginx -s reload

最后再次查看进程:

ps -ef|grep nginx

 

现在是 一个 master进程,两个 worker进程

master接收外界的信号,进行分析,然后传递给worker进行。

master会监控worker,若worker因为异常退出,master会重新启动新的worker。

 

 

 

 

 

 

4. Nginx处理web请求机制解析:

 

 

1.worker的抢占机制:

假设 有 一个 master 和三个 worker

有一个请求,三个worker通过争抢 accept_mutex 来决定谁来处理请求

 

worker1发现 Client1阻塞,会处理 Client2,若Client2也阻塞,则处理Client3

 

 

5. Nginx.conf 配置结构:

 

6.  nginx.conf 配置文件详解:

6.1.worker进程用户:

设置 worker 进程的用户,指的 linux 中的用户,会涉及到 nginx 操作目录或文件的一些权限,默认为 nobody ,即使注释了,也是nobody

 

查看进程:

也可以设置为:user root;

 

 

6.2. worker进程数量:

worker进程工作数设置,一般来说CPU有几个,就设置几个,或者设置为N-1也行,目前我设置为2个

 

6.3. nginx 日志:

nginx 日志级别 debug | info | notice | warn | error | crit | alert | emerg ,错误级别从左到右越来越大 。【级别越大,信息显示越少】

 

在安装nginx时,就设置日志路径:

 

 

6.4. events

用的Linux系统,默认就使用epoll,要是Mac,就要更换,

worker的连接数不能太高(硬件配置高一些,2万-3万也可以,配置低的话,就默认的就可以:1024)

 

 

6.5.keepalive

客户端连接服务器的一个超时时间(单位是秒):

在处理完客户端请求后,保持一个超时时间,在此期间,若有其他请求进来,会直接处理,而不是重新创建一个连接来处理,

就很大程度节约开销,但是 keepalive 也占用资源,不宜过多。

 

 

 

 

7.解决 nginx.pid 打开失败:

 

原因有两个:1./var/run/nginx 目录不存在  。  或     2. nginx.pid 文件不存在。

   首先查看 目录是否存在,若不存在,则创建:

cd /var/run/nginx

mkdir  /var/run/nginx

目录创建好了,再次回到 sbin目录下,重新加载,失败,显示 PID有些问题

重新 指定 nginx.conf

命令(在sbin目录下): ./nginx -c /usr/local/nginx/nginx.conf

 

 

8.Nginx常用命令解析:

 

1.关闭nginx:

      1.1  在sbin目录下: ./nginx -s stop 这是暴力 关闭nginx,使用此命令,即使有用户正在访问,也会立即停止。

      1.2   在sbin目录下: ./nginx -s quit   有用户正在请求,会维持这个连接,直至请求完成才会终止关闭。

 

2.检测配置是否正确:

./nginx  -t

当配置文件发生更改,要检测配置文件是否正确。

 

3.查看版本号:

./nginx  -v  【v是小写的】

 

 

9. Nginx日志切割:

nginx日志的存放目录是在安装时就设置好的,但是每天的日志都放在一起,一年以后文件就会非常大,所以按照每天进行切割。

 

1.先进入 : cd /usr/local/nginx/sbin  目录,

2.创建一个shell可执行文件: cut_my_log.sh ,内容为:

创建命令: vi cut_my_log.sh

内容为:

======================================================

#!/bin/bash
#日志所处的位置,注意:这个跟你原先在安装时,设置的目录一样
LOG_PATH="/usr/local/nginx/logs/"
 
# 以天为切割单位时间 【   以 分钟为切割单位: RECORD_TIME=$(date -d "yesterday" +%Y-%m-%d+%H:%M) 】
RECORD_TIME=$(date -d "yesterday" +%Y-%m-%d)
PID=/var/run/nginx/nginx.pid
 
mv ${LOG_PATH}/access.log ${LOG_PATH}/access.${RECORD_TIME}.log
mv ${LOG_PATH}/error.log ${LOG_PATH}/error.${RECORD_TIME}.log
#向Nginx主进程发送信号,用于重新打开日志文件
kill -USR1 `cat $PID`

 

======================================================

 

3.保存关闭

4. 赋给操作权限: chmod +x cut_my_log.sh

 

赋给权限 前后 文件名颜色对比

5.  ./cut_my_log.sh

6.查看:

执行:  /usr/local/nginx/sbin/cut_my_log.sh

就会生成新的日志

在 /usr/local/nginx/logs 目录下查看

 

 

10. Nginx日志定时切割:

1.安装定时任务(在本地虚拟机中不需要安装,在云服务器上需要安装):

yum install crontabs

 

2.查看定时任务列表:

crontab -l

目前没有

3.   crontab -e    (编辑并且添加一行新的任务:)

*/1 * * * * /usr/local/nginx/sbin/cut_my_log.sh

 

4.再次查看:
 

crontab -l

 

 

5.重启定时任务:

service crond restart
 
 
6.常用的定时任务命令:
service crond start //启动服务
service crond stop //关闭服务
service crond restart //重启服务
service crond reload //重新载入配置
crontab -e // 编辑任务
crontab -l // 查看任务列表
 
 
 
每天定时为数据库备份: https://www.cnblogs.com/leechenxiang/p/7110382.html
 
 
 
 
11.  include 命令: 将外部文件导入进来
 
   若有很多的 server{} ,会使conf文件显得很臃肿,所以可以使用 include命令 在 外部创建 server{},通过include 导入进来:
 
 
 
 
在   /usr/local/nginx/conf  目录下

 

 
 
 
 
1. 创建一个 imooc.conf 文件
 
vi imooc.conf
 
 
 
  2. 导入 imooc.conf 以下内容:
============================================================

  server{

              #90是一个新的端口号 ,和80区分开

                listen 90 ;

                    # localhost 是因为我是在本地虚拟机上配置的,要是云服务,就公网 ip地址

                 server_name localhost ;

                 location  / {

                                        #   /home/foodie-shop 是我项目所在目录,foodie-shop 是项目名

                                       root   /home/foodie-shop;

                                       index   index.html   ;

                         }

         }

============================================================

 

3. 编辑 nginx.conf 文件:

vi  nginx.conf

 

在 server 上方 添加:

include imooc.conf ;

 

4.  在 conf目录下 进行检测:
 

../sbin/nginx  -t

 

表明刚才的 操作 没有问题。
 
 
5.  重新启动nginx :
../sbin/nginx  -s  reload
 
 
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值