ubuntu安装Nginx的几个问题

本文记录了在Ubuntu上安装Nginx时遇到的openssl版本不兼容问题及解决过程。在安装Nginx 1.12.2时,因openssl版本过高导致错误,解决方案是切换到Nginx 1.14.0并配合openssl 1.1.1。此外,还详细描述了openssl的安装步骤,包括指定安装目录、更新动态链接库、替换默认openssl二进制文件等。在安装Nginx时,需要手动指定openssl路径以解决编译错误。

安装pcre

首先需要先安装nginx依赖的pcre包

wget http://downloads.sourceforge.net/project/pcre/pcre/8.35/pcre-8.35.tar.gz 

解压

tar zxvf pcre-8.35.tar.gz 

进入目录

cd pcre-8.35 

编译安装

./configure 
make && make install

安装完成查看是否安装成功

pcregrep -V 

openssl与Nginx版本对应问题

接着需要安装nginx依赖的openssl。这里注意了,nginx和openssl是有版本对应关系的,一开始自己并不知道版本不相容会有问题,安装的nginx版本是1.12.2,在安装过程中提示./configure: error: SSL modules require the OpenSSL library. 就直接啥也没想apt-get install openssl openssl-devel,于是咻一下就下载好了最新版本的openssl,也就是1.1.1b,一通复杂的配置安装openssl成功之后,没想到安装nginx还是报错(由于没有及时记录,报错信息无法展示),百度之后才发现是nginx和openssl版本不相容的问题,nginx1.12.2版本对应的openssl版本应该为1.0.x,而nginx1.14.0对应openssl1.1.1 。这个时候已经处于非常尴尬的位置了,要不换openssl版本,要不换nginx版本,openssl要删除比较麻烦,容易出错,所以选择重新下载安装nginx1.14.0 tar.gz(源码包,需要自己手动编译再安装),版本对应之后其他的基本都是小问题,解决之后安装成功,整个过程记录如下。

安装openssl

解压并转到目录

tar -xf openssl-1.1.1b.tar.gz
cd openssl-1.1.1b

配置、编译、安装

./config --prefix=/usr/local/ssl --openssldir=/usr/local/ssl shared zlib
make && make install

其中–openssldir参数指定ssl安装目录。接下来配置共享库

cd /etc/ld.so.conf.d/ 
vim openss1-1.1.1b.conf  

(没有vim就用vi,没有就用gedit)然后粘贴openssl库路径目录
/usr/local/ssl/lib
重新加载动态链接

ldconfig -v

使用新版本’/usr/local/ssl/bin/openssl’替换默认的openssl二进制文件’/usr/bin/openssl或/bin/openssl’
备份二进制文件

mv /usr/bin/c_rehash /usr/bin/c_rehash.BEKUP 
mv /usr/bin/openssl /usr/bin/openssl.BEKUP

修改环境文件

vim /etc/environment

添加路径

PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/usr/local/ssl/bin"

刷新

source /etc/environment 
echo $PATH

小功告成!

openssl version -v

在这里插入图片描述

安装Nginx

终于可以开始干正事,依旧那五部曲,解压切目录配置编译安装

tar zxvf nginx-1.14.0.tar.gz

cd nginx-1.12.2 

./configure --prefix=/usr/local/webserver/nginx --with-http_stub_status_module --with-http_ssl_module --with-pcre=/usr/local/src/pcre-8.35 --with-openssl=/usr/local/ssl

make && make install

这里第一次配置的时候没有配置ssl路径,报错提示需要手动指定,于是加上–with-openssl=/usr/local/ssl

[/usr/local/ssl/.openssl/include/openssl/ssl.h] Error 127

没想到执行make && make install时又报错
/bin/sh: line 2: ./config: No such file or directory
make[1]: *** [/usr/local/ssl/.openssl/include/openssl/ssl.h] Error 127
make[1]: Leaving directory `/usr/local/src/nginx-1.14.0’
make: *** [build] Error 2

报错信息提示Nginx在编译时并不能在/usr/local/ssl/.openssl/ 这个目录找到对应的文件,因此我们需要修改Nginx编译时对openssl的路径选择。

Vim /usr/local/src/nginx-1.14.0/auto/lib/openssl/conf

找到这么一段代码:

CORE_INCS="$CORE_INCS $OPENSSL/.openssl/include"
CORE_DEPS="$CORE_DEPS $OPENSSL/.openssl/include/openssl/ssl.h"
CORE_LIBS="$CORE_LIBS $OPENSSL/.openssl/lib/libssl.a"
CORE_LIBS="$CORE_LIBS $OPENSSL/.openssl/lib/libcrypto.a"
CORE_LIBS="$CORE_LIBS $NGX_LIBDL"

将/.openssl删除:

CORE_INCS="$CORE_INCS $OPENSSL/include"
CORE_DEPS="$CORE_DEPS $OPENSSL/include/openssl/ssl.h"
CORE_LIBS="$CORE_LIBS $OPENSSL/lib/libssl.a"
CORE_LIBS="$CORE_LIBS $OPENSSL/lib/libcrypto.a"
CORE_LIBS="$CORE_LIBS $NGX_LIBDL"

保存并重新编译安装
大功告成!

/usr/local/webserver/nginx/sbin/nginx -v 

在这里插入图片描述
此时在浏览器里输入本机ip地址,能看到这个页面
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值