前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >nginx安装:源码case语句不加break导致编译错误,该怎么办...

nginx安装:源码case语句不加break导致编译错误,该怎么办...

原创
作者头像
叫我阿柒啊
发布2024-04-16 17:39:23
2372
发布2024-04-16 17:39:23
举报

前言

上篇文章写了在新买的vps上,使用nginx搭建了一个http代理服务器。在nginx的编译、安装过程中,遇到了几个问题,所以本篇文章就是总结一下nginx安装问题和解决方法。

nginx安装

通常情况下,nginx的安装非常简单,执行下面几行命令就能完成安装。

代码语言:bash
复制
wget http://nginx.org/download/nginx-1.18.0.tar.gz
tar zxvf nginx-1.18.0.tar.gz
cd nginx-1.18.0
./configure --prefix=/usr/local/nginx
make && make install

在nginx官网下载源码包、解压,在检测本地的环境后进行编译安装,整个过程也就是一分钟搞定。但在实际操作过程中,尤其是新服务器的环境中,还是会遇到形形色色的问题。

configure问题

在执行configure检测服务器环境时,会对服务器安装的依赖进行扫描,如果没有nginx的依赖,就会报错。

1. C++编译器版本

遇到的第一个问题就是configure: error: Invalid C++ compiler or C++ compiler flags,无效的c++编译器。

这个问题其实就是c++编译器版本过低导致的,通过执行命令安装高版本的c++编译器即可解决问题。

代码语言:bash
复制
yum -y install centos-release-scl
yum -y install devtoolset-9-gcc devtoolset-9-gcc-c++ devtoolset-9-binutils
scl enable devtoolset-9 bash
echo "source /opt/rh/devtoolset-9/enable" >> /etc/profile

通过gcc -v查看编译器信息。

可以看到,安装了9.3版本的gcc。

2. pcre缺失

PCRE(Perl Compatible Regular Expressions)模块是一个正则表达式库,用于在nginx服务器中进行正则表达式匹配和替换操作。PCRE库提供了类似Perl语言的正则表达式语法,并支持复杂的模式匹配和替换功能。

我在执行configure时提示”pcre not found“。

这里的解决方案就是安装pcre模块。

代码语言:bash
复制
# 下载pcre
wget https://mirrors.aliyun.com/exim/pcre/pcre-8.44.tar.gz
tar xvf pcre-8.44.tar.gz
# 生成Makefile时指定pcre
./configure --prefix=/usr/local/nginx --with-pcre=/root/pcre-8.44

在检测环境时,使用 --with-pcre指定pcre的目录,这样就不会报错了。

3. gzip依赖缺失

nginx的http_gzip模块是用于对HTTP响应数据进行压缩的模块。通过启用http_gzip模块,nginx可以将服务器返回的内容进行压缩,以减少传输数据量,加快页面加载速度,节省带宽并提高网络性能。

如果启动http_gzip模块,就要安装zlib依赖的支持。

我的vps没有安装zlib-devel,所以在检测环境时就会提示:要么使用 --without-http_gzip_module不启用http_gzip模块,要么安装zlib库。

执行yum install zlib-devel安装zlib库就能解决这个问题。

make编译问题

使用make将nginx的源码编译成linux可执行文件的过程中,也遇到了几个问题。

Werrors

在编译时,源码中有类似于switch case的语句,有的case语句没有添加break,正常情况下开发者想加就加,最多给你来个警告。但是在编译时这种warnning就会被当成error处理。

报错:src/core/ngx_murmurhash.c:37:11: warning: this statement may fall through -Wimplicit-fallthrough=

解决方法就是在编译的当前目录下,找到objs文件夹,进入objs并编辑Makefile,找到有下面内容的这行。

Werror: gcc将所有的警告当成错误进行处理,将CFLAGS 这行内容中的 -Werror去掉,wq保存退出,再编译安装。

最后在/usr/local目录中,成功安装了nginx。

结语

这就是我在vps安装nginx遇到的4个问题,涉及编译器、依赖和语法问题,在安装nginx时可以有一个参考。

我正在参与2024腾讯技术创作特训营最新征文,快来和我瓜分大奖!

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • nginx安装
  • configure问题
    • 1. C++编译器版本
      • 2. pcre缺失
        • 3. gzip依赖缺失
        • make编译问题
          • Werrors
          • 结语
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档