关于私有仓库、TCP/UDP、脚本编写
实现yum的私有仓库搭建
前言
在有些企业中,由于它所处于的特殊环境下,导致该服务器不能连外网。因此搭建私有仓库是有必要的。
准备
这里采用两个虚拟机(Rocky);一台模拟服务器,一台模拟客户机。
前提
这两台虚拟机必须能相互连通;
服务器端:
- 必须能联网。 PS:因为要从外网下载软件包。
- 开启httpd服务
- 关闭selinux
- 关闭防火墙
systemctl start httpd
sed -i '/^SELINUX=/c SELINUX=disabled' /etc/selinux/config
systemctl disable --now firewalld
搭建
服务器端
这里使用本地yum源,而epel,extras需要联网才能使用。
[root@rocky ~]# mount /dev/sr0 /mnt
[root@rocky ~]# cp -a /mnt/* /var/www/html/centos/8
[root@rocky ~]# df -Th
Filesystem Type Size Used Avail Use% Mounted on
devtmpfs devtmpfs 864M 0 864M 0% /dev
tmpfs tmpfs 893M 0 893M 0% /dev/shm
tmpfs tmpfs 893M 9.6M 884M 2% /run
tmpfs tmpfs 893M 0 893M 0% /sys/fs/cgroup
/dev/mapper/rl_rocky-root xfs 80G 19G 62G 24% /
/dev/sdb2 xfs 50G 390M 50G 1% /mnt/aa
/dev/sda1 xfs 1014M 260M 755M 26% /boot
/dev/sdb3 xfs 249G 1.8G 248G 1% /mnt/bb
/dev/sdb4 xfs 100G 746M 100G 1% /mnt/cc
/dev/mapper/testvg0-lvmysql ext4 7.8G 36K 7.4G 1% /mnt/mysql
/dev/mapper/group-qa ext3 765M 49K 728M 1% /mnt/qa
/dev/mapper/rl_rocky-home xfs 127G 950M 126G 1% /home
tmpfs tmpfs 179M 28K 179M 1% /run/user/0
/dev/sr0 iso9660 12G 12G 0 100% /run/media/root/Rocky-8-7-x86_64-dvd
这里要注意以下它的挂载点在哪,地址要根据挂载点来写。
写yum配置文件需要注意:
- 必须写在 /etc/yum.repos.d/ 目录下
- 必须以 .repo结尾
- 默认是自启的,enabled可以不写
- 默认gpgcheck=1,如不需要检查把1改成0即可
[root@rocky ~]# cat /etc/yum.repos.d/Rocky-Media.repo
[media-baseos]
name=Rocky Linux $releasever - Media - BaseOS
baseurl=file:///run/media/root/Rocky-8-7-x86_64-dvd/BaseOS
gpgcheck=0
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-rockyofficial
[media-appstream]
name=Rocky Linux $releasever - Media - AppStream
baseurl=file:///run/media/root/Rocky-8-7-x86_64-dvd/AppStream
gpgcheck=0
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-rockyofficial
[epel]
name=epel
baseurl=https://mirrors.aliyun.com/epel/8/Everything/x86_64/
enabled=1
gpgcheck=0
[extras]
name=extras
baseurl=https://mirrors.aliyun.com/centos/8/extras/x86_64/os
enabled=1
gpgcheck=0
配置完成清理一下缓存
[root@rocky ~]# yum clean all
[root@rocky ~]# yum repolist all
[root@rocky scripts]# yum repolist
repo id repo name
epel epel
extras extras
media-appstream Rocky Linux 8 - Media - AppStream
media-baseos Rocky Linux 8 - Media - BaseOS
--repoid= 以上面的repo id 对应。
-p:指定下载的位置
dnf默认只下载rpm包,不下载meta数据。因此需要指定--download-metadata 才能下载 meta
[root@rocky ~]# mkdir -p /var/www/html/centos/8
[root@rocky ~]# dnf reposync --repoid=extras --download-metadata -p /var/www/html/centos
[root@rocky ~]# dnf reposync --repoid=epel --download-metadata -p /var/www/html/
这里服务器就配置好了。
以下是验证目录是否有文件
[root@rocky ~]# cd /var/www/html/
[root@rocky html]# ls
centos epel
[root@rocky html]# cd centos/
[root@rocky centos]# ls
8 extras
[root@rocky centos]# cd 8/
[root@rocky 8]# ls
AppStream BaseOS EFI images isolinux LICENSE media.repo TRANS.TBL
[root@rocky 8]# cd ..
[root@rocky centos]# cd extras/
[root@rocky extras]# ls
Packages repodata
[root@rocky centos]# cd ..
[root@rocky html]# ls
centos epel
[root@rocky html]# cd epel/
[root@rocky epel]# ls
Packages repodata RPM-GPG-KEY-EPEL-8
客户端
要确保客户端和服务器端是相通的,否则不能下载服务端的软件包。
配置yum仓库
[root@rocky ~]# cat /etc/yum.repos.d/test.repo
[BaseOS]
name=BaseOS
baseurl=http://192.168.3.130/centos/8/BaseOS
enabled=1
gpgcheck=0
#gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-rockyofficial
[AppStream]
name=AppStream
baseurl=http://192.168.3.130/centos/8/AppStream
enabled=1
gpgcheck=0
#gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-rockyofficial
[epel]
name=epel
baseurl=http://192.168.3.130/epel
gpgcheck=0
#gpgkey=http://192.168.3.130/epel/RPM-GPG-KEY-EPEL-8
[extras]
name=extras
baseurl=http://192.168.3.130/centos/extras
gpgcheck=0
清理缓存
[root@rocky ~]# yum clean all
[root@rocky ~]# yum repolist
repo id repo name
AppStream AppStream
BaseOS BaseOS
epel epel
extras extras
接下来安装一下软件检查是否成功
TCP三次握手与四次挥手图解
三次握手图解
四次挥手图解
配置静态网卡实现上网
以Rocky8为例,这里选择NAT网卡模式
查看网关,IP地址的范围
打开编辑,选择虚拟网络编辑器
打开NAT设置
点击DHCP设置
查看一下本机的网卡名,是eth0
[root@rocky ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 00:0c:29:02:39:c9 brd ff:ff:ff:ff:ff:ff
inet 192.168.3.121/24 brd 192.168.3.255 scope global noprefixroute eth0
valid_lft forever preferred_lft forever
inet6 fe80::20c:29ff:fe02:39c9/64 scope link
valid_lft forever preferred_lft forever
3: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000
link/ether 52:54:00:99:12:1f brd ff:ff:ff:ff:ff:ff
inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0
valid_lft forever preferred_lft forever
知道这些信息,接下来就可以配置网卡了。
[root@rocky ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
NAME=eth0
BOOTPROTO=static
IPADDR=192.168.3.130
PREFIX=24
GATEWAY=192.168.3.1
DNS1=8.8.8.8
DNS2=180.76.76.76
DNS3=114.114.114.114
配置完,要让配置生效执行以下命令
[root@rocky ~]# nmcli connection reload
[root@rocky ~]# nmcli connection up eth0
如果是centos6
sevice network restart
如果是centos7
systemctl restart network
这样就完成了。
自动化脚本编写
编写实现免密登陆脚本, expect登陆远程主机,将生成的密钥写入到目标主机, expect测试远程登陆。
功能有
- 安装mysql
- 安装apache
- 免密钥登陆主机
[root@rocky scripts]# cat ssh1.sh
#!/bin/bash
#生成密钥
generate_key() {
ssh-keygen -t rsa
ssh-copy-id root@192.168.3.140
}
#远程登录
test_login() {
expect -c "
spawn ssh root@192.168.3.140
expect {
"*password" { send "877441\n"; exp_continue }
"*yes/no" { send "yes\n"; exp_continue }
}
"
}
#免密登录
ssh_login() {
hosts=(192.168.3.131 192.168.3.132 192.168)
for host in "${hosts[@]}"
do
generate_key
test_login
done
}
PS3="请输入(1-4):"
while true
do
select MENU in 安装mysql 安装apache 免密登录主机 退出;do
case $REPLY in
1)
yum install mysql
;;
2)
yum install apache
;;
3)
ssh_login
;;
4)
echo "退出!"
exit
;;
*)
echo "请重新输入!"
;;
esac
done
done
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· Vue3状态管理终极指南:Pinia保姆级教程