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 目录下:cd /root && wget http://mirrors.163.com/centos/7/isos/x86_64/CentOS-7-x86_64-Everything-2009.iso
挂载 yum 本地库
于 CentOS 6.x
1.1 查看光驱
cd /home
1.2 挂载 iso 文件mkdir /mnt/dvd && mount -o loop CentOS-6.5-x86_64-bin-DVD1.iso /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 私钥权限赋值
sudo rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
1.6 清理 yum 缓存
yum clean all
同时将服务器上的软件包信息先在本地缓存,以提高搜索安装软件的速度yum makecache
1.7 测试 yum 源
yum list
于 CentOS 7.x
2.1 挂载
将 iso 文件拷贝到机器的某个目录下,比如 /home 目录下cd /home
使用 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 缓存
yum clean all
2.5 测试 yum 源
yum list
恢复 yum 网络源
倘若希望恢复网络源,可以将备份的 yum 源配置文件覆盖掉刚才生成的本地源配置文件cd /etc/yum.repos.d/ && rename .repo.backup .repo *.repo.backup
keepalived 安装
所需前置
Keepalived_2.0.20
注意太高版本在 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 scope global eth0
Nginx 安装
所需前置如下:
nginx-1.20.1
pcre-8.44
zlib-1.2.11
openssl-1.1.1l
安装 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.xvim /etc/init.d/nginx
输入以下内容注册
1 |
|
主要对应变量 nginxd 以及 nginx_config 根据自己实际填写,最后键入chmod 755 /etc/init.d/nginx
即可享用
启动服务:service nginx start
停止服务:service nginx stop
重启服务:service nginx reload
注册开机启动
略
JDK 安装
所需前置
jdk1.8
准备 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 安装
所需前置
Redis-service
解压编译安装
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)一键部署
简单调优最大进程数和最大文件打开数
查看
ulimit -n
默认 1024
临时修改的话ulimit -HSn 16384
即可,重启后失效
永久修改可以前往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
http://copr-be.cloud.fedoraproject.org/results/mosquito/myrepo-el6/epel-6-x86_64/glibc-2.17-55.fc20/glibc-2.17-55.el6.x86_64.rpm > http://copr-be.cloud.fedoraproject.org/results/mosquito/myrepo-el6/epel-6-x86_64/glibc-2.17-55.fc20/glibc-common-2.17-55.el6.x86_64.rpm > http://copr-be.cloud.fedoraproject.org/results/mosquito/myrepo-el6/epel-6-x86_64/glibc-2.17-55.fc20/glibc-devel-2.17-55.el6.x86_64.rpm > http://copr-be.cloud.fedoraproject.org/results/mosquito/myrepo-el6/epel-6-x86_64/glibc-2.17-55.fc20/glibc-headers-2.17-55.el6.x86_64.rpm
rpm -Uvh xx.rpm
升级指定包rpm -e xx.rpm
卸载由rpm -qa | grep xxx
指定的包
CentOS离线环境解决安装与依赖方案
https://blog.catooilg.com/2020/09/02/yuque/CentOS离线环境解决安装与依赖方案/