ubuntu安装Nginx全过程
安装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地址,能看到这个页面


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

1686

被折叠的 条评论
为什么被折叠?



