环境:Centos7 纯内网环境

安装nginx的目的,想让该台服务器作为可连接到的所有服务器的yum源(还未实现)

本文所有命令,默认是root用户运行,如果不是root用户,可能部分命令无法使用,请在命令前加sudo

例如:

sudo ls

一. 依赖安装

1. 安装nginx编译时所需开发工具链依赖

1.1 下载依赖

阿里云镜像:centos-7-os-x86_64-Packages安装包下载_开源镜像站-阿里云

快速查找ctrl+f 在出现的查找栏中复制粘贴下方依赖名,即可快速查找

cpp-4.8.5-44.el7.x86_64.rpm
gcc-4.8.5-44.el7.x86_64.rpm
glibc-devel-2.17-317.el7.x86_64.rpm
glibc-headers-2.17-317.el7.x86_64.rpm
kernel-headers-3.10.0-1160.el7.x86_64.rpm
libmpc-1.0.1-3.el7.x86_64.rpm
mpfr-3.1.1-4.el7.x86_64.rpm
gcc-c++-4.8.5-44.el7.x86_64.rpm
libstdc++-4.8.5-44.el7.x86_64.rpm
libstdc++-devel-4.8.5-44.el7.x86_64.rpm

到上传的目录进行rpm安装

yum localinstall ./*.rpm

注:上传时 可使用winscp(软件)上传,如果使用的是mobaX可以使用下图按钮上传,记得看好上传的目录。

如果mobax上传时卡住了,就新开一个ssh,选择高级ssh设置的scp增强速度就可以上传了

1.2 安装结果验证

gcc -v查看版本,若出现版本详情则说明离线安装成功

2. 编译安装nginx编译所需第三方库

(下面的第三方库可以不编译安装,只要将相应的tar.gz(源码包)下载解压就行,我是到nginx安装的时候才发现的,耽误了好多时间,但是要记住解压后的位置!!!!!

2.1 编译pcre

功能:提供正则表达式支持

2.1.1 pcre下载

下载地址:https://sourceforge.net/projects/pcre/files/pcre/8.45/

找到以.tar.gz为后缀的这是源码,点击就会进行下载

2.1.2 编译安装pcre

上传压缩包后,对压缩包进行解压,命令如下

tar -zxf pcre-8.45.tar.gz
#选项解释
-z‌
‌作用‌:启用 gzip 压缩/解压缩算法
‌场景‌:处理 .tar.gz/.tgz 后缀文件时必选,自动调用 gzip 解压数据流12
示例:解压时自动识别 gzip 压缩层
-x‌
‌作用‌:执行‌解包提取‌操作
‌功能‌:从归档文件中释放原始文件及目录结构12
注意:若省略此选项,仅打包(-c)或查看内容(-t)
-f‌
‌作用‌:指定待处理的‌文件名‌
‌规则‌:必须直接跟文件名(如 -f package.tar.gz)23
关键:所有操作依赖此选项定位文件

进入解压后的pcre目录

cd pcre-8.45/

执行

./configure --prefix=/home/Soft/pcre-8.45

这一步是生成等会编译的文件 动态生成Makefile文件,该文件定义了后续 make 和 make install 的编译规则及安装路径,只要这步没有问题,安装一般就没有问题

--prefix=/home/Soft/pcre-8.45 这个是configure的选项,可以用来配置安装到哪里。

编译与安装:

make    #编译  
make install  #安装

验证安装是否完成,执行

/home/Soft/pcre-8.45/bin/pcre-config --version

安装成功的话会出现版本号

2.2 编译安装zlib

功能:压缩库,给nginx提供gzip和gunzip功能

2.2.1 下载zlib

下载地址:zlib Home Site

向下找,找到tar.gz ,点击zlib.net进行下载

我点击的是第一个US的,虽然说两个没什么区别,都是从国外下的,但是文件不大。

2.2.2 编译安装zlib

将上传好的压缩包进行解压

进入解压后的目录,执行

./configure --prefix=/home/Soft/zlib-1.3.1
make    #编译  
make install  #安装

验证:

ls /home/Soft/zlib-1.3.1/lib/libz.so*

动态库(如 libz.so.1.3.1)和静态库(如 libz.a)的存在表明编译成功

2.3 编译安装openssl

功能:‌实现HTTPS加密传输‌

2.3.1 下载openssl

地址:Downloads | OpenSSL Library

2.3.2 编译安装openssl

上传到服务器,进行解压

进入解压后的目录,执行(这里是./config是因为这版只有config或者Configure,也可以把config换成Configure,注意是大写的C)

./config --prefix=/home/Soft/openssl-3.5.2
make  #时间较长
make install

到安装好的目录(也就是/home/Soft/openssl-3.5.2)下执行

sudo ln -s $(pwd)/lib64/libssl.so.3   /usr/lib64/libssl.so.3
sudo ln -s $(pwd)/lib64/libcrypto.so.3 /usr/lib64/libcrypto.so.3

作用是把编译的 OpenSSL 3.5.2 提供的两个关键共享库文件“挂”到系统默认的库目录 /usr/lib64 中,从而让系统能在运行时找到它们。

验证:在/home/Soft/openssl-3.5.2下执行

./bin/openssl version

出现版本信息就是安装成功

下面是我安装出现的问题,把我恶心坏了(没有出现的话可以不看,直接到编译安装nginx)

[root@localhost openssl-3.5.2]# ./Configure --prefix=/home/Soft/openssl-3.5.2
Can't locate IPC/Cmd.pm in @INC (@INC contains: /usr/jiaoqi/tar/openssl-3.5.2/util/perl /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5 . /usr/jiaoqi/tar/openssl-3.5.2/external/perl/Text-Template-1.56/lib) at /usr/jiaoqi/tar/openssl-3.5.2/util/perl/OpenSSL/config.pm line 19.
BEGIN failed--compilation aborted at /usr/jiaoqi/tar/openssl-3.5.2/util/perl/OpenSSL/config.pm line 19.
Compilation failed in require at ./Configure line 23.
BEGIN failed--compilation aborted at ./Configure line 23.

说我缺少perl-IPC-Cmd 之后我就开始找rpm包和tar.gz包,结果,找到了一个,一安装,发现他竟然要依赖,之后就又开始找,好不容易找到了他的依赖,结果这个依赖还需要四个依赖,最后只能找到两个。决定用别的方法:

方法一:在一个可以联网的机器上下载好perl-IPC-Cmd的rpm包以及各种依赖

yum install --downloadonly --downloaddir=<目录路径> perl-IPC-Cmd

例如:yum install --downloadonly --downloaddir=/tmp/perl-packages perl-IPC-Cmd

目录路径是你计划存放的位置,这是只下载,不安装,然后将rpm包打包成tar.gz

打包命令:
 

#  打包命令:
tar -czvf rpm_packages.tar.gz $(find . -name "*.rpm")
#将tar包上传到你准备安装openssl的服务器上,进入解压目录,然后执行安装命令安装依赖包
#  安装命令
rpm -ivh *.rpm
选项解释:
-c    创建新的归档文件
-z    使用gzip压缩
-v    显示处理过程(verbose)
-f    指定归档文件名
-name "*.rpm"    查找所有.rpm后缀的文件

方法二:直接在本机搭建一个yum源,搭建之后,未来的安装会很方便,也可以用方法一给其他的内网环境提供rpm包

最后我是通过方法二解决的,搭建好之后,直接yum install perl ,安装好之后进行的构建

安装教程链接:

搭建yum本地镜像源-CSDN博客

二.  编译安装nginx

下载地址:nginx: download

将tar.gz上传并解压,进入解压目录:

看清楚,里面的--with-库名=源码目录 !!!

不要选错,错了到make那一步会报错

如果执行了,就ctrl+c中断,然后make clean,再重新进行./configure,完全执行完也是可以使用make clean去除掉,重新执行。

./configure \
  --prefix=/home/Soft/nginx-1.28.0 \
  --with-http_stub_status_module \
  --with-http_ssl_module \
  --with-pcre=pcre源码路径 \
  --with-zlib=zlib源码路径 \
  --with-openssl=openssl源码路径 \
  --with-stream \
  --with-stream_ssl_module

配置文件生成成功 (不要被error吓到,那是错误日志存放的的意思)

Configuration summary
  + using PCRE library: pcre源码路径
  + using OpenSSL library: openssl源码路径
  + using zlib library: zlib源码路径

  nginx path prefix: "/home/Soft/nginx-1.28.0"
  nginx binary file: "/home/Soft/nginx-1.28.0/sbin/nginx"
  nginx modules path: "/home/Soft/nginx-1.28.0/modules"
  nginx configuration prefix: "/home/Soft/nginx-1.28.0/conf"
  nginx configuration file: "/home/Soft/nginx-1.28.0/conf/nginx.conf"
  nginx pid file: "/home/Soft/nginx-1.28.0/logs/nginx.pid"
  nginx error log file: "/home/Soft/nginx-1.28.0/logs/error.log"
  nginx http access log file: "/home/Soft/nginx-1.28.0/logs/access.log"
  nginx http client request body temporary files: "client_body_temp"
  nginx http proxy temporary files: "proxy_temp"
  nginx http fastcgi temporary files: "fastcgi_temp"
  nginx http uwsgi temporary files: "uwsgi_temp"
  nginx http scgi temporary files: "scgi_temp"
make ##时间很长很长   有离开目录也不要慌是正常的
make install         ##有离开目录也不要慌是正常的

验证就是去指定的prefix目录看看有没有,有就是安装成功(就差最后一步了)

三.启动nginx

到对应的安装目录下,进到sbin/ 执行./nginx -t 测试一下nginx配置上是否正确

测试无误,启动nginx

在nginx-1.28.0/sbin目录下,执行

./nginx #首次启动,没有任何输出即为成功

验证:

netstat -lntup | grep nginx  #查看nginx是否在监听端口  任意目录位置都可以使用

可以看见在监听80端口

之后可以通过浏览器输入服务器的ip:80或者使用url localhost:80就可以访问(:是英文的,中文的不行)

上面是在linux中,下面是使用浏览器访问的,出现这种就是安装成功。

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐