nginx基础学习(八):Nginx内网环境离线安装全过程


本篇文章针对内网环境安装 nginx,记录安装步骤和安装过程中存在的问题解决。

参考文章:
离线部署 Nginx 的安装详细教程+遇到的问题和解决方法
启动 Nginx 报错 ./nginx: error while loading shared libraries: libcrypto.so.1.1: cannot open shared

1. 环境准备

系统环境:CentOS7
nginx 版本:1.20.2
pcre 版本:8.45
zlib 版本:1.3
openssl 版本:1.1.0h
gcc 版本:4.8.5
g++版本:4.8.5

2. 安装包下载

Tips:
pcre:是一个正则表达式库。
zlib:是一个开源的数据压缩库,提供了对数据的无损压缩和解压功能。
openssl:是一个开源的加密库,提供了各种加密算法和安全协议的实现。

安装包就是这么多,提前准备好一起打包上传到服务器中。

3. 安装依赖

3.1 检查 gcc 和 g++是否已经安装,通过一下命名来检查

# 检查gcc是否安装
gcc --version
# 检查g++是否安装
g++ --version

Tips:如果都能正常显示版本号,表示已经安装,如果给出 command not found,表示没有安装。如果已经安装好,注意版本是否正确,不正确需要重新安装。

分别进入到上面解压后的 gcc、g++目录,执行内部已经写好的install.sh文件。执行命令如下:

sh install.sh

如果在执行过程中遇到版本冲突问题,可以编辑 install.sh 文件,将 rpm 命令后面加上--replacefiles参数。示例如下:

# 原脚本内安装命令
rpm -ivh gcc-4.8.5-4.el7.x86_64.rpm
# 修改后
rpm -ivh gcc-4.8.5-4.el7.x86_64.rpm --replacefiles

安装存在的问题:报以下错误

error: Failed dependencies:
        glibc-common = 2.17-105.el7 is needed by glibc-2.17-105.el7.x86_64
error: Failed dependencies:
        glibc = 2.17-105.el7 is needed by glibc-common-2.17-105.el7.x86_64
Preparing...                          ################################# [100%]
        package mpfr-3.1.1-4.el7.x86_64 is already installed
Preparing...                          ################################# [100%]
        package libmpc-1.0.1-3.el7.x86_64 is already installed
Preparing...                          ################################# [100%]
        package cpp-4.8.5-4.el7.x86_64 is already installed
Preparing...                          ################################# [100%]
        package kernel-headers-3.10.0-327.el7.x86_64 is already installed
error: Failed dependencies:
        glibc = 2.17-105.el7 is needed by glibc-headers-2.17-105.el7.x86_64
error: Failed dependencies:
        glibc = 2.17-105.el7 is needed by glibc-devel-2.17-105.el7.x86_64
        glibc-headers is needed by glibc-devel-2.17-105.el7.x86_64
        glibc-headers = 2.17-105.el7 is needed by glibc-devel-2.17-105.el7.x86_64
error: Failed dependencies:
        glibc-devel >= 2.2.90-12 is needed by gcc-4.8.5-4.el7.x86_64
        libgomp = 4.8.5-4.el7 is needed by gcc-4.8.5-4.el7.x86_64

解决方案:在执行的命令后面再加上--force --nodeps,分别表示强制安装和不查找依赖关系,如下示例:

# 原脚本内安装命令
rpm -ivh gcc-4.8.5-4.el7.x86_64.rpm
# 修改后
rpm -ivh gcc-4.8.5-4.el7.x86_64.rpm --force --nodeps

安装完成后,分别使用gcc --versiong++ --version检查是否安装完成。

3.2 安装 pcre

依次执行下面的命令:

# 解压
tar -xvf pcre-8.45.tar.gz
# 进入解压后的目录
cd pcre-8.45
# 配置
./configure
# 编译
make
# 安装
make install

3.3 安装 zlib

依次执行下面的命令:

# 解压
tar -xvf zlib-1.3.tar.gz
# 进入解压后的目录
cd zlib-1.3
# 配置
./configure
# 编译
make
# 安装
make install

3.4 安装 openssl

依次执行下面的命令:

# 解压
tar -xvf openssl-1.1.0h.tar.gz
# 进入解压后的目录
cd openssl-1.1.0h
# 配置
./config
# 编译
make
# 安装
make install

Tips:pcre、zlib、openssl 的安装路径需要记一下,以备后续可能会使用到

4. 安装 nginx

  1. 解压 nginx,tar -xvf nginx-1.20.2.tar.gz;
  2. 进入 nginx 解压后的目录,cd nginx-1.20.2;
  3. 配置环境,./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module;

--prefix=/usr/local/nginx:指定安装目录为/data/nginx。在编译和安装完成后,软件将被安装到该目录下.
--with-http_stub_status_module:启用 HTTP Stub Status 模块。该模块是 Nginx 的一个内置模块,用于获取 Nginx 服务器的状态信息。
--with-http_ssl_module:启用 HTTP SSL 模块。该模块使得 Nginx 支持通过 HTTPS 提供安全的加密传输。

Tips:如果在执行配置的时候,报 pcre 找不到的问题,上面记录的路径就可以使用到了,将配置环境命令修改为./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-pcre=/usr/local/pcre-8.45 --with-zlib=/usr/local/zlib-1.3 --with-openssl=/usr/local/openssl-1.1.0h

  1. 配置环境完成后,执行make && make install命令,进行编译和安装。

5. 测试是否安装成功

根据我上面的安装步骤,我的 nginx 是安装在/usr/local/nginx目录下,执行启动命令如下:

/usr/local/nginx/sbin/nginx

执行可能会报错:

/usr/local/nginx/sbin/nginx: error while loading shared libraries: libssl.so.1.1: cannot open shared object file: No such file or directory

是因为libssl.so.1.1找不到的问题,可以通过一下方式建立软连接解决:

ln -s /usr/local/lib64/libssl.so.1.1 /usr/lib64/libssl.so.1.1

上面软连接创建好后,再执行 nginx 启动命令,可能还会报错:

/usr/local/nginx/sbin/nginx: error while loading shared libraries: libcrypto.so.1.1: cannot open shared object file: No such file or directory

这是因为libcrypto.so.1.1找不到的问题,如同上面的操作,再为libcrypto.so.1.1建立一下软连接。

ln -s /usr/local/lib64/libcrypto.so.1.1 /usr/lib64/libcrypto.so.1.1

此时再去执行启动命令,就可以成功啦,然后在浏览器上通过http://ip:port的方式测试是否成功,给出Welcome to Nginx!页面,表示安装完成。(nginx 默认端口是 80,我是使用虚拟机安装的,ip 地址是:192.168.195.136,那么我访问的地址就是:http://192.168.195.136)


文章作者: 程序猿洞晓
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 程序猿洞晓 !
评论
 上一篇
Centos 7、凝思系统环境下离线安装PostgreSQL11+Postgis2.5.2 Centos 7、凝思系统环境下离线安装PostgreSQL11+Postgis2.5.2
数据迁移,需要将原来CentOS系统上的应用迁入到凝思系统,一个国产系统,基于Debian系统研发的,直接使用RPM安装不了,只能使用二进制安装,虽然是针对凝思系统安装,但也同样支持在CentOS中安装,安装操作都是在离线状态下进行,无法联网。
2023-11-09
下一篇 
Centos系统如何扩充磁盘容量及默认root目录50G解决方案 Centos系统如何扩充磁盘容量及默认root目录50G解决方案
使用VMware构建Centos虚拟机是常规操作,但是有时候会出现安装时候设定的磁盘容量,使用过程不够需要扩容,虽然本身VMware能够在设置中对磁盘进行扩容,但是存在一个问题即使这种扩容只是给虚拟机增加了对应的磁盘容量,但是没有实际挂载到虚拟机上的,也就是扩容了,但实际不能使用,还需要进入到Centos系统中另外进行一系列操作……
2023-08-19
  目录