Nginx安装;Nginx服务器启停与版本升级(平滑升级);Nginx自定义安装后配置成系统服务;Nginx命令配置到系统环境

 

复制代码
Nginx提供的基本功能:基本HTTP服务、高级HTTP服务、邮件服务;Nginx常用的功能模块
=====================================================================================
Nginx的功能特性及常用功能
Nginx提供的基本功能服务从大体上归纳为"基本HTTP服务"、“高级HTTP服务”和"邮件服务"等三大类。

基本HTTP服务
Nginx可以提供基本HTTP服务,可以作为HTTP代理服务器和反向代理服务器,支持通过缓存加速访问,可以完成简单的负载均衡和容错,支持包过滤功能,支持SSL等。
    处理静态文件、处理索引文件以及支持自动索引;
    提供反向代理服务器,并可以使用缓存加上反向代理,同时完成负载均衡和容错;
    提供对FastCGI、memcached等服务的缓存机制,,同时完成负载均衡和容错;
    使用Nginx的模块化特性提供过滤器功能。Nginx基本过滤器包括gzip压缩、ranges支持、chunked响应、XSLT、SSI以及图像缩放等。其中针对包含多个SSI的页面,经由FastCGI或反向代理,SSI过滤器可以并行处理。
    支持HTTP下的安全套接层安全协议SSL.
    支持基于加权和依赖的优先权的HTTP/2


高级HTTP服务
    支持基于名字和IP的虚拟主机设置
    支持HTTP/1.0中的KEEP-Alive模式和管线(PipeLined)模型连接
    自定义访问日志格式、带缓存的日志写操作以及快速日志轮转。
    提供3xx~5xx错误代码重定向功能
    支持重写(Rewrite)模块扩展
    支持重新加载配置以及在线升级时无需中断正在处理的请求
    支持网络监控
    支持FLV和MP4流媒体传输

邮件服务
Nginx提供邮件代理服务也是其基本开发需求之一,主要包含以下特性:
    支持IMPA/POP3代理服务功能
    支持内部SMTP代理服务功能

---------------------------------------------------------------------------------------------
Nginx常用的功能模块

    静态资源部署
    Rewrite地址重写
        正则表达式
    反向代理
    负载均衡
        轮询、加权轮询、ip_hash、url_hash、fair
    Web缓存
    环境部署
        高可用的环境
    用户认证模块...



Nginx的核心组成
    nginx二进制可执行文件
    nginx.conf配置文件
    error.log错误的日志记录
    access.log访问日志记录
Nginx提供的基本功能:基本HTTP服务、高级HTTP服务、邮件服务;Nginx常用的功能模块
复制代码

Nginx安装

复制代码
环境准备;Nginx源码简单安装;yum安装;Nginx源码自定义安装;nginx卸载
===================================================================================
环境准备
    yum install -y gcc pcre pcre-devel zlib zlib-devel openssl openssl-devel
--------------------------------------------------------------------    
通过Nginx源码简单安装
    (1)进入官网查找需要下载版本的链接地址,然后使用wget命令进行下载
        wget http://nginx.org/download/nginx-1.16.1.tar.gz
    (2)建议大家将下载的资源进行包管理
        mkdir -p nginx/core
        mv nginx-1.16.1.tar.gz nginx/core
    (3)解压缩
        tar -xzf nginx-1.16.1.tar.gz
    (4)进入资源文件中,发现configure
        ./configure
    (5)编译
        make
    (6)安装
        make install

-------------------------------------------------------------------------------------
通过yum安装
(1)安装yum-utils
    sudo yum install 1 -y yum-utils
(2)添加yum源文件
    vim /etc/yum.repos.d/nginx.repo
    [nginx-stable]
    name=nginx stable repo
    baseurl=http://nginx.org/packages/centos/$releasever/
    $basearch/
    gpgcheck=1
    enabled=1
    gpgkey=https://nginx.org/keys/nginx_signing.key
    module_hotfixes=true
    [nginx-mainline]
    name=nginx mainline repo
    baseurl=http://nginx.org/packages/mainline/centos/$re
    leasever/$basearch/
    gpgcheck=1
    enabled=0
    gpgkey=https://nginx.org/keys/nginx_signing.key
    module_hotfixes=true
(3)查看是否安装成功
    yum 1 list | grep nginx
(4)使用yum进行安装
    yum install -y nginx
(5)查看nginx的安装位置
    whereis nginx


源码简单安装和yum安装的差异:
./nginx -V    #可以看到yum安装相比简单安装增加了很多配置

-------------------------------------------------------------------------------------
通过Nginx源码复杂安装(自定义安装)
其实安装方式和简单安装是一样的,只不过在执行configure脚本时,添加一些参数
    ./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


--prefix=PATH                指向Nginx的安装目录,默认值为/usr/local/nginx
--sbin-path=PATH            指向(执行)程序文件(nginx)的路径,默认值为<prefix>/sbin/nginx
--modules-path=PATH            指向Nginx动态模块安装目录,默认值为<prefix>/modules
--conf-path=PATH            指向配置文件(nginx.conf)的路径,默认值为<prefix>/conf/nginx.conf
--error-log-path=PATH        指向错误日志文件的路径,默认值为<prefix>/logs/error.log
--http-log-path=PATH        指向访问日志文件的路径,默认值为<prefix>/logs/access.log
--pid-path=PATH                指向Nginx启动后进行ID的文件路径,默认值为<prefix>/logs/nginx.pid
--lock-path=PATH            指向Nginx锁文件的存放路径,默认值为<prefix>/logs/nginx.lock

-------------------------------------------------------------------------------------
nginx卸载
步骤一:需要将nginx的进程关闭
./nginx -s stop
步骤二:将安装的nginx进行删除
rm -rf /usr/local/nginx
步骤三:将安装包之前编译的环境清除掉
make clean
环境准备;Nginx源码简单安装;yum安装;Nginx源码自定义安装;nginx卸载
复制代码

 

复制代码
Nginx目录结构

conf:nginx所有配置文件目录
CGI(Common Gateway Interface)通用网关【接口】,主要解决的问题是从客户端发送一个请求和数据,服务端获取到请求和数据后可以调用CGI【程序】处理及相应结果给客户端的一种标准规范。
    fastcgi.conf:fastcgi相关配置文件
    fastcgi.conf.default:fastcgi.conf的备份文件
    fastcgi_params:fastcgi的参数文件
    fastcgi_params.default:fastcgi的参数备份文件
    scgi_params:scgi的参数文件
    scgi_params.default:scgi的参数备份文件
    uwsgi_params:uwsgi的参数文件
    uwsgi_params.default:uwsgi的参数备份文件
    
mime.types:记录的是HTTP协议中的Content-Type的值和文件后缀名的对应关系
mime.types.default:mime.types的备份文件
nginx.conf:这个是Nginx的核心配置文件,这个文件非常重要,也是我们即将要学习的重点
nginx.conf.default:nginx.conf的备份文件
koi-utf、koi-win、win-utf这三个文件都是与编码转换映射相关的配置文件,用来将一种编码转换成另一种编码
html:存放nginx自带的两个静态的html页面
50x.html:访问失败后的失败页面
index.html:成功访问的默认首页
logs:记录入门的文件,当nginx服务器启动后,这里面会有 access.log
error.log 和nginx.pid三个文件出现。
sbin:是存放执行程序文件nginx
nginx是用来控制Nginx的启动和停止等相关的命令。
Nginx目录结构
复制代码

Nginx服务器启停与版本升级(平滑升级)

复制代码
Nginx服务器启停命令(Nginx服务的信号控制、Nginx的命令行控制)
=================================================================================================
方式一:Nginx服务的信号控制
kill -signal PID

    信号            作用
    TERM/INT         立即关闭整个服务
    QUIT             "优雅"地关闭整个服务
    HUP             重读配置文件并使用服务对新配置项生效
    USR1             重新打开日志文件,可以用来进行日志切割
    USR2             平滑升级到最新版的nginx
    WINCH            所有子进程不在接收处理新连接,相当于给work进程发送QUIT指令
示例:
    kill -TERM PID / kill -TERM `cat /usr/local/nginx/logs/nginx.pid`    发送TERM/INT信号给master进程,会将Nginx服务立即关闭。
    kill -INT PID / kill -INT `cat /usr/local/nginx/logs/nginx.pid`        发送TERM/INT信号给master进程,会将Nginx服务立即关闭。
    kill -QUIT PID / kill -TERM `cat /usr/local/nginx/logs/nginx.pid`    发送QUIT信号给master进程,master进程会控制所有的work进程不再接收新的请求,等所有请求处理完后,在把进程都关闭掉。
    kill -HUP PID / kill -TERM `cat /usr/local/nginx/logs/nginx.pid`        发送HUP信号给master进程,master进程会把控制旧的work进程不再接收新的请求,等处理完请求后将旧的work进程关闭掉,然后根据nginx的配置文件重新启动新的work进程
    kill -USR1 PID / kill -TERM `cat /usr/local/nginx/logs/nginx.pid`    发送USR1信号给master进程,告诉Nginx重新开启日志文件
    kill -USR2 PID / kill -USR2 `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 -WINCH PID /kill -WINCH`cat /usr/local/nginx/logs/nginx.pid`发送WINCH信号给master进程,让master进程控制不让所有的work进程在接收新的请求了,请求处理完后关闭work进程。注意master进程不会被关闭掉

---------------------------------------------------------------------------------------------------
方式二:Nginx的命令行控制
通过Nginx安装目录下的sbin下的可执行文件nginx来进行Nginx状态的控制,我们可以通过nginx -h 来查看都有哪些参数
    -?和-h:        显示帮助信息
    -v:            打印版本号信息并退出
    -V:            打印版本号信息和配置信息并退出
    -t:            测试nginx的配置文件语法是否正确并退出
    -T:            测试nginx的配置文件语法是否正确并列出用到的配置文件信息然后退出
    -q:            在配置测试期间禁止显示非错误消息
    -s:            signal信号,后面可以跟 :
                stop[快速关闭,类似于TERM/INT信号的作用]
                quit[优雅的关闭,类似于QUIT信号的作用]
                reopen[重新打开日志文件类似于USR1信号的作用]
                reload[类似于HUP信号的作用]
    -p:prefix,        指定Nginx的prefix路径,(默认为: /usr/local/nginx/)
    -c:filename,    指定Nginx的配置文件路径,(默认为: conf/nginx.conf)
    -g:                用来补充Nginx配置文件,向Nginx服务指定启动时应用全局的配置
Nginx服务器启停命令(Nginx服务的信号控制、Nginx的命令行控制)
复制代码

 

复制代码
Nginx服务器版本升级(平滑升级)
经测试:会同时启用新旧2个版本的nginx进程,在切换前,旧nginx占用监听的端口

需求:Nginx的版本最开始使用的是Nginx-1.14.2,由于服务升级,需要将Nginx的版本升级到Nginx-1.16.1,要求Nginx不能中断提供服务。
环境准备
    (1)先准备两个版本的Nginx分别是 1.14.2和1.16.12)使用Nginx源码安装的方式将1.14.2版本安装成功并正确访问
        ./configure
        make && make install
    (3)将Nginx1.16.1进行参数配置和编译,不需要进行安装。
        ./configure
        make
        
----------------------------------------------------------------------------------
方案一:使用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/1 nginx.pid.oldbin`

----------------------------------------------------------------------------------
方案二:使用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自定义安装后配置成系统服务;Nginx命令配置到系统环境
=================================================================================
Nginx自定义安装后配置成系统服务

(1) 在/usr/lib/systemd/system 目录下添加nginx.service,内容如下:
    vim /usr/lib/systemd/1 system/nginx.service
    [Unit]
    Description=nginx web service
    Documentation=http://nginx.org/en/docs/
    After=network.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
    ExecReload=/usr/local/nginx/sbin/nginx -s reload
    ExecStop=/usr/local/nginx/sbin/nginx -s stop
    PrivateTmp=true
    [Install]
    WantedBy=default.target

(2)添加完成后如果权限有问题需要进行权限设置
    chmod 755 /usr/lib/systemd/system/nginx.service
(3)使用系统命令来操作Nginx服务
    启动: systemctl start nginx
    停止: systemctl stop nginx
    重启: systemctl restart nginx
    重新加载配置文件: systemctl reload nginx
    查看nginx状态: systemctl status nginx
    开机启动: systemctl enable nginx

------------------------------------------------------------------------
Nginx命令配置到系统环境

(1)修改/etc/profile 文件
    vim /etc/profile
    在最后一行添加
    export PATH=$PATH:/usr/local/nginx/sbin
(2)使之立即生效
    source /etc/profile
(3)执行nginx命令
    nginx -V
Nginx自定义安装后配置成系统服务;Nginx命令配置到系统环境
复制代码

 

posted @   雲淡風輕333  阅读(61)  评论(0编辑  收藏  举报
(评论功能已被禁用)
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示