安装nginx

本文详述了手动安装nginx的完整过程,包括安装C++编译环境、pcre库、zlib库和ssl,以及解决在安装过程中遇到的错误和配置问题。最后成功启动nginx并验证其运行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


Nginx版本为1.9.15

下载安装辅助服务

安装C++编译环境

如已安装可略过

yum install gcc-c++

选择安装路径

可以是任何目录,本文选定的是/usr/local/
本来选择的是的/home/nginx路径,之后又改为/usr/local/下面,后面会有详细解释

安装pcre库

ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.42.tar.gz下载最新的 PCRE 源码包,用于解析nginx的http模块的正则表达式,使用下面命令下载编译和安装 PCRE 包:

wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.42.tar.gz
tar -zxvf pcre-8.42.tar.gz
cd pcre-8.42
./configure
make && make install

安装zlib库

http://zlib.net/zlib-1.2.11.tar.gz下载最新的 zlib 源码包,使用下面命令下载编译和安装 zlib包:

wget http://zlib.net/zlib-1.2.11.tar.gz
tar -zxvf zlib-1.2.11.tar.gz
cd zlib-1.2.11
./configure
make && make install

安装ssl

wget https://www.openssl.org/source/openssl-1.1.1.tar.gz
tar -zxvf openssl-1.1.1.tar.gz

安装nginx

wget http://nginx.org/download/nginx-1.9.15.tar.gz
tar -zxvf nginx-1.9.15.tar.gz
cd nginx-1.9.15
./configure --sbin-path=/home/nginx/nginx/sbin \
--conf-path=/home/nginx/nginx-1.9.15/conf/nginx.conf \
--pid-path=/home/nginx/nginx-1.9.15/logs/nginx.pid \
--with-http_ssl_module \
--with-pcre=/home/nginx/pcre-8.42 \
--with-zlib=/home/nginx/zlib-1.2.11 \
--with-openssl=/home/nginx/openssl-1.0.1

make && make install

运行了很久,报了第一个错误,报错信息如下:

src/event/ngx_event_openssl.c: 在函数‘ngx_ssl_dhparam’中:
src/event/ngx_event_openssl.c:954:11: 错误:提领指向不完全类型的指针
         dh->p = BN_bin2bn(dh1024_p, sizeof(dh1024_p), NULL);
           ^
src/event/ngx_event_openssl.c:955:11: 错误:提领指向不完全类型的指针
         dh->g = BN_bin2bn(dh1024_g, sizeof(dh1024_g), NULL);
           ^
src/event/ngx_event_openssl.c:957:15: 错误:提领指向不完全类型的指针
         if (dh->p == NULL || dh->g == NULL) {
               ^
src/event/ngx_event_openssl.c:957:32: 错误:提领指向不完全类型的指针
         if (dh->p == NULL || dh->g == NULL) {
                                ^
src/event/ngx_event_openssl.c: 在函数‘ngx_ssl_connection_error’中:
src/event/ngx_event_openssl.c:1941:21: 错误:‘SSL_R_NO_CIPHERS_PASSED’未声明(在此函数内第一次使用)
             || n == SSL_R_NO_CIPHERS_PASSED                          /*  182 */
                     ^
src/event/ngx_event_openssl.c:1941:21: 附注:每个未声明的标识符在其出现的函数内只报告一次
make[1]: *** [objs/src/event/ngx_event_openssl.o] 错误 1
make[1]: 离开目录“/home/nginx/nginx-1.9.15”
make: *** [build] 错误 2

百度到是openssl的版本问题

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的版本,删除之前的版本,并重新下载新的版本,并解压

cd ..
rm -rf ./openssl-1.1.1
rm -f openssl-1.1.1.tar.gz 
wget https://www.openssl.org/source/openssl-1.0.1.tar.gz
tar -zxvf openssl-1.0.1.tar.gz

接着得再重新安装一遍nginx

rm -rf nginx-1.9.15
tar -zxvf nginx-1.9.15.tar.gz 
cd nginx-1.9.15
./configure --sbin-path=/home/nginx/nginx/sbin \
--conf-path=/home/nginx/nginx-1.9.15/conf/nginx.conf \
--pid-path=/home/nginx/nginx-1.9.15/logs/nginx.pid \
--with-http_ssl_module \
--with-pcre=/home/nginx/pcre-8.42 \
--with-zlib=/home/nginx/zlib-1.2.11 \
--with-openssl=/home/nginx/openssl-1.0.1

make && make install

还是报错,报错信息如下:

cp conf/koi-win '/home/nginx/nginx-1.9.15/conf'
cp: "conf/koi-win""/home/nginx/nginx-1.9.15/conf/koi-win" 为同一文件
make[1]: *** [install] 错误 1
make[1]: 离开目录“/home/nginx/nginx-1.9.15”
make: *** [install] 错误 2

此问题找了很久,基本都是一个解决办法

/home/nginx/nginx/sbin/nginx -c /home/nginx/nginx-1.9.15/conf/nginx.conf  #使用nginx -c的参数指定nginx.conf文件的位置

则报了如下错误

nginx: [alert] could not open error log file: open() "/home/nginx/nginx/logs/error.log" failed (2: No such file or directory)
2018/11/12 17:07:47 [emerg] 14382#0: open() "/home/nginx/nginx/logs/access.log" failed (2: No such file or directory)

还尝试了修改安装目录,即在./configure命令后面加一个参数–prefix=/home/nginx/nginx \,并重新安装一遍nginx。然而并没哟什么用,还是一样的错误

最后无奈,便换回原来的默认的路径/usr/local路径下试试。并修改./configure 命令后面的参数列表,去掉各种path的配置,只添加了几个辅助服务的路径,如下:

./configure \
--with-http_ssl_module \
--with-pcre=/home/nginx/pcre-8.42 \
--with-zlib=/home/nginx/zlib-1.2.11 \
--with-openssl=/home/nginx/openssl-1.0.1

然后重新安装nginx。

cd /usr/local/
cp /home/nginx/nginx-1.9.15.tar.gz ./
tar -zxvf nginx-1.9.15.tar.gz 
cd nginx-1.9.15

./configure \
--with-http_ssl_module \
--with-pcre=/home/nginx/pcre-8.42 \
--with-zlib=/home/nginx/zlib-1.2.11 \
--with-openssl=/home/nginx/openssl-1.0.1

make && make install

成功完成安装

启动nginx

确保系统的 80 端口没被其他程序占用,运行/usr/local/nginx/sbin/nginx 命令来启动 nginx,
打开浏览器访问此机器的 IP,如果浏览器出现 Welcome to nginx! 则表示 nginx 已经安装并运行成功。

参考链接:

https://blog.youkuaiyun.com/qq_29461259/article/details/52609775

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值