当前位置: 首页 > news >正文

nginx编译安装+平滑升级实战

目录

安装篇

1.拉取包

2.解压

3.配置

4.编译和编译安装

5.准备启动

6.通过systemd管理服务

systemd服务来启动

平滑升级实战


安装篇

前提:关闭防火墙

[root@nginx ~]# systemctl stop firewalld
[root@nginx ~]# systemctl disabled firewalld
[root@nginx ~]# setenforce 0

[root@nginx ~]# sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
[root@nginx ~]#wget https://nginx.org/download/nginx-1.28.3.tar.gz

可以去官网下载自己所需要的版本在上传至系统

1.拉取包

下载工具包

[root@nginx ~]# yum install -y vim bash-completion yum-utils wget tar bzip2 net-tools gcc zlib-devel pcre-devel openssl openssl-devel(建议一个一个下,会有纰漏)

[root@nginx ~]# useradd -s /sbin/nologin nginx

[root@nginx ~]# mkdir -p /apps/nginx

[root@nginx ~]# ls
anaconda-ks.cfg nginx-1.28.3.tar.gz

2.解压

tar -zxvf nginx-1.28.3.tar.gz
cd nginx-1.28.3

3.配置


./configure --prefix=/apps/nginx \
--user=nginx \
--group=nginx \
--with-http_ssl_module \
--with-http_v2_module \
--with-http_realip_module \
--with-http_stub_status_module \
--with-http_gzip_static_module \
--with-pcre \
--with-stream \
--with-stream_ssl_module \

--with-stream_realip_module

4.编译和编译安装


[root@nginx nginx-1.28.3]# make && make install

5.准备启动

[root@nginx nginx-1.28.3]# chown -R nginx:nginx /apps/nginx/
[root@nginx nginx-1.28.3]#ll

total 4
drwxr-xr-x 2 nginx nginx 4096 Jun 21 21:02 conf
drwxr-xr-x 2 nginx nginx 40 Jun 21 21:02 html
drwxr-xr-x 2 nginx nginx 6 Jun 21 21:02 logs
drwxr-xr-x 2 nginx nginx 19 Jun 21 21:02 sbin

[root@nginx nginx-1.28.3]# ln -s /apps/nginx/sbin/nginx /usr/sbin/

[root@nginx nginx-1.28.3]# nginx -v ##查看版本

[root@nginx nginx-1.28.3]# nginx ##启动nginx服务

[root@nginx nginx-1.28.3]# ss -tulp |grep nginx

tcp LISTEN 0 511 0.0.0.0:http 0.0.0.0:* users:(("nginx",pid=22387,fd=6),("nginx",pid=22386,fd=6))

6.通过systemd管理服务

[root@nginx nginx-1.28.3]# cat << EOF > /usr/lib/systemd/system/nginx.service

[Unit]

Description=nginx - high performance web server

Documentation=http://nginx.org/en/docs

After=network-online.target remote-fs.target nss-lookup.target

Wants=network-online.target

[Service]

Type=forking

PIDFile=/apps/nginx/run/nginx.pid

ExecStart=/apps/nginx/sbin/nginx -c /apps/nginx/conf/nginx.conf

ExecReload=/bin/kill -s HUP $MAINPID

ExecStop=/bin/kill -s TERM $MAINPID

LimitNOFILE=100000

[Install]

WantedBy=multi-user.target

EOF

[root@nginx nginx-1.28.3]# mkdir /apps/nginx/run

[root@nginx nginx-1.28.3]# vim /apps/nginx/conf/nginx.conf

# 取消注释,修改配置文件

pid /apps/nginx/run/nginx.pid;

systemd服务来启动

[root@nginx nginx-1.28.3]# systemctl daemon-reload

[root@nginx nginx-1.28.3]# systemctl enable nginx

Created symlink /etc/systemd/system/multi-user.target.wants/nginx.service → /usr/lib/systemd/system/nginx.service.

[root@nginx nginx-1.28.3]# systemctl status nginx

平滑升级实战

平滑升级的实用和优势:能在不中断服务、业务、不影响客户端连接的情况下,将nginx主程序升级到新版本。这是nginx在生产环境的一个重要特性。特点:新连接交给新版本,就连接交给旧版本,不会抢占请求。

升级过程中:

1.网站继续访问

2.API继续相应

3.TCP连接不断开

4.用户几乎感觉不到升级

前提:需要编译安装好了的新旧版本的nginx,作者所使用的旧版本是1.26.3,替换的新版本是1.30.3。资源包可以去官网下载nginx: download

1.30.3nginx版本节点(编译安装)

[root@localhost ~]# cd /apps/nginx/

[root@localhost nginx]# ls

client_body_tempfastcgi_templogsrunscgi_temp

confhtmlproxy_tempsbinuwsgi_temp

[root@localhost nginx]# cd sbin/

[root@localhost sbin]# ls

nginx

[root@localhost sbin]# cp nginx nginx.bak

将编译好的新版本的nginx拷贝到旧节点(1.26.3nginx编译安装)上

scp nginx.bak 192.168.57.105:/apps/nginx/sbin/

在旧版本的节点上,将刚刚传送过来的文件替换

mv nginx.bak nginx

mv: overwrite 'nginx'? y

[root@localhost sbin]# ls

nginx

[root@localhost sbin]# chown nginx.nginx nginx

[root@localhost sbin]# ll

total 5812

-rwxr-xr-x 1 nginx nginx 5948936 Jul 16 23:01 nginx

此时查看版本,发现版本从1.26.3从1.30.3

[root@localhost sbin]# nginx -V

nginx version: nginx/1.30.3

built by gcc 11.5.0 20240719 (Red Hat 11.5.0-14) (GCC)

built with OpenSSL 3.5.5 27 Jan 2026

TLS SNI support enabled

configure arguments: --prefix=/apps/nginx --user=nginx --group=nginx --with-http_ssl_module --with-http_v2_module --with-http_realip_module --with-http_stub_status_module --with-http_gzip_static_module --with-pcre --with-stream --with-stream_ssl_module --with-stream_realip_module

至此已完成升级

http://www.jsqmd.com/news/1220715/

相关文章:

  • TMS320F28003x DAC与CMPSS模块实战:从寄存器配置到电机驱动应用
  • 【通义千问 × 即梦创作实战指南】:20年AI内容架构师亲授3步工作流,97%新手当天产出高质量短视频脚本
  • 技能质量审计_skills-audit
  • YOLOv10热力图终极指南:5分钟构建实时人群密度分析系统
  • AI 打击乐生成的力度建模:从 velocity 到 ghost note 的表达力
  • 2026年7月积家官方售后网点全网公告:中国区60+门店地址优化升级、服务热线同步启用 - 积家中国服务中心
  • Remount核心功能解析:从自定义元素到Shadow DOM的完整实现指南
  • MCP:AI时代的USB-C标准
  • netaddr核心组件详解:IP、IPPrefix、IPPort、IPRange、IPSet
  • CentOS下vsftpd安全配置与性能优化指南
  • 解放双眼,聆听文字:阅读APP听书功能的3种打开方式
  • ECS-Network-Racing-Sample调试技巧:10个常见问题与解决方案
  • 提示词写不对?生成图总偏题?文心一言图片创作避坑清单,92%新手踩过的8个致命错误
  • 通往具身智能之路——TVA协同进化机制(19)
  • 中世纪3D场景_medieval-village
  • 【SqlSugar】
  • Traquer安全最佳实践:保护用户行为数据的完整方案
  • 【2018-10-20】【转】Linux C编程——常用头文件
  • M-EMACS:终极Emacs配置发行版 - 一站式提升开发效率的完整指南
  • Devstral-Small-2-24B-Instruct-2512-5bit实战指南:10个图像理解应用场景案例
  • 阳江人闲置黄金回收变现避坑指南!这6家靠谱门店覆盖全城,拒绝套路! - 新芸鼎珠宝首饰
  • 2026大连中山区二手包包哪里回收最安全?易奢福全程记录完全透明 - 奢侈品回收实体店
  • Codex 使用技巧:如何让 AI 更准确地理解你的代码项目?
  • 从3bit到8bit怎么选?Laguna-XS-2.1全量化版本对比,5bit为何是最佳平衡点
  • 怎样专业部署ESP32摄像头MicroPython驱动:5分钟快速上手指南
  • 如何快速解决Hackintosh配置难题:OpCore-Simplify终极指南
  • 宝玑中国官方售后服务中心|官方地址及售后热线电话权威信息公示(2026年7月更新) - 亨得利钟表维修中心
  • Claude Code架构解析:AI命令行工具的设计与实现
  • MacBook M5 Max运行Agents-A1-3bit实测:133tok/s解码速度与批量处理优化
  • AI Agent工程实践指南:从零构建你的第一个智能助手