CentOS离线环境解决安装与依赖方案
先前提要
内网无外网需要安装环境
整理准备
下载 CentOS 光盘完整版镜像
以 CentOS 6.x 为例,因为低版本 CentOS 的 nginx 是 epel,并且缺少 everything
下载地址:https://vault.centos.org/6.5/isos/x86_64/ 或 https://mirrors.aliyun.com/centos-vault/6.9/isos/x86_64/(6.x 都行)
以 CentOS 7 为例,目前是国内环境,我们使用国内 163 源的镜像 http://mirrors.163.com/centos/7/isos/x86_64/ ,当然阿里云、华中科大的源都行。
下载地址:http://mirrors.163.com/centos/7/isos/x86_64/CentOS-7-x86_64-Everything-2009.iso
然后将这个 iso 文件上传到服务器 /root 目录下:
<font style="color:#4D4D4C;">cd /root && wget http://mirrors.163.com/centos/7/isos/x86_64/CentOS-7-x86_64-Everything-2009.iso</font>
挂载 yum 本地库
于 CentOS 6.x
1.1 查看光驱
<font style="color:#4D4D4C;">cd </font><font style="color:#666600;">/</font><font style="color:#4D4D4C;">home</font>
1.2 挂载 iso 文件
mkdir /mnt/dvd && mount -o loop<font style="color:#4D4D4C;"> </font><font style="color:#4271AE;">CentOS</font><font style="color:#666600;">-</font><font style="color:#006666;">6.5</font><font style="color:#666600;">-</font><font style="color:#4D4D4C;">x86_64</font><font style="color:#666600;">-</font><font style="color:#4D4D4C;">bin</font><font style="color:#666600;">-</font><font style="color:#4D4D4C;">DVD1</font><font style="color:#666600;">.</font><font style="color:#4D4D4C;">iso </font>/mnt/dvd
mount iso 镜像文件,关键参数为-o loop,CentOS 6 之类的版本,可以 mkdir /mnt/dvd2,再参考前面的命令将第二张挂载到 /mnt/dvd2 上,更多请查看https://www.cnblogs.com/pumpkinhlk/p/14981770.html
这样就将光盘挂载 /mnt/dvd 目录了。
当然这个挂载命令只是一次性的,系统重启或者自己 umount 后就没了,需要使用本地源 yum 安装时需要线执行这个挂载命令。
1.3 修改安装源
将/etc/yum.repos.d 目录下,将里面存在的所有 repo 文件重新命名或者备份到其他目录下
cd /etc/yum.repos.d/ && rename .repo .repo.backup *.repo
1.4 修改配置文件
在/etc/yum.repos.d 目录下新建一个配置文件来设置本地源。
名称取为 local.repo 文件内容以及命令解释如下
1 | [local-media] |
1.5 私钥权限赋值
<font style="color:#4D4D4C;">sudo rpm </font><font style="color:#666600;">--</font><font style="color:#8959A8;">import</font><font style="color:#4D4D4C;"> </font><font style="color:#666600;">/</font><font style="color:#4D4D4C;">etc</font><font style="color:#666600;">/</font><font style="color:#4D4D4C;">pki</font><font style="color:#666600;">/</font><font style="color:#4D4D4C;">rpm</font><font style="color:#666600;">-</font><font style="color:#4D4D4C;">gpg</font><font style="color:#666600;">/</font>RPM-GPG-KEY-CentOS-6
1.6 清理 yum 缓存
<font style="color:#4D4D4C;">yum clean all</font>
同时将服务器上的软件包信息先在本地缓存,以提高搜索安装软件的速度
yum makecache
1.7 测试 yum 源
<font style="color:#4D4D4C;">yum list</font>
于 CentOS 7.x
2.1 挂载
将iso文件拷贝到机器的某个目录下,比如 /home 目录下
<font style="color:#4D4D4C;">cd </font><font style="color:#666600;">/</font><font style="color:#4D4D4C;">home</font>
使用mount命令将iso文件挂载到某个目录下
mount -t auto /home/CentOS-7-x86_64-DVD-1611.iso /mnt
- 这个时候使用命令 df -lh 可以看到挂载的目录。
- 在实验环境中,命令执行完毕之后可以看到如下内容:
/dev/loop0 4.1G 4.1G 0 100% /mnt
2.2 修改安装源的配置文件
1 | [centos7-local] |
2.3 私钥权限赋值
sudo rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY*
2.4 清除 yum 缓存
<font style="color:#000000;">yum clean all</font>
2.5 测试 yum 源
<font style="color:#000000;">yum list</font>
恢复 yum 网络源
倘若希望恢复网络源,可以将备份的 yum 源配置文件覆盖掉刚才生成的本地源配置文件
cd /etc/yum.repos.d/ && rename .repo.backup .repo *.repo.backup
keepalived 安装
所需前置
注意太高版本在 CentOS 无法编译安装
安装依赖
yum install -y openssl openssl-devel gcc-c++
如之前没有挂在本地 yum 库,可以参考如何离线安装 openssl-devel等方法
解压编译安装
1 | tar -zxvf keepalived-2.0.20.tar.gz |
注册服务
1 | mkdir /etc/keepalived |
修改配置文件
于/etc/keepalived/文件夹内
1 | ! Configuration File for keepalived |
其中 nginx_check 脚本
1 |
|
成功后键入
启动服务:service keepalived start
停止服务:service keepalived stop
如无法启动,请确定service iptables status
是否停止运行
正常情况下,tailf /var/log/messages
可以成功查看 Sending gratuitous ARP 至虚拟 IP
注册开机启动
chkconfig keepalived on
测试 ip 漂移
关闭其中一个节点的服务器测试 ip 漂移,ip a | grep ip
bash 会 return init ip <font style="color:rgb(56, 58, 66);background-color:rgb(250, 250, 250);">scope global eth0</font>
Nginx 安装
所需前置如下:
安装 zlib
nginx 使用 zlib 对 http 包的内容进行 gzip
1 | tar -zxvf zlib-1.2.11.tar.gz |
安装 pcre
nginx 的 http 模块使用 pcre 来解析正则表达式
1 | tar -zxvf pcre-8.44.tar.gz |
安装 openssl
OpenSSL 是一个强大的安全套接字层密码库,包含主要的密码算法,常用的密钥证书封装管理功能和 SSL 协议。Nginx 不仅支持 http 协议,还支持 https
1 | tar -zxvf openssl-1.1.1l.tar.gz |
编译 Nginx
1 | tar -zxvf nginx-1.20.1.tar.gz |
开启 nginx 进程,进入目录cd /usr/local/nginx/
后,./nginx
即启动,观察是否有[error]错误信息,启动后键入ps -ef | gref nginx
查看是否有该进程,最后访问成功即启动完毕,最后可以输入./nginx -v
可以浏览版本是否正确,最后带参数再启动./nginx -s reload -c nginx.conf
注意 nginx.conf 相关配置符合预期生产环境,如 keepalive_timout 等
注册服务
因为 CentOS6.x 使用的是 sysinit,CentOS7 使用的是 systemd,以下以 CentOS6.5 为例子。
于 CentOS 6.x
<font style="color:rgb(77, 77, 77);">vim /etc/init.d/nginx</font>
输入以下内容注册
1 |
|
主要对应变量 nginxd 以及 nginx_config 根据自己实际填写,最后键入<font style="color:rgb(0, 0, 136) !important;">chmod </font><font style="color:rgb(0, 102, 102) !important;">755</font><font style="color:rgb(79, 79, 79);background-color:rgb(246, 248, 250);"> /etc/init.d/nginx</font>
即可享用
启动服务:service nginx start
停止服务:service nginx stop
重启服务:service nginx reload
注册开机启动
略
JDK 安装
所需前置
准备 jdk
创建 java 文件夹
mkdir /usr/local/java
将安装包转移到 java 文件夹中
mv jdk-8u202-linux-x64.tar.gz /usr/local/java/
解压安装包
tar zxvf jdk-8u202-linux-x64.tar.gz
配置 jdk
进入文件夹键入
vim /etc/profile
在末尾加上 JAVA_HOME 和 JRE_HOME,路径如下
1 | JAVA_HOME=/usr/local/java/jdk1.8.0_66 |
保存并退出,重新加载环境变量 source /etc/profile
校验是否安装成功
java -version
出现版本号即可成功
Tomcat 安装
解压即安装
Redis 安装
所需前置
解压编译安装
1 | tar -zxvf redis-6.2.5.tar.gz |
安装成功后进入进入 src 目录启动./redis-serve
看到 redis 的 logo 证明启动成功。
后台方式启动
根目录下vi redis.conf
修改其中 daemonize no 为 daemonize yes
最后再次以配置文件启动即可 ./redis-server redis.conf
Q&A
在配置编译 pcre 时出现的问题 ivalid c++ compiler or c++ compiler flags
返回到根目录输入 yum install -y gcc gcc-c++即可
cannot open shared object file: No such fileordirectory
查看缺少哪些依赖包,补充编译
关于一键部署环境
可以前往https://lnmp.org/download.html(LNMP)或者https://oneinstack.com/auto/(LNMT)一键部署
简单调优最大进程数和最大文件打开数
查看
<font style="color:rgb(51, 51, 51);background-color:rgb(254, 254, 254);">ulimit -n</font>
默认 1024临时修改的话
<font style="color:rgb(51, 51, 51);background-color:rgb(254, 254, 254);">ulimit -</font>HSn<font style="color:rgb(51, 51, 51);background-color:rgb(254, 254, 254);"> 16384</font>
即可,重启后失效永久修改可以前往
vim /etc/security/limits.conf
修改,最后reboot
即可
1 | * soft nofile 65536 |
参数详解:
bash: ulimit
-H 设置硬件资源限制.
-S 设置软件资源限制.
-a 显示当前所有的资源限制.可以使用该命令查看进程占用资源的情况。
-c size:设置 core 文件的最大值.单位:blocks
-d size:设置数据段的最大值.单位:kbytes
-f size:设置创建文件的最大值.单位:blocks
-l size:设置在内存中锁定进程的最大值.单位:kbytes
-m size:设置可以使用的常驻内存的最大值.单位:kbytes
-n size:设置内核可以同时打开的文件描述符的最大值.单位:n
-p size:设置管道缓冲区的最大值.单位:kbytes
-s size:设置堆栈的最大值.单位:kbytes
-t size:设置 CPU 使用时间的最大上限.单位:seconds
-v size:设置虚拟内存的最大值.单位:kbytes 5
- 代表针对所有用户
soft hard 软硬
noproc 是代表最大进程数
nofile 是代表最大文件打开数
configure: error: C compiler cannot create executables
gcc 没有安装好
1 | Making all in lib |
yum update glib*
离线更新 glib
<font style="color:rgb(77, 77, 77);">rpm -Uvh xx.rpm</font>
升级指定包
<font style="color:rgb(77, 77, 77);">rpm -e xx.rpm</font>
卸载由<font style="color:rgb(77, 77, 77);">rpm -qa | grep xxx</font>
指定的包
CentOS离线环境解决安装与依赖方案
https://blog.catooilg.com/2020/09/02/yuque/CentOS离线环境解决安装与依赖方案/