我在VULTR买了一个每个月3.5美元的服务器,本想安装一个nginx试试,参考的是我这篇文档:CentOS7上安装nginx服务器,然后,从./configure 开始就不知道发了什么神经,开始经历如下让人恶心的报错,最后还是没有解决,看来我还是用docker吧。
1、 ./configure: error: the HTTP rewrite module requires the PCRE library.
安装pcre-devel解决问题
yum -y install pcre-devel
2、-bash: make: command not found
Centos中无法使用make,make install,命令 make: command not found ,一般出现这个-bash: make: command not found提示,是因为安装系统的时候使用的是最小化mini安装,系统没有安装make、vim等常用命令,直接yum安装下即可。
yum -y install gcc automake autoconf libtool make
直接ssh运行即可,安装make。
3、make[1]: * [objs/Makefile objs/src/core/ngx_murmurhash.o] Error 1
将对应的makefile文件夹中(如本文中在~ /nginx-1.8.1/objs/Makefile) 找到 -Werro 并去掉 在重新make即可
查了-Werrori意思之后 发现原来它要求GCC将所有的警告当成错误进行处理 所有导致错误输出 并不能进行下一步
4、错误
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:769: objs/src/os/unix/ngx_user.o] Error 1
make[1]: Leaving directory '/usr/local/nginx-1.10.1'
make: *** [Makefile:8: build] Error 2
这里提示我们struct crypt_data’没有名为‘current_salt’的成员:cd.current_salt[0] = ~salt[0];
最好的办法是换一个版本,因为条件限制,我们就进到源码里把这行直接注释掉好了。
vim src/os/unix/ngx_user.c
cd.current_salt[0] = ~salt[0]; 注释掉
/* cd.current_salt[0] = ~salt[0];*/
5、错误
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:811: objs/src/event/ngx_event_openssl.o] Error 1
make[1]: Leaving directory '/usr/local/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
tar -zxvf openssl-1.1.0e.tar.gz
cd openssl-1.1.0e/ &&./config shared zlib --prefix=/usr/local/openssl && make && make install
./config -t
make depend
cd /usr/local
ln -s openssl ssl
echo "/usr/local/openssl/lib" >>/etc/ld.so.conf
cd /usr/local/openssl-1.1.0e
ldconfig
echo $?
echo "PATH=$PATH:/usr/local/openssl/bin" >> /etc/profile && source /etc/profile
妈的,放弃~