debian9 下编译安装tengine2.2.1

首先下载tengine的源码包,这个大家都会下载吧

wget http://tengine.taobao.org/download/tengine-2.2.1.tar.gz

然后解压缩

tar zxf tengine-2.2.1.tar.gz

开始编译安装

cd tengine-2.2.1/

我的编译参数如下

./configure --prefix=/usr/local/nginx/ --with-http_stub_status_module --with-http_ssl_module --with-http_realip_module --http-log-path=/data/logs/nginx/access.log --error-log-path=/data/logs/nginx/error.log

首先需要安装GCC

apt-get install gcc

然后错误来了,提示没有pcre,那我们就安装pcre

apt-get install libpcre3-dev

然后继续编译,错误又来了,提示没有openssl,那我们安装openssl
apt-get install libssl1.0.2 openssl,然后再编译,然后由报错,提示没有zlib

我们安装zlib

apt-get  install zlib1g-dev

然后再编译,这次编译通过

进行make
报错了

make[1]: ***[objs/src/event/ngx_event_openssl.o] Error 1

make[1]: Leaving directory`/usr/local/nginx'

make: *** [build] Error 2

通过在网上查询资料得知,nginx不支持openssl1.0以上版本

查询debian9 所有openssl版本

apt-cache madison openssl

没有1.1以下的

这就坑爹了,apt安装的没有低于1.1的,怎么办呢,编译安装

卸载掉以前安装的,apt-get remove libssl1.0.2 openssl

然后执行一次清理 apt-get autoremove

开始下载openssl的源码包

wget https://www.openssl.org/source/openssl-1.0.2l.tar.gz

./config --prefix=/usr/local/openssl

make

make install

等待安装完毕,重新编译一次nginx

然后再make,又报错了

make[1]: *** [/usr/local/ssl/.openssl/include/openssl/ssl.h] Error 127
make[1]: Leaving directory `/usr/local/src/nginx-1.9.9'
make: *** [build] Error 2

这个原因是出错是因为Nginx在编译时并不能在/usr/local/ssl/.openssl/ 这个目录找到对应的文件,其实我们打开/usr/local/ssl/这个目录可以发现这个目录下是没有.openssl目录的,因此我们修改Nginx编译时对openssl的路径选择就可以解决这个问题了。

因为/usr/local/openssl下根本没有.openssl这个文件夹,所以找不到

解决办法

打开nginx源文件下/root/tengine-2.2.1/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"
修改成以下代码:
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"
 然后再进行Nginx的编译安装即可

这样就能找到了,重新编译,再make make install就没有出错了。

以上问题解决方法参考了以下url,感谢源作者

http://blog.csdn.net/qq_29461259/article/details/52609775

http://blog.chinaunix.net/uid-2274226-id-5756596.html

原文地址:https://www.cnblogs.com/hh2737/p/7755035.html