淘宝客如何建设推广网站最好看免费观看高清大全一影视下载
news/
2025/9/24 3:40:35/
文章来源:
淘宝客如何建设推广网站,最好看免费观看高清大全一影视下载, 最新版天堂资源网在线,个人网站怎么做视频文章目录 01. Nginx 简介02. 正向代理和反向代理03. Nginx 和 Apache、Tomcat 之间的不同点04. Nginx 的优点05. Nginx 常用的功能特性06. Nginx 下载07. Nginx 安装1. 源码安装前的环境准备2. Nginx 源码简单安装方式3. Nginx yum 安装方式4. Nginx 源码复杂安装方式 08. Ngin… 文章目录 01. Nginx 简介02. 正向代理和反向代理03. Nginx 和 Apache、Tomcat 之间的不同点04. Nginx 的优点05. Nginx 常用的功能特性06. Nginx 下载07. Nginx 安装1. 源码安装前的环境准备2. Nginx 源码简单安装方式3. Nginx yum 安装方式4. Nginx 源码复杂安装方式 08. Nginx 目录结构分析09. Nginx 服务器启动和停止命令1. 信号控制 Nginx 服务器的启动和停止2. 命令行控制 Nginx 服务器的启动和停止 10. Nginx 服务器版本的升级和新增模块1. 环境准备2. 使用 Nginx 服务信号进行升级3. 使用 Nginx 安装目录的make命令完成升级 01. Nginx 简介
Nginx是一个高性能的Web服务器同时也是一个反向代理服务器。它最初是为了解决C10K问题而开发的即如何让一个服务器同时处理成千上万个并发连接。Nginx采用了事件驱动的异步非阻塞处理方式能够高效地处理大量并发连接因此被广泛应用于高并发的Web应用场景中。
此外Nginx还可以作为POP3/SMTP/IMAP代理服务器用于代理邮件服务器的请求和响应。这使得Nginx可以在一台服务器上同时运行多个服务提高了服务器的利用率。
02. 正向代理和反向代理
正向代理和反向代理是两种不同的代理模式它们的作用和实现方式不同。
正向代理Forward Proxy是客户端通过代理服务器访问互联网资源的方式。在这种模式下客户端向代理服务器发送请求代理服务器再将请求转发给互联网上的服务器最后将响应结果返回给客户端。正向代理的作用是隐藏客户端的真实IP地址保护客户端的隐私同时可以加速访问速度缓存常用资源等。
反向代理Reverse Proxy是服务器通过代理服务器向客户端提供服务的方式。在这种模式下客户端向代理服务器发送请求代理服务器根据请求的内容将请求转发给后端的服务器集群中的某一台服务器最后将响应结果返回给客户端。反向代理的作用是隐藏后端服务器的真实IP地址提高系统的安全性同时可以实现负载均衡、缓存加速、SSL/TLS加密等功能。
总的来说正向代理是客户端通过代理服务器访问互联网资源反向代理是服务器通过代理服务器向客户端提供服务。两者的作用和实现方式不同但都可以提高系统的安全性和性能。
03. Nginx 和 Apache、Tomcat 之间的不同点
Nginx、Apache和Tomcat都是常见的Web服务器它们之间有以下不同点
① 设计理念不同Nginx采用事件驱动的异步非阻塞处理方式能够高效地处理大量并发连接Apache采用多进程或多线程的方式处理请求适合处理静态资源Tomcat则是一个Java Servlet容器主要用于处理动态Web应用。
② 功能不同Nginx主要用于反向代理、负载均衡、静态文件服务、SSL/TLS加密等Apache除了支持反向代理和负载均衡外还支持动态内容生成、模块化扩展等Tomcat则是一个完整的Java Web应用服务器支持Java Servlet和JavaServer PagesJSP等技术。
③ 配置方式不同Nginx的配置文件采用类似于编程语言的语法配置简单灵活Apache的配置文件采用基于XML的语法配置相对复杂Tomcat的配置文件采用基于XML的语法配置相对简单。
④ 性能不同Nginx在高并发的Web应用场景中表现出色能够高效地处理大量并发连接Apache在处理静态资源时表现出色但在高并发场景下性能较差Tomcat在处理动态Web应用时表现出色但在高并发场景下性能也较差。
综上所述Nginx、Apache和Tomcat都有各自的优缺点选择哪种Web服务器取决于具体的应用场景和需求。
04. Nginx 的优点
Nginx具有以下几个主要的优点
① 高性能Nginx采用事件驱动的异步非阻塞处理方式能够高效地处理大量并发连接。它的设计目标是解决C10K问题能够处理成千上万个并发连接适用于高并发的Web应用场景。
② 资源消耗低相比传统的多线程模型Nginx的进程和线程模型更轻量占用的系统资源更少。它能够以较少的内存和CPU资源处理更多的并发请求提高服务器的利用率。
③ 高可靠性Nginx具有良好的稳定性和可靠性。它能够处理异常情况如网络故障、后端服务器宕机等并提供健壮的错误处理机制。此外Nginx还支持热部署可以在不中断服务的情况下进行配置和软件更新。
④ 灵活的配置和扩展性Nginx的配置文件采用类似于编程语言的语法配置简单灵活。它支持模块化的架构可以通过加载不同的模块来扩展功能如反向代理、负载均衡、缓存加速、SSL/TLS加密等。
⑤ 支持丰富的功能除了作为Web服务器和反向代理服务器Nginx还具备其他功能如负载均衡、动态HTTP内容缓存、虚拟主机配置、URL重写、访问控制等。这些功能使得Nginx适用于各种复杂的应用场景。
综上所述Nginx以其高性能、低资源消耗、高可靠性、灵活的配置和丰富的功能而备受青睐成为许多大型网站和应用的首选Web服务器和反向代理服务器。
05. Nginx 常用的功能特性
Nginx具有多种功能特性以下是一些常用的功能
① 静态文件服务Nginx可以快速、高效地提供静态文件的访问如HTML、CSS、JavaScript、图片等。它可以通过配置简单的静态文件目录直接响应客户端的请求减轻后端服务器的负载。
② 反向代理Nginx可以作为反向代理服务器将客户端的请求转发给后端的多个服务器实现负载均衡和高可用性。它可以根据配置的规则将请求分发到不同的后端服务器提高系统的性能和可靠性。
③ 负载均衡Nginx支持多种负载均衡算法如轮询、IP哈希、最少连接等。通过将请求分发到多个后端服务器Nginx可以平衡服务器的负载提高系统的性能和可扩展性。
④ 动态HTTP内容缓存Nginx可以缓存动态生成的HTTP内容减少后端服务器的负载和响应时间。它可以根据配置的规则缓存特定的URL或响应提高系统的性能和响应速度。
⑤ SSL/TLS加密支持Nginx可以提供安全的HTTPS连接支持SSL/TLS协议保护数据的传输安全。它可以配置和管理SSL证书实现加密通信和安全认证。
⑥ 虚拟主机配置Nginx支持虚拟主机的配置可以在一台服务器上托管多个域名或网站。通过配置不同的虚拟主机Nginx可以根据请求的域名将请求分发到不同的网站或应用程序。
⑦ URL重写和重定向Nginx可以通过配置URL重写规则实现URL的重写和重定向。它可以将请求的URL进行修改实现友好的URL结构和搜索引擎优化。
⑧ 访问控制和安全性Nginx支持基于IP地址、用户代理、请求方法等进行访问控制可以限制特定的客户端或请求。它还支持防止恶意请求、DDoS攻击等安全性功能。
除了上述功能Nginx还支持HTTP/2协议、WebSocket协议、gzip压缩、日志记录、HTTP身份验证等。这些功能使得Nginx成为一个强大而灵活的Web服务器和反向代理服务器。
06. Nginx 下载
① Nginx的官方网站为http://nginx.org
② Nginx的官方下载网站为http://nginx.org/en/download.html
③ Nginx源码获取http://nginx.org/download/
07. Nginx 安装
Nginx的安装方式有两种分别是:
通过Nginx源码简单安装 (1)通过yum安装 (2)通过Nginx源码复杂安装 (3)
1. 源码安装前的环境准备
① 安装 GCC
Nginx是使用C语言编写的程序因此想要运行Nginx就需要安装一个编译工具。GCC就是一个开源的编译器集合用于处理各种各样的语言其中就包含了C语言。
# 安装
[root192 ~]# yum install -y gcc
# 查看是否安装成功
[root192 ~]# gcc --version② 安装 PCRE
Nginx在编译过程中需要使用到PCRE库perl Compatible Regular Expressoin 兼容正则表达式库)因为在Nginx的Rewrite模块和http核心模块都会使用到PCRE正则表达式语法。
# 安装
[root192 ~]# yum install -y pcre pcre-devel
# 查看是否安装成功
[root192 ~]# rpm -qa pcre pcre-devel③ 安装 zlib
zlib库提供了开发人员的压缩算法在Nginx的各个模块中需要使用gzip压缩所以我们也需要提前安装其库及源代码zlib和zlib-devel
# 安装
[root192 ~]# yum install -y zlib zlib-devel
# 查看是否安装成功
[root192 ~]# rpm -qa zlib zlib-devel④ OpenSSL
OpenSSL是一个开放源代码的软件库包应用程序可以使用这个包进行安全通信并且避免被窃听。
SSLSecure Sockets Layer安全套接协议的缩写可以在Internet上提供秘密性传输其目标是保证两个应用间通信的保密性和可靠性。在Nginx中如果服务器需要提供安全网页时就需要用到OpenSSL库所以我们需要对OpenSSL的库文件及它的开发安装包进行一个安装。
# 安装
[root192 ~]# yum install -y openssl openssl-devel
# 查看是否安装成功
[root192 ~]# rpm -qa openssl openssl-devel⑤ 上述命令一个个来的话比较麻烦我们也可以通过一条命令来进行安装
[root192 ~]# yum install -y gcc pcre pcre-devel zlib zlib-devel openssl openssl-devel2. Nginx 源码简单安装方式
① 进入官网查找需要下载版本的链接地址然后使用wget命令进行下载
[root192 ~]# wget http://nginx.org/download/nginx-1.16.1.tar.gz② 将下载的资源进行包管理将下载的资源放在目录nginx/core目录下
[root192 ~]# mkdir -p nginx/core
[root192 ~]# mv nginx-1.16.1.tar.gz nginx/core
[root192 ~]# cd nginx/core③ 解压缩
[root192 core]# tar -xzf nginx-1.16.1.tar.gz
[root192 core]# ls
nginx-1.16.1 nginx-1.16.1.tar.gz④ 进入资源文件中发现 configure
[root192 core]# cd nginx-1.16.1
[root192 nginx-1.16.1]# ls
auto CHANGES CHANGES.ru conf configure contrib html LICENSE man README src
[root192 nginx-1.16.1]# ./configure⑤ 编译和安装
[root192 nginx-1.16.1]# make make install⑥ 查看nginx的安装目录
[root192 nginx-1.16.1]# cd /usr/local/nginx/
[root192 nginx]# ll
drwx------. 2 nobody root 6 4月 12 07:23 client_body_temp
drwxr-xr-x. 2 root root 4096 8月 6 16:43 conf
drwx------. 2 nobody root 6 4月 12 07:23 fastcgi_temp
drwxr-xr-x. 2 root root 40 4月 12 07:19 html
drwxr-xr-x. 2 root root 58 8月 28 22:00 logs
drwx------. 2 nobody root 6 4月 12 07:23 proxy_temp
drwxr-xr-x. 2 root root 36 8月 28 22:18 sbin
drwx------. 2 nobody root 6 4月 12 07:23 scgi_temp
drwx------. 2 nobody root 6 4月 12 07:23 uwsgi_temp
[root192 nginx]#⑦ 启动 nginx
[root192 nginx]# cd sbin
[root192 sbin]# ll
-rwxr-xr-x 1 root root 3825520 8月 28 22:18 nginx
-rwxr-xr-x. 1 root root 3892016 4月 12 07:20 nginx.old
[root192 sbin]# ./nginx
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)⑧ 可以看到启动报错了因为80端口占用因为我之前安装并启动过nginx
# 查找占用80端口的进程
[root192 sbin]# lsof -i :80
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
nginx 1075 root 6u IPv4 29234 0t0 TCP *:http (LISTEN)
nginx 1078 nobody 6u IPv4 29234 0t0 TCP *:http (LISTEN)
# 停止占用80端口的进程
[root192 sbin]# kill -9 1075
[root192 sbin]# sudo lsof -i :80⑨ 重新启动 nginx:
[root192 sbin]# ./nginx
[root192 sbin]# sudo lsof -i :80
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
nginx 6484 root 6u IPv4 67768 0t0 TCP *:http (LISTEN)
nginx 6485 nobody 6u IPv4 67768 0t0 TCP *:http (LISTEN)查看nginx的欢迎页面是否可以访问 3. Nginx yum 安装方式
Nginx官网提供的yum安装教程http://nginx.org/en/linux_packages.html#RHEL
① 安装 yum-utils
[root192 sbin]# sudo yum install -y yum-utils② 添加 yum 源文件
[root192 sbin]# vi /etc/yum.repos.d/nginx.repo
[root192 sbin]# cat /etc/yum.repos.d/nginx.repo
[nginx-stable]
namenginx stable repo
baseurlhttp://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck1
enabled1
gpgkeyhttps://nginx.org/keys/nginx_signing.key
module_hotfixestrue[nginx-mainline]
namenginx mainline repo
baseurlhttp://nginx.org/packages/mainline/centos/$releasever/$basearch/
gpgcheck1
enabled0
gpgkeyhttps://nginx.org/keys/nginx_signing.key
module_hotfixestrue③ 使用yum进行安装
[root192 sbin]# yum install -y nginx④ 查看nginx的安装位置
[root192 sbin]# whereis nginx
nginx: /usr/sbin/nginx /usr/lib64/nginx /etc/nginx /usr/local/nginx /usr/share/nginx /usr/share/man/man8/nginx.8.gz⑥ 启动测试
[root192 sbin]# cd /usr/sbin
[root192 sbin]# ./nginx
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
[root192 sbin]# sudo lsof -i :80
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
nginx 6484 root 6u IPv4 67768 0t0 TCP *:http (LISTEN)
nginx 6485 nobody 6u IPv4 67768 0t0 TCP *:http (LISTEN)
[root192 sbin]# kill -9 6484
[root192 sbin]# kill -9 6485
[root192 sbin]# sudo lsof -i :80
[root192 sbin]# ./nginx4. Nginx 源码复杂安装方式
① 进入简单安装的安装目录
[root192 nginx-1.16.1]# pwd
/root/nginx/core/nginx-1.16.1
[root192 nginx-1.16.1]# ls
auto CHANGES CHANGES.ru conf configure contrib html LICENSE Makefile man objs README src
[root192 nginx-1.16.1]# ./configure --help② 复杂安装方式和简单的安装配置不同的地方在第一步通过./configure来对编译参数进行设置需要我们手动来指定认识一些简单的PATH路径配置 –prefixPATH指向Nginx的安装目录默认值为 /usr/local/nginx –sbin-pathPATH指向(执行)程序文件(nginx)的路径,默认值为 /sbin/nginx –modules-pathPATH指向Nginx动态模块安装目录默认值为 /modules –conf-pathPATH指向配置文件(nginx.conf)的路径,默认值为 /conf/nginx.conf –error-log-pathPATH指向错误日志文件的路径,默认值为 /logs/error.log –http-log-pathPATH指向访问日志文件的路径,默认值为 /logs/access.log –pid-pathPATH指向Nginx启动后进行ID的文件路径默认值为 /logs/nginx.pid –lock-pathPATH指向Nginx锁文件的存放路径,默认值为 /logs/nginx.lock
③ 将之前服务器已经安装的nginx进行卸载卸载的步骤分为三步骤
# 需要将nginx的进程关闭
[root192 nginx-1.16.1]# cd /usr/local/nginx/sbin
[root192 sbin]# ./nginx -s stop
# 将安装的nginx进行删除
[root192 sbin]# rm -rf /usr/local/nginx
# 将安装包之前编译的环境清除掉
[root192 usr]# cd ~/nginx/core/nginx-1.16.1
[root192 nginx-1.16.1]# make clean
rm -rf Makefile objs④ 通过./configure来对编译参数进行设置
[root192 nginx-1.16.1]# ./configure --prefix/usr/local/nginx \--sbin-path/usr/local/nginx/sbin/nginx \--modules-path/usr/local/nginx/modules \--conf-path/usr/local/nginx/conf/nginx.conf \--error-log-path/usr/local/nginx/logs/error.log \--http-log-path/usr/local/nginx/logs/access.log \--pid-path/usr/local/nginx/logs/nginx.pid \--lock-path/usr/local/nginx/logs/nginx.lock[root192 nginx-1.16.1]# make make install⑤ 启动测试
[root192 nginx]# cd /usr/local/nginx/sbin
[root192 sbin]# ./nginx
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
[root192 sbin]# lsof -i :80
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
nginx 7638 root 6u IPv4 75732 0t0 TCP *:http (LISTEN)
nginx 7639 nginx 6u IPv4 75732 0t0 TCP *:http (LISTEN)
[root192 sbin]# kill -9 7638
[root192 sbin]# kill -9 7639
[root192 sbin]# ./nginx
[root192 sbin]# ./nginx -V
nginx version: nginx/1.16.1
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC)
configure arguments: --prefix/usr/local/nginx --sbin-path/usr/local/nginx/sbin/nginx --modules-path/usr/local/nginx/modules --conf-path/usr/local/nginx/conf/nginx.conf --error-log-path/usr/local/nginx/logs/error.log --http-log-path/usr/local/nginx/logs/access.log --pid-path/usr/local/nginx/logs/nginx.pid --lock-path/usr/local/nginx/logs/nginx.lock08. Nginx 目录结构分析
通过yum install -y tree来进行安装tree工具通过tree我们可以很方面的去查看centos系统上的文件目录结构
[root192 sbin]# tree /usr/local/nginx/
/usr/local/nginx/
├── client_body_temp
├── conf
│ ├── fastcgi.conf
│ ├── fastcgi.conf.default
│ ├── fastcgi_params
│ ├── fastcgi_params.default
│ ├── koi-utf
│ ├── koi-win
│ ├── mime.types
│ ├── mime.types.default
│ ├── nginx.conf
│ ├── nginx.conf.default
│ ├── scgi_params
│ ├── scgi_params.default
│ ├── uwsgi_params
│ ├── uwsgi_params.default
│ └── win-utf
├── fastcgi_temp
├── html
│ ├── 50x.html
│ └── index.html
├── logs
│ ├── access.log
│ ├── error.log
│ └── nginx.pid
├── proxy_temp
├── sbin
│ └── nginx
├── scgi_temp
└── uwsgi_temp① confnginx所有配置文件目录
cgi (Common Gateway Interface)通用网关【接口】主要解决的问题是从客户端发送一个请求和数据服务端获取到请求和数据后可以调用调用CGI【程序】处理及相应结果给客户端的一种标准规范。
fastcgi.conffastcgi相关配置文件fastcgi.conf.defaultfastcgi.conf的备份文件fastcgi_paramsfastcgi的参数文件fastcgi_params.defaultfastcgi的参数备份文件scgi_paramsscgi的参数文件scgi_params.defaultscgi的参数备份文件uwsgi_paramsuwsgi的参数文件uwsgi_params.defaultuwsgi的参数备份文件mime.types记录的是HTTP协议中的Content-Type的值和文件后缀名的对应关mime.types.defaultmime.types的备份文件nginx.conf这个是Nginx的核心配置文件nginx.conf.defaultnginx.conf的备份文件
② html存放nginx自带的两个静态的html页面
50x.html访问失败后的失败页面index.html成功访问的默认首页
③ logs记录入门的文件当nginx服务器启动后这里面会有 access.log error.log 和nginx.pid三个文件出现。
# 查看nginx的错误日志
[root192 sbin]# tail -f /usr/local/nginx/logs/error.log
2023/08/29 21:21:37 [error] 11898#0: *1 open() /usr/local/nginx/html/acv failed (2: No such file or directory), client: 192.168.38.1, server: localhost, request: GET /acv HTTP/1.1, host: 192.168.38.33④ sbinnginx 的可执行文件所在的目录可以通过该文件启动、停止和重启 Nginx 服务器。
09. Nginx 服务器启动和停止命令
1. 信号控制 Nginx 服务器的启动和停止
Nginx安装完成后接下来我们要看下如何启动、重启和停止Nginx的服务。对于Nginx的启停在linux系统中也有很多种方式主要有两种Nginx服务的信号控制、Nginx的命令行控制。
① Nginx中的master和worker进程
Nginx默认采用的是多进程的方式来工作的Nginx后台进程中包含一个master进程和多个worker进程master进程主要用来管理worker进程包含接收外界的信息并将接收到的信号发送给各个worker进程监控worker进程的状态当worker进程出现异常退出后会自动重新启动新的worker进程。而worker进程则是专门用来处理用户请求的每个worker进程都是独立的它们之间没有共享内存也不会相互干扰。每个worker进程都会处理一部分客户端请求然后将处理结果返回给客户端。
当将Nginx启动后我们通过ps -ef | grep nginx命令可以查看到如下内容
[root192 sbin]# ./nginx
[root192 sbin]# ps -ef | grep nginx
root 67744 1 0 21:27 ? 00:00:00 nginx: master process ./nginx
nobody 67745 67744 0 21:27 ? 00:00:00 nginx: worker process
root 67777 2727 0 21:27 pts/0 00:00:00 grep --colorauto nginxnginx的进程模型可以通过下图来说明 作为管理员只需要通过给master进程发送信号就可以来控制Nginx,这个时候我们需要有两个前提条件一个是要操作的master进程一个是信号。
② 如何获取nginx master进程的PID?
要想操作Nginx的master进程就需要获取到master进程的进程号ID可以通过下面两种方式获取
(1) 通过ps -ef | grep nginx 命令获取
[root192 sbin]# ps -ef | grep nginx
root 67744 1 0 21:27 ? 00:00:00 nginx: master process ./nginx
nobody 67745 67744 0 21:27 ? 00:00:00 nginx: worker process
root 67777 2727 0 21:27 pts/0 00:00:00 grep --colorauto nginx(2) 通过查看 /usr/local/nginx/logs/nginx.pid 文件来获取 nginx 的 master 进程ID
[root192 sbin]# cat /usr/local/nginx/logs/nginx.pid
67744③ 信号有哪些?
Nginx 是一款常用的 Web 服务器和反向代理服务器它支持多种信号可以通过发送不同的信号来控制 Nginx 的运行状态。以下是常用的信号 singal
TERMINT优雅地关闭 Nginx等待当前请求处理完成后再关闭。QUIT立即关闭 Nginx不等待当前请求处理完成。HUP重新加载配置文件会先关闭旧的工作进程再启动新的工作进程。USR1重新打开日志文件可以用于日志切割。USR2平滑升级 Nginx 可执行文件可以用于不停机更新 Nginx。WINCH从容关闭旧的工作进程用于平滑升级 Nginx。
可以使用 kill 命令向 Nginx 进程发送信号其中nginx_pid 是 Nginx master进程的 PIDsingal为信号
kill singal nginx_pid(1) 发送TERM信号给master进程会将Nginx服务优雅关闭
[root192 sbin]# ps -ef | grep nginx
root 67744 1 0 21:27 ? 00:00:00 nginx: master process ./nginx
nobody 67745 67744 0 21:27 ? 00:00:00 nginx: worker process
root 68955 2727 0 21:57 pts/0 00:00:00 grep --colorauto nginx
[root192 sbin]# kill -TERM 67744[root192 sbin]# ./nginx
[root192 sbin]# kill -TERM cat /usr/local/nginx/logs/nginx.pid(2) 发送QUIT信号给master进程master进程会控制所有的work进程不再接收新的请求等所有请求处理完后在把进程都关闭掉。
[root192 sbin]# ./nginx
[root192 sbin]# ps -ef | grep nginx
root 69172 1 0 22:01 ? 00:00:00 nginx: master process ./nginx
nobody 69173 69172 0 22:01 ? 00:00:00 nginx: worker process
root 69175 2727 0 22:01 pts/0 00:00:00 grep --colorauto nginx
[root192 sbin]# kill -QUIT 69172[root192 sbin]# ./nginx
[root192 sbin]# kill -QUIT cat /usr/local/nginx/logs/nginx.pid(3) 发送HUP信号给master进程master进程会把控制旧的work进程不再接收新的请求等处理完请求后将旧的work进程关闭掉然后根据nginx的配置文件重新启动新的work进程
[root192 sbin]# ps -ef | grep nginx
root 69262 1 0 22:03 ? 00:00:00 nginx: master process ./nginx
nobody 69263 69262 0 22:03 ? 00:00:00 nginx: worker process
root 69311 2727 0 22:05 pts/0 00:00:00 grep --colorauto nginx
[root192 sbin]# kill -HUP 69262
[root192 sbin]# ps -ef | grep nginx
root 69262 1 0 22:03 ? 00:00:00 nginx: master process ./nginx
nobody 69318 69262 0 22:05 ? 00:00:00 nginx: worker process
root 69320 2727 0 22:05 pts/0 00:00:00 grep --colorauto nginx可以看到 worker 进程的进程号变了。
(4) 发送USR1信号给master进程告诉Nginx重新开启日志文件
[root192 logs]# ls
access.log error.log nginx.pid
[root192 logs]# rm -rf error.log
[root192 logs]# rm -rf access.log
[root192 logs]# ls
nginx.pid
[root192 logs]# kill -USR1 cat /usr/local/nginx/logs/nginx.pid
[root192 logs]# ls
access.log error.log nginx.pid(5) 发送WINCH信号给master进程,让master进程控制不让所有的work进程在接收新的请求了请求处理完后关闭work进程。注意master进程不会被关闭掉
[root192 sbin]# ./nginx
[root192 sbin]# ps -ef | grep nginx
root 69699 1 0 22:13 ? 00:00:00 nginx: master process ./nginx
nobody 69700 69699 0 22:13 ? 00:00:00 nginx: worker process
root 69704 2727 0 22:13 pts/0 00:00:00 grep --colorauto nginx
[root192 sbin]# kill -WINCH cat /usr/local/nginx/logs/nginx.pid
[root192 sbin]# ps -ef | grep nginx
root 69699 1 0 22:13 ? 00:00:00 nginx: master process ./nginx
root 69709 2727 0 22:14 pts/0 00:00:00 grep --colorauto nginx(6) 发送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进程让其处理完请求后再进行关闭 [root192 sbin]# ./nginx
[root192 sbin]# ps -ef | grep nginx
root 69968 1 0 22:20 ? 00:00:00 nginx: master process ./nginx
nobody 69969 69968 0 22:20 ? 00:00:00 nginx: worker process
root 69971 2727 0 22:20 pts/0 00:00:00 grep --colorauto nginx
[root192 sbin]# kill -USR2 cat /usr/local/nginx/logs/nginx.pid
[root192 sbin]# ps -ef | grep nginx
root 69968 1 0 22:20 ? 00:00:00 nginx: master process ./nginx
nobody 69969 69968 0 22:20 ? 00:00:00 nginx: worker process
root 70009 69968 0 22:20 ? 00:00:00 nginx: master process ./nginx
nobody 70010 70009 0 22:20 ? 00:00:00 nginx: worker process
root 70014 2727 0 22:20 pts/0 00:00:00 grep --colorauto nginx
[root192 sbin]# kill -QUIT 69968
[root192 sbin]# ps -ef | grep nginx
root 70009 1 0 22:20 ? 00:00:00 nginx: master process ./nginx
nobody 70010 70009 0 22:20 ? 00:00:00 nginx: worker process
root 70056 2727 0 22:21 pts/0 00:00:00 grep --colorauto nginx2. 命令行控制 Nginx 服务器的启动和停止
此方式是通过Nginx安装目录下的sbin下的可执行文件nginx来进行Nginx状态的控制我们可以通过nginx -h来查看都有哪些参数可以用
[root192 sbin]# nginx -h
nginx version: nginx/1.24.0
Usage: nginx [-?hvVtTq] [-s signal] [-p prefix][-e filename] [-c filename] [-g directives]Options:-?,-h : this help-v : show version and exit-V : show version and configure options then exit-t : test configuration and exit-T : test configuration, dump it and exit-q : suppress non-error messages during configuration testing-s signal : send signal to a master process: stop, quit, reopen, reload-p prefix : set prefix path (default: /etc/nginx/)-e filename : set error log file (default: /var/log/nginx/error.log)-c filename : set configuration file (default: /etc/nginx/nginx.conf)-g directives : set global directives out of configuration file
① 参数说明 -?和-h显示帮助信息 -v打印版本号信息并退出 -V打印版本号信息和配置信息并退出 -t测试nginx的配置文件语法是否正确并退出 -T测试nginx的配置文件语法是否正确并列出用到的配置文件信息然后退出 -q在配置测试期间禁止显示非错误消息 -ssignal信号后面可以跟 stop 快速关闭类似于TERM/INT信号的作用quit 优雅的关闭类似于QUIT信号的作用reopen类似于USR1信号的作用重新打开日志文件reload类似于HUP信号的作用重新加载配置文件 -pprefix指定Nginx的prefix路径(默认为: /usr/local/nginx/) -cfilename指定Nginx的配置文件路径(默认为: conf/nginx.conf) -g用来补充Nginx配置文件向Nginx服务指定启动时应用全局的配置。
② 快速关闭和启动 Nginx 服务器
[root192 sbin]# ./nginx -s stop
[root192 sbin]# ps -ef | grep nginx
root 70300 2727 0 22:27 pts/0 00:00:00 grep --colorauto nginx
[root192 sbin]# ./nginx
[root192 sbin]# ./nginx -s reload③ 指定Nginx的配置文件路径
[root192 conf]# cp nginx.conf abc.conf# 在abc.conf中添加一行aaa代表这个配置文件有语法错误
[root192 conf]# vi abc.conf# 测试指定nginx配置文件是否有语法错误,使用参数-t和-c
[root192 sbin]# ./nginx -tc /usr/local/nginx/conf/abc.conf
nginx: [emerg] unknown directive aaa in /usr/local/nginx/conf/abc.conf:3
nginx: configuration file /usr/local/nginx/conf/abc.conf test failed10. Nginx 服务器版本的升级和新增模块
如果想对Nginx的版本进行更新或者要应用一些新的模块最简单的做法就是停止当前的Nginx服务然后开启新的Nginx服务。但是这样会导致在一段时间内用户是无法访问服务器。为了解决这个问题我们就需要用到Nginx服务器提供的平滑升级功能。这个也是Nginx的一大特点使用这种方式就可以使Nginx在7*24小时不间断的提供服务了。接下来我们分析下需求
Nginx的版本最开始使用的是Nginx-1.14.2由于服务升级需要将Nginx的版本升级到Nginx-1.16.1要求Nginx不能中断提供服务。
为了应对上述的需求这里有两种解决方案: zz使用Nginx服务信号完成Nginx的升级
② 用Nginx安装目录的make命令完成升级
1. 环境准备
① 先准备两个版本的Nginx分别是 1.14.2和1.16.1
② 使用Nginx源码安装的方式将1.14.2版本安装成功并正确访问。
# 进入安装目录
./configure
make make install③ 将Nginx1.16.1进行参数配置和编译不需要进行安装。
# 进入安装目录
./configure
make 2. 使用 Nginx 服务信号进行升级
① 将1.14.2版本的sbin目录下的nginx进行备份
cd /usr/local/nginx/sbin
mv nginx nginxold② 将Nginx1.16.1安装目录编译后的objs目录下的nginx文件拷贝到原来/usr/local/nginx/sbin目录下
cd ~/nginx/core/nginx-1.16.1/objs
cp nginx /usr/local/nginx/sbin③ 发送信号USR2给Nginx的1.14.2版本对应的master进程
④ 发送信号QUIT给Nginx的1.14.2版本对应的master进程
kill -QUIT more /usr/local/logs/nginx.pid.oldbin3. 使用 Nginx 安装目录的make命令完成升级
① 将1.14.2版本的sbin目录下的nginx进行备份
cd /usr/local/nginx/sbin
mv nginx nginxold② 将Nginx1.16.1安装目录编译后的objs目录下的nginx文件拷贝到原来/usr/local/nginx/sbin目录下
cd ~/nginx/core/nginx-1.16.1/objs
cp nginx /usr/local/nginx/sbin③ 进入到安装目录执行make upgrade ④ 看是否更新成功
./nginx -v在整个过程中其实Nginx是一直对外提供服务的。并且当Nginx的服务器启动成功后我们是可以通过浏览器进行直接访问的同时我们可以通过更改html目录下的页面来修改我们在页面上所看到的内容。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/914745.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!