我正在尝试在 Ubuntu 14.04.3 LTS 上从源代码安装 NGINX [通过 DigitalOcean],但在 make 过程中遇到问题。
这是我的 bash 脚本:
wget http://nginx.org/download/nginx-1.8.0.tar.gz
tar xzf nginx-1.8.0.tar.gz
wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre2-10.20.tar.gz
tar xzf pcre2-10.20.tar.gz
wget http://zlib.net/zlib-1.2.8.tar.gz
tar xzf zlib-1.2.8.tar.gz
wget https://openssl.org/source/openssl-1.0.2e.tar.gz
tar xzf openssl-1.0.2e.tar.gz
cd nginx-1.8.0
./configure --prefix=/usr/local/nginx --conf-path=/usr/local/nginx/etc/nginx.conf --user=nginx --group=nginx --with-http_ssl_module --with-pcre=/root/src/pcre2-10.20 --with-zlib=/root/src/zlib-1.2.8 --with-openssl=/root/src/openssl-1.0.2e
make
我收到以下错误:
make[2]: Entering directory `/root/src/pcre2-10.20'
make[2]: *** No rule to make target `libpcre.la'. Stop.
make[2]: Leaving directory `/root/src/pcre2-10.20'
make[1]: *** [/root/src/pcre2-10.20/.libs/libpcre.a] Error 2
make[1]: Leaving directory `/root/src/nginx-1.8.0'
make: *** [build] Error 2
我使用
gcc -v
检查了 gcc 版本,它显示为 4.8.4。
我该如何解决这个问题?
更新
原来我使用的PCRE版本是错误的,所以我改成了版本1,一切正常。这是更新后的 bash 脚本:
wget http://nginx.org/download/nginx-1.8.0.tar.gz
tar xzf nginx-1.8.0.tar.gz
wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.38.tar.gz
tar xzf pcre-8.38.tar.gz
wget http://zlib.net/zlib-1.2.8.tar.gz
tar xzf zlib-1.2.8.tar.gz
wget https://openssl.org/source/openssl-1.0.2e.tar.gz
tar xzf openssl-1.0.2e.tar.gz
cd nginx-1.8.0
./configure --prefix=/usr/local/nginx --conf-path=/usr/local/nginx/etc/nginx.conf --user=nginx --group=nginx --with-http_ssl_module --with-pcre=/root/src/pcre-8.38 --with-zlib=/root/src/zlib-1.2.8 --with-openssl=/root/src/openssl-1.0.2e
make
感谢@EtanReiser 的发现。
您使用的 PCRE 版本错误。
您正在尝试使用 PCRE2 版本的库,但 nginx 需要 PCRE 版本的库。
来自文档:
— 设置 PCRE 库源的路径。库发行版(版本 4.4 — 8.32)需要从 PCRE 站点下载并提取。其余的由 nginx 的--with-pcre=path
和./configure
完成。 location指令和ngx_http_rewrite_module模块中的正则表达式支持需要该库。make
Nginx 有编译依赖。除了能够编译 C 之外,您还需要:
sudo apt-get install \
libpcre3 libpcre3-dev \
zlib1g zlib1g-dev \
libssl-dev