做企业网站不好混潜江资讯网

张小明 2026/1/9 2:19:36
做企业网站不好混,潜江资讯网,如何用cms做网站,全国企业信息公开系统Nginx 平滑升级#xff08;Ubuntu 24.04 环境#xff09; 一、平滑升级核心原理 Nginx 平滑升级通过向主进程发送特定信号实现#xff0c;核心优势是不中断现有请求处理#xff1a; 新请求逐步由新版本 Worker 进程接管#xff1b;旧 Worker 进程处理完现有连接后优雅退出…Nginx 平滑升级Ubuntu 24.04 环境一、平滑升级核心原理Nginx 平滑升级通过向主进程发送特定信号实现核心优势是不中断现有请求处理新请求逐步由新版本 Worker 进程接管旧 Worker 进程处理完现有连接后优雅退出全程保持服务可用无连接拒绝或请求中断核心信号机制通过USR2/WINCH/QUIT等信号实现新旧进程的无缝切换而非直接重启服务。二、前置准备2.1 环境检查核心基础查看当前 Nginx 版本和编译参数新版本必须复用完全一致的编译参数仅修复语法错误nginx -v# 查看版本示例1.24.0nginx -V# 查看编译参数完整复制后续编译新版本用关键实操示例输出rootUbuntu24-13:~# nginx -vnginx version: nginx/1.24.0(Ubuntu)rootUbuntu24-13:~# nginx -Vnginx version: nginx/1.24.0(Ubuntu)built with OpenSSL3.0.1330Jan2024TLS SNI support enabled configure arguments: --with-cc-opt-g -O2 -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -ffile-prefix-map/build/nginx-WLuzPu/nginx-1.24.0. -fltoauto -ffat-lto-objects -fstack-protector-strong -fstack-clash-protection -Wformat -Werrorformat-security -fcf-protection -fdebug-prefix-map/build/nginx-WLuzPu/nginx-1.24.0/usr/src/nginx-1.24.0-2ubuntu7.5 -fPIC -Wdate-time -D_FORTIFY_SOURCE3--with-ld-opt-Wl,-Bsymbolic-functions -fltoauto -ffat-lto-objects -Wl,-z,relro -Wl,-z,now -fPIC--prefix/usr/share/nginx --conf-path/etc/nginx/nginx.conf --http-log-path/var/log/nginx/access.log --error-log-pathstderr --lock-path/var/lock/nginx.lock --pid-path/run/nginx.pid --modules-path/usr/lib/nginx/modules --http-client-body-temp-path/var/lib/nginx/body --http-fastcgi-temp-path/var/lib/nginx/fastcgi --http-proxy-temp-path/var/lib/nginx/proxy --http-scgi-temp-path/var/lib/nginx/scgi --http-uwsgi-temp-path/var/lib/nginx/uwsgi --with-compat --with-debug --with-pcre-jit --with-http_ssl_module --with-http_stub_status_module --with-http_realip_module --with-http_auth_request_module --with-http_v2_module --with-http_dav_module --with-http_slice_module --with-threads --with-http_addition_module --with-http_flv_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_mp4_module --with-http_random_index_module --with-http_secure_link_module --with-http_sub_module --with-mail_ssl_module --with-stream_ssl_module --with-stream_ssl_preread_module --with-stream_realip_module --with-http_geoip_moduledynamic --with-http_image_filter_moduledynamic --with-http_perl_moduledynamic --with-http_xslt_moduledynamic --with-maildynamic --with-streamdynamic --with-stream_geoip_moduledynamic确保 Nginx 进程数充足便于测试升级效果# 安装编辑器若未安装aptinstallvim-y# 编辑配置文件vim/etc/nginx/nginx.conf# 修改 worker_processes 为 2原若为 auto 则改为固定值便于观察进程切换worker_processes2;# 重载配置不中断服务nginx -s reload# 验证进程数psaux|grepnginx实操示例输出需看到 1 个 Master 2 个 Worker 进程rootUbuntu24-13:~# nginx -s reload2025/12/1621:32:12[notice]3100#3100: signal process startedrootUbuntu24-13:~# ps aux | grep nginxroot25800.00.35944013676? S21:130:00 nginx: master process /usr/sbin/nginx -g daemon on;master_process on;www-data31010.00.1602646284? S21:320:00 nginx: worker process www-data31020.00.1602646176? S21:320:00 nginx: worker process root31040.00.0178322340pts/0 S21:320:00grep--colorauto nginx2.2 全量依赖环境准备解决所有编译报错编译新版本需安装全量依赖覆盖所有模块避免 xslt、image_filter、geoip、perl 等模块编译报错aptupdateaptinstall-y build-essential libpcre3 libpcre3-dev zlib1g zlib1g-dev libssl-dev perl libperl-dev libxml2 libxml2-dev libxslt1-dev libgd-dev libpng-dev libjpeg-dev libfreetype6-dev libgeoip-devcurl针对性解决依赖兼容问题报错场景解决命令Perl 库报错libperl.so找不到find / -name libperl.so* ln -s /usr/lib/x86_64-linux-gnu/libperl.so.5.38 /usr/lib/x86_64-linux-gnu/libperl.so版本按实际修改GeoIP 模块报错GeoIP library not foundapt install -y libgeoip-devimage_filter 模块报错GD library not foundapt install -y libgd-dev libpng-dev libjpeg-devxslt 模块报错libxml2/libxslt libraries not foundapt install -y libxml2-dev libxslt1-dev2.3 下载新版本源码版本选择原则优先小版本升级如 1.24.0 → 1.25.0避免跨大版本如 1.18 → 1.25的兼容性问题仅下载官方源码包拒绝第三方修改包保证安全性。# 创建统一目录结构便于管理mkdir-p /data/softs /data/server/nginx/backupcd/data/softs# 下载新版本以 1.25.0 为例可替换为目标版本wgethttp://nginx.org/download/nginx-1.25.0.tar.gz# 校验包完整性可选推荐生产环境执行md5sum nginx-1.25.0.tar.gz# 对比官网公布的 MD5 值# 解压tarxf nginx-1.25.0.tar.gzcdnginx-1.25.0三、编译新版本 Nginx核心避坑3.1 复用旧版本编译参数仅修复1处关键错误将nginx -V输出的configure arguments:后的参数完整复制仅移除 --with-ld-opt 末尾的 -fPIC这是 Ubuntu 系统编译的核心语法错误其余参数完全保留执行以下命令./configure --with-cc-opt-g -O2 -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -ffile-prefix-map/build/nginx-WLuzPu/nginx-1.24.0. -fltoauto -ffat-lto-objects -fstack-protector-strong -fstack-clash-protection -Wformat -Werrorformat-security -fcf-protection -fdebug-prefix-map/build/nginx-WLuzPu/nginx-1.24.0/usr/src/nginx-1.24.0-2ubuntu7.5 -fPIC -Wdate-time -D_FORTIFY_SOURCE3--with-ld-opt-Wl,-Bsymbolic-functions -fltoauto -ffat-lto-objects -Wl,-z,relro -Wl,-z,now--prefix/usr/share/nginx --conf-path/etc/nginx/nginx.conf --http-log-path/var/log/nginx/access.log --error-log-pathstderr --lock-path/var/lock/nginx.lock --pid-path/run/nginx.pid --modules-path/usr/lib/nginx/modules --http-client-body-temp-path/var/lib/nginx/body --http-fastcgi-temp-path/var/lib/nginx/fastcgi --http-proxy-temp-path/var/lib/nginx/proxy --http-scgi-temp-path/var/lib/nginx/scgi --http-uwsgi-temp-path/var/lib/nginx/uwsgi --with-compat --with-debug --with-pcre-jit --with-http_ssl_module --with-http_stub_status_module --with-http_realip_module --with-http_auth_request_module --with-http_v2_module --with-http_dav_module --with-http_slice_module --with-threads --with-http_addition_module --with-http_flv_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_mp4_module --with-http_random_index_module --with-http_secure_link_module --with-http_sub_module --with-mail_ssl_module --with-stream_ssl_module --with-stream_ssl_preread_module --with-stream_realip_module --with-http_geoip_moduledynamic --with-http_image_filter_moduledynamic --with-http_perl_moduledynamic --with-http_xslt_moduledynamic --with-maildynamic --with-streamdynamic --with-stream_geoip_moduledynamic3.2 编译仅编译绝对禁止执行 make installmake# 仅编译二进制文件不覆盖系统现有配置和程序编译耗时约1-2分钟编译完成后新版本二进制文件位于./objs/nginx。3.3 编译后验证必做# 验证版本是否正确./objs/nginx -v# 应输出 nginx/1.25.0# 验证配置加载是否正常./objs/nginx -t -c /etc/nginx/nginx.conf# 用新版本验证现有配置实操示例输出rootUbuntu24-13:/data/softs/nginx-1.25.0# ./objs/nginx -vnginx version: nginx/1.25.0 rootUbuntu24-13:/data/softs/nginx-1.25.0# ./objs/nginx -t -c /etc/nginx/nginx.confnginx: the configurationfile/etc/nginx/nginx.conf syntax is ok nginx: configurationfile/etc/nginx/nginx.conftestis successful四、平滑升级操作分步执行全程可回滚4.1 备份旧版本二进制文件安全第一# 备份旧版本带时间戳便于追溯mv/usr/sbin/nginx /usr/sbin/nginx-$(nginx -v21|awk-F/{print$2})-$(date%Y%m%d)# 替换为新版本二进制文件cp/data/softs/nginx-1.25.0/objs/nginx /usr/sbin/nginx# 赋予执行权限确保 root 可执行chmodx /usr/sbin/nginx# 验证版本此时仅替换文件进程仍为旧版本nginx -v# 输出 nginx/1.25.04.2 启动新版本 Master 进程核心步骤获取旧版本 Master 进程 PIDold_pid$(cat/run/nginx.pid)echo旧 Master PID$old_pid实操示例输出rootUbuntu24-13:/data/softs/nginx-1.25.0# old_pid$(cat /run/nginx.pid)rootUbuntu24-13:/data/softs/nginx-1.25.0# echo 旧 Master PID$old_pid旧 Master PID2580发送USR2信号启动新版本 Master 进程kill-USR2$old_pid验证进程状态此时应存在新旧两个 Master 进程psauxf|grepnginxls/run/nginx.pid*# 旧 PID 文件会被重命名为 nginx.pid.oldbin正常输出特征root25800.00.35944013676? S21:130:00 nginx: master process /usr/sbin/nginx -g daemon on;master_process on;# 旧 Masterwww-data31010.00.1602646284? S21:320:00\_ nginx: worker process www-data31020.00.1602646176? S21:320:00\_ nginx: worker process root227710.00.1110607016? S22:260:00 nginx: master process /usr/sbin/nginx -g daemon on;master_process on;# 新 Masterwww-data227720.00.1128084360? S22:260:00\_ nginx: worker process www-data227730.00.1128084488? S22:260:00\_ nginx: worker process4.3 优雅关闭旧 Worker 进程新请求接管发送WINCH信号让旧 Master 关闭其 Worker 进程新请求全部由新版本 Worker 处理kill-WINCH$old_pid# 验证新版本接管服务核心验证curl-I127.0.0.1|grepServer# 应输出 nginx/1.25.04.4 确认升级完成彻底退出旧 Master建议观察 1-5 分钟生产环境可延长至 10-15 分钟确认业务无异常后再执行若期间出现问题可立即执行回滚操作见第五章。# 优雅退出旧 Master 进程kill-QUIT$old_pid# 最终验证进程仅保留新版本 Master Workerpsauxf|grepnginx正常输出示例root227710.00.1110607016? S22:260:00 nginx: master process /usr/sbin/nginx -g daemon on;master_process on;www-data227720.00.1128084360? S22:260:00\_ nginx: worker process www-data227730.00.1128084488? S22:260:00\_ nginx: worker process五、平滑回滚新版本异常时秒级恢复若新版本出现卡顿、502、配置报错等问题立即执行以下步骤回滚至旧版本5.1 恢复旧版本二进制文件# 替换回旧版本二进制以 1.24.0 为例按实际备份名修改mv/usr/sbin/nginx /usr/sbin/nginx-1.25.0mv/usr/sbin/nginx-1.24.0-20251216 /usr/sbin/nginx5.2 重启旧版本 Worker 进程# 获取旧 Master PID升级时保留的 oldbin 文件old_master_pid$(cat/run/nginx.pid.oldbin)# 拉起旧 Worker 进程kill-HUP$old_master_pid5.3 退出新版本 Master 进程new_master_pid$(cat/run/nginx.pid)kill-QUIT$new_master_pid5.4 验证回滚结果# 进程仅保留旧版本psauxf|grepnginx# 请求返回旧版本标识curl-I127.0.0.1|grepServer# 输出 nginx/1.24.0六、高频问题解决方案问题现象根因解决方案USR2 信号发送后无新 Master 进程启动1. 新版本二进制替换错误2. 配置校验失败3. 动态模块版本不兼容1. 验证nginx -v为新版本2. 执行nginx -t修复配置3. 禁用不兼容模块mkdir -p /etc/nginx/modules-enabled/bak mv /etc/nginx/modules-enabled/*.conf /etc/nginx/modules-enabled/bak/配置校验报错module xxx.so version 1024000 instead of 1025000系统预装的动态模块如 geoip2、image_filter是针对旧版本编译的与新版本主程序不兼容方案1快速禁用不兼容模块如上方案2恢复功能重新编译模块cd /data/softs/nginx-1.25.0 ./configurenginx -V 21configure 报错“xxx library not found”缺少对应模块的依赖库对照 2.2 节安装依赖非关键提示如sys/filio.h not found、/dev/poll not found可忽略新请求被拒绝/端口未监听1. 新版本配置错误2. 端口被占用1.nginx -t修复配置2. netstat -tulpnPerl 模块编译失败缺少 Perl 开发库或软链接错误apt install -y libperl-dev 重新创建libperl.so软链接编译时报fltoauto错误GCC 版本兼容问题将编译参数中的-fltoauto -ffat-lto-objects改为-flto七、关键注意事项7.1 版本与参数规范编译参数仅移除--with-ld-opt末尾的-fPIC其余参数必须与旧版本完全一致否则信号机制会失效版本选择优先小版本迭代跨大版本升级前必须在测试环境验证至少 72 小时模块兼容第三方动态模块如 GeoIP2、Lua必须与 Nginx 主程序版本完全一致1.25.0 主程序需搭配 1.25.0 模块。7.2 信号说明核心操作对照表信号作用适用场景USR2启动新版本 Master 进程升级第一步启动新版本但不影响旧版本WINCH关闭旧 Master 的 Worker 进程升级第二步让新版本接管新请求HUP重启 Worker 进程重载配置回滚时拉起旧 Worker 进程或重载配置QUIT优雅退出 Master 进程升级完成后退出旧 Master或回滚时退出新版本 MasterTERM/KILL强制终止进程仅紧急故障时使用会中断请求7.3 生产环境最佳实践升级前备份配置文件cp -r /etc/nginx /data/server/nginx/backup/nginx-conf-$(date %Y%m%d)和二进制文件升级中先在测试环境验证再灰度升级如先升级1台应用服务器最后全量升级升级后观察日志tail -f /var/log/nginx/error.log、进程状态、业务指标QPS、响应时间至少 24 小时清理升级完成后清理编译源码rm -rf /data/softs/nginx-1.25.0仅保留二进制备份。7.4 合规与安全仅使用官方源下载 Nginx避免第三方篡改包编译完成后验证二进制文件的属主和权限必须为 root:root权限 755升级后执行安全扫描如nginx -T检查配置漏洞、端口扫描验证监听状态。八、后续优化8.1 恢复扩展模块功能如需 GeoIP2/image_filter 等# 重新编译适配新版本的模块cd/data/softs/nginx-1.25.0 ./configurenginx -V21|grep-o--with-.*# 复用编译参数makemodules# 仅编译模块不覆盖主程序# 替换旧模块文件cpobjs/*.so /usr/share/nginx/modules/# 恢复模块配置并验证mv/etc/nginx/modules-enabled/bak/*.conf /etc/nginx/modules-enabled/ nginx -tnginx -s reload8.2 清理无用依赖aptautoremove -y# 卸载自动安装的无用依赖aptclean# 清理缓存8.3 长期维护定期备份 Nginx 配置和二进制文件关注官方安全更新及时小版本升级修复漏洞建立升级操作手册标准化流程避免人工失误。
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

上海网站建设 上海网站制作腐女做喜欢的网站

跨平台剪贴板操作终极指南:快速上手Pyperclip 【免费下载链接】pyperclip Python module for cross-platform clipboard functions. 项目地址: https://gitcode.com/gh_mirrors/py/pyperclip Pyperclip是一个专门为Python开发者设计的跨平台剪贴板操作库&…

张小明 2026/1/8 2:58:57 网站建设

wordpress网站配置wordpress文章内容宽度

一、运营核心逻辑:破解 3 大行业痛点的增长框架​盲盒抽赏小程序的运营本质,是通过 “信任构建 - 行为激励 - 生态闭环” 解决行业 “用户信任弱、留存率低、变现单一” 三大核心痛点,头部平台已验证该逻辑可实现 30 日留存率从 9% 提升至 35…

张小明 2026/1/1 23:05:22 网站建设

抖音网络营销案例四川网站seo

这是PyQt6教程。本教程适合初学者和中级程序员。阅读本教程后,您将能够编写非平凡的PyQt6应用程序。 代码示例可在本站下载:教程源代码 目录 引言日期和时间第一个工程菜单与工具栏布局管理事件和信号对话框控件拖放绘画 绘画 lPyQt6绘图系统能够渲…

张小明 2026/1/1 23:04:10 网站建设

免费建站系统哪个好用吗注销网站 取消接入

还在为复杂的Git命令而烦恼吗?还在因为版本控制操作失误而浪费宝贵时间吗?SourceGit作为一款专业的Git图形化客户端,将彻底改变你的开发工作流程。无论你是Git新手还是经验丰富的开发者,这个跨平台的可视化工具都能帮你轻松管理代…

张小明 2026/1/3 5:15:43 网站建设

网站开发 外包空心最大网站建设公司排名

在 Kali Linux 中部署 Cisco Packet Tracer:从零构建攻防一体化实验平台 你有没有遇到过这样的场景?正在准备 CCNA 实验,想用 Packet Tracer 搭建一个 VLAN NAT 的网络拓扑,但手头只有装了 Kali 的笔记本;或者你在…

张小明 2026/1/2 16:20:42 网站建设