centos7 yum 更新 nginx 到最新版本 1.26

centos7 yum 更新 nginx 到最新版本 1.26

参考:
centos7中把nginx更新到1.26 版(centos7默认只能更新到1.20)
https://blog.youkuaiyun.com/weilaozongge/article/details/138862749

nginx报错 Can‘t open PID file /var/run/nginx.pid (yet?) after start: No such file or directory
https://blog.youkuaiyun.com/weixin_71343552/article/details/142100981

Centos7下yum安装nginx本地仓库无nginx源解决方案
https://blog.youkuaiyun.com/weixin_61367575/article/details/137998088
nginx位于第三方的yum源里面,而不在centos官方yum源里面
yum源安装epel
由于Nginx在非官方yum源。提供了两种方法:一是通过下载epel源并配置国内镜像;
二是直接安装epel并更新后安装Nginx。强调了安装后的验证步骤。

sudo yum install epel-release

sudo yum install nginx

sudo systemctl status nginx

sudo systemctl start nginx

sudo systemctl enable nginx

sudo yum install yum-utils

sudo vi /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/$releasever/$basearch/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

sudo yum-config-manager --enable nginx-stable

sudo yum update nginx

Can’t open PID file /var/run/nginx.pid (yet?) after start: No such file or directory

sudo vi /etc/systemd/system/nginx.service.d/override.conf

[Service]
ExecStartPost=/bin/sleep 0.1

sudo systemctl daemon-reload

sudo systemctl status nginx

sudo systemctl restart nginx ---- 重启之前应该问一下,是否能够重启,别影响别人的业务

下面是分析,用上面的就行

在CentOS7.9上 编译安装openssl-3.3.1+编译安装Nginx1.26.2 - Magiclala - 博客园 (cnblogs.com)

Index of /packages/centos/9/x86_64/RPMS/ (nginx.org)

nginx: Linux packages

nginx: download

nginx -V

nginx version: nginx/1.26.1
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC)
built with OpenSSL 1.0.2k-fips 26 Jan 2017
TLS SNI support enabled
configure arguments: --prefix=/etc/nginx
–sbin-path=/usr/sbin/nginx
–modules-path=/usr/lib64/nginx/modules
–conf-path=/etc/nginx/nginx.conf
–error-log-path=/var/log/nginx/error.log
–http-log-path=/var/log/nginx/access.log
–pid-path=/var/run/nginx.pid
–lock-path=/var/run/nginx.lock
–http-client-body-temp-path=/var/cache/nginx/client_temp
–http-proxy-temp-path=/var/cache/nginx/proxy_temp
–http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp
–http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp
–http-scgi-temp-path=/var/cache/nginx/scgi_temp
–user=nginx
–group=nginx
–with-compat
–with-file-aio
–with-threads
–with-http_addition_module
–with-http_auth_request_module
–with-http_dav_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_realip_module
–with-http_secure_link_module
–with-http_slice_module
–with-http_ssl_module
–with-http_stub_status_module
–with-http_sub_module
–with-http_v2_module
–with-mail
–with-mail_ssl_module
–with-stream
–with-stream_realip_module
–with-stream_ssl_module
–with-stream_ssl_preread_module
–with-cc-opt=‘-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -fPIC’
–with-ld-opt=‘-Wl,-z,relro -Wl,-z,now -pie’

grep nginx /etc/passwd

nginx:x:997:995:Nginx web server:/var/lib/nginx:/sbin/nologin

cat /etc/redhat-release
CentOS Linux release 7.9.2009 (Core)

<think>好的,用户现在遇到了问题,执行`ls -l /root/nginx/nginx-1.26.3/sbin/nginx`时提示文件或目录不存在。之前他想要将Nginx的安装路径切换到新位置,但显然新路径下的nginx可执行文件不存在。我需要先确定可能的原因,然后一步步引导用户解决。 首先,用户可能没有正确安装或编译新版本的Nginx到指定目录。可能用户下载了源代码但未编译,或者编译后的安装路径不是预期的`/root/nginx/nginx-1.26.3`。需要确认用户是否执行了正确的安装步骤,比如解压、配置、编译和安装。 接下来,用户可能在之前的步骤中路径输入错误,或者目录结构不同。例如,Nginx默认安装路径可能是在`/usr/local/nginx`,而用户可能没有指定`--prefix`参数,导致安装到其他位置。需要检查用户是否在编译时指定了正确的安装目录。 另外,用户可能没有创建必要的目录结构。比如,`/root/nginx/nginx-1.26.3/sbin`目录可能不存在,导致即使编译成功,二进制文件也没有生成在正确的位置。这时候需要检查目录是否存在,并指导用户创建或调整安装参数。 还应该考虑权限问题,虽然之前的回答提到了权限,但这里的问题更基础,文件不存在,所以权限问题可能不是首要的。但需要确保用户有权限在`/root`下创建目录和文件,可能需要使用sudo或者在root用户下操作。 接下来,用户可能需要重新安装Nginx到正确的路径。应该提供详细的步骤,包括下载源代码、配置、编译和安装,并确保指定`--prefix=/root/nginx/nginx-1.26.3`。同时,提醒用户安装完成后验证sbin目录下是否存在nginx可执行文件。 如果用户已经尝试过安装但依然不存在,可能需要检查编译过程中是否有错误,或者是否安装过程被中断。建议用户查看编译日志,确认安装是否成功完成。 最后,如果用户只是移动了二进制文件而没有重新安装,可能会遇到依赖或库文件缺失的问题,这时候需要重新安装而不是简单移动文件。 总结来说,用户的问题核心在于新路径下的Nginx可执行文件不存在,需要引导用户正确安装或确认安装路径,并解决可能存在的目录创建、编译选项等问题。</think>根据你的错误提示,新Nginx路径下的二进制文件不存在。以下是完整的排查和解决方案: --- ### 一、错误原因分析 ```bash ls: cannot access /root/nginx/nginx-1.26.3/sbin/nginx: No such file or directory ``` 表示以下情况之一: 1. **未正确安装Nginx**到目标路径 2. **目录层级不匹配**(实际安装路径可能与预期不同) 3. **源码未编译**(仅有源码但未生成可执行文件) --- ### 二、完整解决流程 #### 步骤1:确认Nginx安装状态 ```bash # 检查目标路径是否存在 ls -l /root/nginx/nginx-1.26.3 # 检查编译痕迹 ls -l /root/nginx/nginx-1.26.3/objs/nginx ``` - 如果看到 `objs/nginx` 但无 `sbin/nginx`,说明编译成功但未执行 `make install` #### 步骤2:从源码重新安装(推荐方案) ```bash # 进入源码目录(假设源码在 /root/nginx/nginx-1.26.3) cd /root/nginx/nginx-1.26.3 # 清理旧编译痕迹(重要!) make clean # 配置安装路径(关键参数) ./configure --prefix=/root/nginx/nginx-1.26.3 \ --with-http_ssl_module \ --with-http_v2_module # 编译并安装 make && make install # 验证安装结果 ls -l /root/nginx/nginx-1.26.3/sbin/nginx ``` *注意:若需其他模块,可通过 `nginx -V` 查看旧版本编译参数* #### 步骤3:检查目录权限 ```bash # 确保目录树存在 mkdir -p /root/nginx/nginx-1.26.3/sbin # 修正所有权(根据实际运行用户) chown -R root:root /root/nginx ``` --- ### 三、常见问题处理 #### 问题1:`make install` 后仍无sbin/nginx **解决方案**: 1. 检查configure输出是否包含 `--prefix=/root/nginx/nginx-1.26.3` 2. 确认磁盘空间充足 `df -h /root` 3. 查看编译错误日志 `cat objs/autoconf.err` #### 问题2:缺少依赖库 ```bash # 安装基础编译依赖(CentOS示例) yum install -y gcc make openssl-devel pcre-devel zlib-devel ``` --- ### 四、安装验证 ```bash # 测试新nginx能否加载旧配置 /root/nginx/nginx-1.26.3/sbin/nginx -t -c /www/server/nginx/conf/nginx.conf # 预期输出 nginx: configuration file /www/server/nginx/conf/nginx.conf test is successful ``` --- ### 五、补充说明表 | 现象 | 解决方案 | |------------------------------|----------------------------| | `make: command not found` | 安装开发工具包 `yum groupinstall "Development Tools"` | | `objs/nginx` 存在但未安装 | 执行 `make install` | | 自定义模块缺失 | 在configure时添加 `--add-module=/path/to/module` | 完成上述步骤后,可继续按原切换方案修改systemd服务配置。建议通过编译安装确保路径可控性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值