心血来潮想安装一个nginx,结果频频爆错,给我整懵了。但是遇到的问题都解决了,心情还不错。

目录

离线安装nginx


离线安装nginx

系统:CentOS 7

 nginx下载地址:nginx: downloadhttps://nginx.org/en/download.htmlNginx官方提供了三个类型的版本:

        Mainline version:Mainline 是 Nginx 目前主力在做的版本,可以说是开发版

        Stable version:最新稳定版,生产环境上建议使用的版本

        Legacy versions:遗留的老版本的稳定版

1、下载linux稳定版本的nginx

2、解压nginx包:

tar -zvxf nginx-1.24.0.tar.gz

我修改了nginx的名称,移动到了/opt/目录

mv nginx-1.24.0 /opt/nginx

3、运行./configure 查看缺少的依赖,然后依次安装依赖即可

 执行命令:

./configure --prefix=/opt/nginx

参数:--prefix=你需要存放的nginx的路径

现在问题来了,开始报错了

执行完后报错信息:

checking for OS

+ Linux 3.10.0-693.11.6.el7.x86_64 x86_64 checking for C compiler ... not found

./configure: error: C compiler cc is not found

说我的系统缺少c编译器,那我需要安装c++依赖:

sudo yum groupinstall -y "Development Tools"

#或者

sudo yum install -y gcc-c++

4、安装完成后再次执行./configure --prefix=/opt/nginx

运行./configure --prefix=/opt/ 后报错,报错信息为:

报错信息提示缺少pcre依赖。

5、这里我有三种选择方案:

第一种:

禁用HTTP重写模块:如果你不需要使用HTTP重写模块,可以在运行./configure命令时使用

--without-http_rewrite_module选项来禁用它,这将排除HTTP重写模块的编译和安装,并允许继续进行配置过程

./configure --prefix=/opt/ --without-http_rewrite_module

第二种:

安装pcre模块

sudo yum install -y pcre pcre-devel

第三种:

使用源代码构建静态PCRE库:如果系统中的PCRE库版本不兼容或你需要特定版本的PCRE库,您可以选择从源代码构建静态PCRE库。您需要下载PCRE源代码,并在./configure命令中使用

--with-pcre=<path>选项来指定PCRE源代码的路径。

./configure --prefix=/opt/ --with-pcre=你下载的PCRE源代码的实际路径

6、我选择的是继续安装pcre库,安装完成后没报错继续执行./configure --prefix=/opt/nginx

再次报错,报错信息:

报错提示为缺少zlib依赖。

7、同样的这里也有三种选择:

第一种:

禁用HTTP gzip模块:如果你不需要使用HTTP gzip模块,你可以在运行./configure命令时使用

--without-http_gzip_module选项来禁用它:

./configure --prefix=/opt/ --without-http_gzip_module

这将排除HTTP gzip模块的编译和安装,并允许继续进行配置过程。

第二种:

安装zlib模块:

sudo yum install -y zlib zlib-devel

第三种:

使用源代码构建静态Zlib库:如果系统中的Zlib库版本不兼容或你需要特定版本的Zlib库,你可以选择从源代码构建静态Zlib库。你需要下载Zlib源代码,并在./configure命令中使用

--with-zlib=<path>选项来指定Zlib源代码的路径

./configure --prefix=/opt/ --with-zlib=你安装的zlib的目录

当然我还是选择的第二种,继续安装zlib模块,如果禁用后会有一些后续的使用问题。

8、在安装zlib库遇到了如下问题:

执行:sudo yum install -y zlib zlib-devel后提示如下信息

根据错误消息,我的系统已经安装了zlib-1.2.7-21.el7_9.x86_64这个版本的zlib库,并且不用更新,但是我继续执行./configure --prefix=/opt/nginx还是会报缺少zlib库。查了部分资料,说可能是zlib版本的问题。于是卸载了这个库,重新安装。

1)、查看zlib安装了几个版本:

$: rpm -q zlib
zlib-1.2.7-21.el7_9.x86_64

# 查看zlib的安装目录
$: rpm -ql zlib
/usr/lib64/libz.so.1
/usr/lib64/libz.so.1.2.7
/usr/share/doc/zlib-1.2.7
/usr/share/doc/zlib-1.2.7/ChangeLog
/usr/share/doc/zlib-1.2.7/FAQ
/usr/share/doc/zlib-1.2.7/README

 2)、卸载zlib

sudo yum remove zlib-1.2.7-21.el7_9.x86_64

卸载干净后再次执行sudo yum install -y zlib zlib-devel解决问题。

3)、再次执行./configure --prefix=/opt/nginx 没有报错或者提示如下信息则安装成功:

 4)、最后运行make命令将编译软件包,而make install命令将安装软件包到指定的目录。

$: make
$: make install

到你安装的目录去检查一遍。

 到这一步就差不多安装完成了。

9、再来说一下在上述选择禁用HTTP模块的和不禁用的区别:

Nginx是一种高性能的Web服务器和反向代理服务器,它支持丰富的功能和模块。其中一个常用的模块是HTTP重写模块(ngx_http_rewrite_module),它允许对传入的HTTP请求进行重写和重定向。

如果在安装Nginx时禁用HTTP重写模块,与不禁用时相比,会有以下区别:

1)、重写功能不可用:禁用HTTP重写模块将导致Nginx无法执行任何重写规则。这意味着你无法使用重写指令来修改或重定向URL,对URL进行模式匹配和替换等操作。

2)、限制配置灵活性:HTTP重写模块可以让你根据需求进行动态的URL转换和处理。如果禁用该模块,你将失去这种灵活性,并且可能无法满足一些特定的URL重写需求。

3)、性能优化:禁用不需要的模块可以减少Nginx的内存消耗和处理负担。因此,如果你确定不需要HTTP重写功能,禁用该模块可以帮助提升Nginx的性能。

需要注意的是,禁用HTTP重写模块可能会影响你的现有配置文件中的指令和规则。在禁用模块之前,请确保你的配置文件不包含任何依赖于HTTP重写模块的指令或规则,以避免潜在的功能损失。

9、禁用后怎么重启HTTP:

1)、获取Nginx源代码:首先,你需要获取用于编译Nginx的源代码。你可以从Nginx官方网站https://nginx.org/en/download.html

2)、解压源代码:将下载的源代码文件解压缩到一个目录中。

3)、进入Nginx源代码目录:使用命令行进入解压后的Nginx源代码目录。

4)、检查编译配置:运行以下命令来查看当前的编译配置:

./configure --help

这将显示编译Nginx时使用的配置选项。

5)、配置编译选项:根据你的需要,重新配置编译选项,以启用HTTP PCRE 模块和 zlib 模块。例如,你可以使用以下命令来启用这些模块:

./configure --with-pcre --with-zlib

根据你的要求,你可能需要添加其他选项和参数。

6)、编译Nginx:运行make命令将编译软件包,而make install命令将安装软件包到指定的目录

make

这将根据新的配置重新编译Nginx。

7)、安装Nginx:运行以下命令以安装重新编译的Nginx:

make install

重启Nginx服务:根据你的操作系统和初始化系统,使用适当的命令来重新启动Nginx服务,以使配置更改生效。

例如,在大多数Linux发行版上,可以使用以下命令重启Nginx服务:

sudo service nginx restart

如果你使用的是不同的操作系统,请使用相应的命令来重新启动Nginx服务。

完成上述步骤后,Nginx将重新启用HTTP PCRE 模块和 zlib 模块,并开始使用这些模块提供的功能。请确保你的配置文件和任何相关配置正确无误,以避免潜在的问题。

10、卸载nginx:

停止Nginx服务:首先,停止正在运行的Nginx服务。你可以使用以下命令来停止Nginx:

sudo service nginx stop

如果你的系统使用不同的服务管理工具,请使用相应的命令来停止Nginx。

确认Nginx已停止:运行以下命令来确保Nginx服务已完全停止:

sudo service nginx status
#或者查看nginx的进程
ps -ef | grep nginx

如果输出显示Nginx服务已停止,则可以继续进行下一步。

删除Nginx文件:使用以下命令删除Nginx的安装文件和目录:

#我是装在opt目录下的
sudo rm -rf /opt/nginx 
#或者其他目录
sudo rm -rf /你的目录/nginx

这些命令将删除Nginx的配置文件、二进制文件和日志文件。

删除Nginx用户和组:使用以下命令删除Nginx相关的用户和组:

sudo deluser nginx sudo delgroup nginx

这将删除名为 "nginx" 的用户和组。

清理Nginx安装的其他文件:运行以下命令来清理可能存在的其他Nginx文件和目录:

sudo find / -name nginx -type d -exec rm -rf {} \;

这将在整个文件系统中搜索名为 "nginx" 的目录并删除它们。

完成上述步骤后,已成功卸载Nginx,并且相关的文件和目录已被删除。请注意,执行这些操作将永久删除Nginx及其相关文件,因此请谨慎操作并确保您确实要卸载Nginx。

想写个安装依赖报错的文章到写完搭建整个nginx的文章的无奈感!!!

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐