下载解压切换目录略~

编译nginx

[root@iZgt88z6l1kvd7Z nginx-1.10.1]# ./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-pcre=../pcre-8.39 --with-zlib=../zlib-1.2.8

这里可以参考:https://blog.csdn.net/oqzuser12345678999q/article/details/110466653

没有报错

然后我们make

[root@iZgt88z6l1kvd7Z nginx-1.10.1]# make

第一个报错就这样出来了_

src/core/ngx_murmurhash.c: In function ‘ngx_murmur_hash2’:
src/core/ngx_murmurhash.c:37:11: error: this statement may fall through [-Werror=implicit-fallthrough=]
h ^= data[2] << 16;
^~~~~~~~~~~~~~
src/core/ngx_murmurhash.c:38:5: note: here
case 2:
^~~~
src/core/ngx_murmurhash.c:39:11: error: this statement may fall through [-Werror=implicit-fallthrough=]
h ^= data[1] << 8;
^~~~~~~~~~~~~
src/core/ngx_murmurhash.c:40:5: note: here
case 1:
^~~~
cc1: all warnings being treated as errors
make[1]: *** [objs/Makefile:473: objs/src/core/ngx_murmurhash.o] Error 1
make[1]: Leaving directory ‘/root/nginx-1.10.1‘
make: *** [Makefile:8: build] Error 2

分析原因:

是将警告当成了错误处理,打开 nginx的安装目录/objs/Makefile,去掉CFLAGS中的-Werror,再重新make

-Wall 表示打开gcc的所有警告
-Werror,它要求gcc将所有的警告当成错误进行处理

好的,第一个问题解决了,然后make又出现一个错误

src/os/unix/ngx_user.c: In function ‘ngx_libc_crypt’:
src/os/unix/ngx_user.c:36:7: error: ‘struct crypt_data’ has no member named ‘current_salt’
cd.current_salt[0] = ~salt[0];
^
make[1]: *** [objs/Makefile:774: objs/src/os/unix/ngx_user.o] Error 1
make[1]: Leaving directory ‘/root/nginx-1.10.1‘
make: *** [Makefile:8: build] Error 2

这里提示我们struct crypt_data’没有名为‘current_salt’的成员:cd.current_salt[0] = ~salt[0];

最好的办法是换一个版本,因为条件限制,我们就进到源码里把这行直接注释掉好了。

[root@iZgt88z6l1kvd7Z nginx-1.10.1]# vim src/os/unix/ngx_user.c
进去找到第36行

第三个错误openssl版本错误

src/event/ngx_event_openssl.c: In function ‘ngx_ssl_dhparam’:
src/event/ngx_event_openssl.c:954:11: error: dereferencing pointer to incomplete type ‘DH’ {aka ‘struct dh_st’}
dh->p = BN_bin2bn(dh1024_p, sizeof(dh1024_p), NULL);
^~
src/event/ngx_event_openssl.c: In function ‘ngx_ssl_connection_error’:
src/event/ngx_event_openssl.c:1941:21: error: ‘SSL_R_NO_CIPHERS_PASSED’ undeclared (first use in this function); did you mean ‘SSL_R_NO_CIPHERS_SPECIFIED’?
|| n == SSL_R_NO_CIPHERS_PASSED /* 182 */
^~~~~~~~~~~~~~~~~~~~~~~
SSL_R_NO_CIPHERS_SPECIFIED
src/event/ngx_event_openssl.c:1941:21: note: each undeclared identifier is reported only once for each function it appears in
make[1]: *** [objs/Makefile:816: objs/src/event/ngx_event_openssl.o] Error 1
make[1]: Leaving directory ‘/root/nginx-1.10.1‘
make: *** [Makefile:8: build] Error 2

原因:由于默认使用了openssl 1.1.x 版本,导致的API不一致引起

解决:

直接安装openssl1.0版本
wget http://www.openssl.org/source/openssl-1.1.0e.tar.gz //下载openssl
[root@iZgt88z6l1kvd7Z ~]# tar -zxvf openssl-1.1.0e.tar.gz //解压
[root@iZgt88z6l1kvd7Z ~]# cd openssl-1.1.0e/ &&./config shared zlib --prefix=/usr/local/openssl && make && make install 进入目录把openssl编译安装到 /usr/local/openssl 下
[root@iZgt88z6l1kvd7Z openssl-1.1.0e]# ./config -t
[root@iZgt88z6l1kvd7Z openssl-1.1.0e]# make depend //一种度makefile的规则,通过扫描仪个目录下的所有C\C++ 代码,从而判专断出文件之间的依赖关系,如a.cc文件中调用了b.h(如以形势include<b.h>),如果之后a.cc文件被改动,那 么只需要重新编属译a.cc文件,不需要编译b.h文件。否则所有的文件都需要重新编译。
[root@localhost openssl-1.1.0e]# cd /usr/local
[root@iZgt88z6l1kvd7Z local]# ln -s openssl ssl
[root@iZgt88z6l1kvd7Z local]# echo "/usr/local/openssl/lib" >>/etc/ld.so.conf
[root@iZgt88z6l1kvd7Z local]# cd -
/root/openssl-1.1.0e
[root@iZgt88z6l1kvd7Z openssl-1.1.0e]# ldconfig
[root@iZgt88z6l1kvd7Z openssl-1.1.0e]# echo $?
0
[root@iZgt88z6l1kvd7Z openssl-1.1.0e]# echo "PATH=$PATH:/usr/local/openssl/bin" >> /etc/profile && source /etc/profile

好嘞,查看版本 ,OK

我们再次进入nginx下

[root@iZgt88z6l1kvd7Z nginx-1.10.1]# ./configure --prefix=/usr/local/nginx --with-pcre=../pcre-8.39 --with-zlib=../zlib-1.2.8 --with-openssl=../opensll-1.1.0e

!注意这里还是要把objs/Makefile下的werror去掉

然后启动一下nginx

[root@iZgt88z6l1kvd7Z nginx-1.10.1]# /usr/local/nginx/sbin/nginx

设置一下环境变量

[root@iZgt88z6l1kvd7Z sbin]# echo "PATH=$PATH:/usr/local/nginx/sbin" >> /etc/profile && source /etc/profile

查看一下进程和端口是否开启

看看chrome能不能打开nginx的网页

将nginx加到开机自启

[root@iZgt88z6l1kvd7Z ~]# echo "/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf &" >>/etc/rc.local
(/etc/rc.local 这个文件是系统启动后会自动执行的,我们就将启动命令加入到这个文件中)

如果你发现你的进程没有成功的启动可能是因为你的这个脚本文件没有可以执行的权限 请给该文件增加 其他人可以执行的权限 chmod o+x /etc/rc.local后重启再次查看

centos8 解决编译安装 nginx时遇到的报错相关推荐

  1. CentOS 7 安装 ModSecurity 时 make 命令报错解决方案

    CentOS 7 安装 ModSecurity 时 make 命令报错解决方案:` 项目场景:有学习安全的朋友 可能会接触到 ModSecurity,在这里我也不多bb,人家官网比我讲的好. ModS ...

  2. 解决VScode安装Babel转码器报错:无法将“cnpm“项识别为cmdlet\函数、脚本文件或可运行程序的名称的问题

    解决VScode安装Babel转码器报错:无法将"cnpm"项识别为cmdlet\函数.脚本文件或可运行程序的名称的问题 报错结果如下: 解决方案 第一步:安装npm 点我安装np ...

  3. 安装asterisk 时遇到的报错情况,及解决办法。

    Debian 9 安装 asterisk https://linuxize.com/post/how-to-install-asterisk-on-debian-9/ configure 过程中遇到的 ...

  4. mysql安装报错 1130_关于Linux编译安装会无法远程登录,报错:1130-host ... is not allowed to connect to this MySql server...

    报错:1130-host ... is not allowed to connect to this MySql server, 这是默认安装时为了安全不允许远程登录数据库.只用改下就可以,但我第一次 ...

  5. 对于解决python安装第三方包时候,报错 error: Unable to find vcvarsall.bat的终极秘诀

    对于很多python玩家来说,难免安装一些第三方的库,但是,在安装过程中,如果遇到了 error: Unable to find vcvarsall.bat.怎么办呢?网上答案千千万,楼主亲测,管用的 ...

  6. 【conda解决】安装Torchvision后使用PIL报错,ImportError: cannot import name 'PILLOW_VERSION' from 'PIL'

    安装完Torchvision后发现pillow报错了,如下: ImportError: cannot import name 'PILLOW_VERSION' from 'PIL' (/home/ji ...

  7. 解决:安装html-loder后,运行报错Error: Failed to compile with 1 error

    项目创建过程中,因为vue.config.js的配置里引用了html-loder,且项目运行时,也提示需要安装html-loder,但安装后,再次运行,就报错Error: Failed to comp ...

  8. Linux安装nginx进行make的报错 原因pcre及其源代码路径

    问题1:缺少pcre ./configure: error: the HTTP rewrite module requires the PCRE library. You can either dis ...

  9. 535 5.7.8 Error: authentication failed: generic failure安装EMOS时SMTP测试报错

    按照官方手册安装EMOS时候,进行到SMTP认证测试的时候报如下错: 535 5.7.8 Error: authentication failed: generic failure 原来是因为之前关闭 ...

最新文章

  1. iOS 屏幕亮度和闪光灯控制
  2. 特征工程在实际业务中的应用!
  3. github登陆方案
  4. java condition_死磕 java同步系列之ReentrantLock源码解析(二)
  5. 数学与当代生命科学(吴家睿)
  6. “机器换人”没什么可抱怨
  7. 区块链80%项目靠同一个故事拿钱,但标准链说最坏的时机就是好的开始
  8. 华硕主板X99-E WS/USB 3.1固件更新
  9. [Lua学习]简单链表
  10. Self Encapsulate Field(自封装字段)
  11. mysql内置变量_MySQL常用内置变量
  12. Java JDBC篇3——JDBC事务
  13. 宏基平板电脑_2020年推荐:蒲城二手笔记本电脑回收价格联想戴尔华硕上门回-老友网...
  14. Javascript实现返回上一页面并刷新
  15. java中的equals和hashCode
  16. 小程序ios android差异,解决小程序textarea在安卓和ios上padding不一的问题
  17. 国标GB28181协议国标视频平台国标流媒体服务器EasyGBS向上级联多个平台设备及通道选择错位问题解析
  18. 【MySQL基础 安装】CentOS 7 Yum网络部署 最新官方MySQL5 2020_2_1
  19. 冰峰王座完整的语音英文+中文解释!(修订版)
  20. Purdue, Mathematics Area Examination 学习笔记(1)

热门文章

  1. CSS3 渐变边框,按钮样式、设计图标、电子优惠券 详解!
  2. 45、优惠券秒杀(实现一人一单)
  3. html中如何定义python变量,python怎么定义变量?如何给变量赋值?
  4. vue项目微前端试水
  5. MySQL数据库的卸载与安装
  6. 计算机基础08在线测试,《计算机应用基础》在线测试..doc
  7. BOJ 427. 学姐逗学弟
  8. 类和对象有点东西(一)
  9. android 9 8 对比,米9安卓对比荣耀Flyme 8,这几点不同拉开了差距!
  10. JAVA中将html转换成pdf