编译安装Nginx或者tengine关于openssl出错失败记录

以下是正常编译流程

1
2
3
4
5
6
7
$ cd /home/download
$ wget http://tengine.taobao.org/download/tengine-2.2.1.tar.gz
$ tar -zxvf tengine-2.2.1.tar.gz
$ cd tengine-2.2.1
$ ./configure --prefix=/usr/local/nginx
$ make
$ make install

如果正常情况下应该在/usr/local下出来nginx的目录了。

今天在make的时候遇到 openssl 出错的问题:

1
2
3
...
*** In function‘ngx_ssl_dhparam’
...

网上一查原因,发现这篇文章nginx错误汇总

解决方案 \
The OpenSSL API has changed quite a bit in 1.1.0… thismeans that nginx needs some work to adapt. I recommend you talk with the nginxfolks.\
替换openssl的包为1.0.1的版本

这边原因是openssl的版本不正确,
本地openssl版本是最新版1.1.0,要修改为1.0.*版本才行
我这边下载的是官方长期支持的版本1.0.2m

1
2
3
4
5
6
7
$ wget ftp://ftp.openssl.org/source/openssl-1.0.2m.tar.gz
$ tar -zxvf openssl-1.0.2m.tar.gz
$ cd openssl-1.0.2m
# 如果是正常安装的话下面就是编译安装,其实tengine并不需要安装
$ ./config
$ make
$ make install

然后开始编译tengine

1
2
3
4
5
$ ./configure --prefix=/usr/local/nginx \
--with-openssl=/home/download/openssl-1.0.2m
# 这里只要配置openssl的解压缩后的路径就行了
$ make
$ make install

经过漫长的等待,终于装完

1
2
$ cd /usr/local/nginx/
$ ./sbin/nginx -s start

网上全都说安装openssl,安装了半天;指定–with-openssl的时候指定到安装目录去了,导致还是编译失败,原来–with-openssl指定的是源码目录。

tengine_install_success