Linux搭建服务器的准备工作
1、操作环境 : 创建完虚拟机,安装命令行界面的linux操作系统(centos8,rocky8,rhel8)
[root@yang ~]# cat /etc/redhat-release
Red Hat Enterprise Linux release 8.5 (Ootpa)
2、为服务器配置白名单和安全组 :vim /etc/selinux/config,selinux=disabled
Setenforce 0(关闭)
3、关闭防火墙 :systemctl disable firewalld
enable(重新开启)
systemctl stop(当前虚拟机) firewalld
4、网络设置 :在NAT模式下,配置至少一个可上网的静态IP
5、写好yum源(本地源,网络源)
挂载
[root@yang ~]# mount /dev/sr0 /mnt
mount: /mnt: WARNING: device write-protected, mounted read-only.(重新敲一遍)
[root@yang ~]# mount /dev/sr0 /mnt
mount: /mnt: /dev/sr0 already mounted on /run/media/root/RHEL-8-5-0-BaseOS-x86_64.
配置本地源
[root@yang ~]# vim /etc/yum.repos.d/base.repo
#仓库信息
[BaseOS]
name=BaseOS
baseurl=file:///mnt/BaseOS #软件包路径
gpgcheck=0 #公私钥验证,0表示关闭
enabled=1 #默认开机启用
[AppStream]
name=AppStream
baseurl=file:///mnt/AppStream
gpgcheck=0
enabled=1
6、安装好相应的常用工具 :vim,netstat,bash-completion,chrony
让你的系统时间可以自动根据时间服务器进行同步
写好当前局域网内主机的hosts文件
7、做快照
第一章 nmcli
1.1 nmcli简介
两个重点参数:device(查看重点信息,进行添加删除等操作)
connection(会话:建立了一个可以与用户交互的终端)
[root@yang ~]# nmcli con up ens160 #网卡默认没有开机连接
[root@yang ~]# ip a
NetworkManager是一个动态的网络控制器与配置系统,它可在网络设备保持可用和连接时对设备进行操作。命令是nmcli,在RHEL7中,一个网卡设备可以有多个connection连接,但是同一时刻只能启用其中一个connection连接。每次新建一个连接,都会在/etc/sysconfig/network-scripts/目录下面新建一个文件。这样的好处是针对一个网络接口,可以设置多个网络连接,比如静态IP和动态IP,再根据需要激活响应的connection。
多个配置文件只能默认一个生效,不能同时多个生效
nmcli [OPTION] OBJECT {COMMAND | help}
静态IP与动态IP的切换
网卡的配置文件:vim /etc/sysconfig/network-scripts/ifcfg-ens160
更改网卡配置文件
[root@yang ~]# nmcli connection modify ens160 ipv4.addresses 192.168.235.100/24 ipv4.gateway 192.168.235.2
同网段地址 网关
ipv4.dns 114.114.114.114 +ipv4.dns 8.8.8.8 ipv4.method manual connection.autoconnect yes
备选dns 模式:静态 开机自动连接
重新激活配置信息
nmcli con up ens160
ssh 192.168.235.100
1.2 实验
实验一:Team网卡绑定(至少两个)
网卡绑定(冗余),保证网络正常通信
在 linux 中, Rhel7 之前都是使用 bond 机制来实现多网卡绑定同一个 IP 地址,来对网络提供访问,并按不同的模式来负载均衡或者轮回接替管理处理数据。到了 Rhel7 之后,提供了一种强大的工具, nmcli 工具命令,使用此工具,将会根据命令参数的配置来重新生成特定的配置文件来供网络接口使用,方便而又灵活。在 Rhel7中,不再使用 bond 机制定义,而是使用网络组 team 机制,把 team 组当作一个设备。
除了利用多网卡同时工作来提高网络速度以外,还有可以通过Teaming 实现不同网卡之间的负载均衡(Load balancing)和网卡冗余(Fault tolerance)。
在虚拟机上添加两个网卡(2^n)
查看设备状态信息
①通过设备连接对应会话
[root@yang ~]# nmcli device connect ens224
Device 'ens224' successfully activated with 'dc53ddff-7325-4a7a-826a-1a079ad4b52b'.
[root@yang ~]# nmcli device connect ens256
Device 'ens256' successfully activated with 'e57f620a-548d-47a4-9fab-838f4c22696b'.
两个IP地址都可以正常连接
②查看共享文档信息
[root@yang ~]# cd /usr/share/doc/teamd/example_configs/
打开配置文件信息
[root@yang example_configs]# more activebackup_arp_ping_2.conf
添加一个虚拟网卡
[root@yang ~]# nmcli connection add type team ifname team0 con-name team0 config '{"runner":{"name": "activebackup"}}'
类型 设备名 配置文件名 主备工作方式
显示成功添加
Connection 'team0' (f8d1de27-1590-4c33-a561-91ae0d314e5d) successfully added.
③绑定两个真实网卡
[root@yang ~]# nmcli connection add type team-slave ifname ens224 con-name team0-port1 master team0
Connection 'team0-port1' (6e22ede5-06a3-4948-aefe-2a1c337e1e11) successfully added.
[root@yang ~]# nmcli connection add type team-slave ifname ens256 con-name team0-port2 master team0
Connection 'team0-port2' (d097b4c9-cfbf-4b7a-9c85-a7602fe37e2f) successfully added.
此时虚拟网卡是断开的
④激活从设备
[root@yang ~]# nmcli connection up team0-port1
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/10)
[root@yang ~]# nmcli connection up team0-port2
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/11)
激活主设备
[root@yang ~]# nmcli connection up team0
Connection successfully activated (master waiting for slaves) (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/12)
查看状态:ip address
虚拟网卡已激活,默认将其中一个网卡作为主网卡提供网络通信
⑤查看当前会话状态
[root@yang ~]# teamdctl team0 stat
1、team网卡绑定--冗余
2、条件:多块网卡2^n
确保每块网卡基于主机都能实现网络通信(同一种网络模式)
nmcli device connect ens224
nmcli device connect ens256
3、添加虚拟team设备(主从思想)
nmcli connection add type team ifname team0 con-name team0 config '{"runner":{"name": "activebackup"}}'
4、添加team设备从设备
nmcli connection add type team-slave ifname ens224 con-name team0-port1 master team0
nmcli connection add type team-slave ifname ens256 con-name team0-port2 master team0
5、激活team设备(主能否工作取决于从能否工作,先激活从设备,再激活主设备)
nmcli connection up team0-port1
nmcli connection up team0-port2
nmcli connection up team0
6、测试网卡绑定
teamdctl team0 stat
实验二:桥接
桥接就是把一台机器上的若干个网络接口连接起来,其结果是,其中一个网卡收到的报文会被复制给其他网卡发送出去。以使得网口之间的报文能够互相转发。
#创建一个桥接设备和会话
[root@localhost ~]# nmcli connection add type bridge con-name br1 ifname br1
\#配置软件桥接网卡的IP地址、网关和地址获取方式
[root@localhost ~]# nmcli connection modify br1 ipv4.addresses 192.168.171.151/24
[root@localhost ~]# nmcli connection modify br1 ipv4.gateway 192.168.171.1
[root@localhost ~]# nmcli connection modify br1 ipv4.method manual
\#添加从设备和会话到桥接设备
[root@localhost ~]# nmcli connection add type bridge-slave con-name br1-port0 ifname eno33554984 master br1
\#启动从设备会话
[root@localhost ~]# nmcli connection up br1-port0
\#启动桥接会话
[root@localhost ~]# nmcli connection up br1
第二章 Linux的例行性工作
1.1 单一执行的例行性工作at
单一执行的例行性工作:仅处理执行一次就结束了,at -> atd
我们使用 at 命令来生成所要运行的工作,并将这个工作,以文本方式写入/var/spool/at/目录内,该工作便能等待 atd 这个服务的取用与执行了。
1.1.1 at命令的实际工作过程
1、寻找到/etc/at.allow文件存在,写在这个文件的用户才能使用at命令
2、/etc/at.allow不存在,则寻找/etc/at.deny文件,写在该文件的用户不能使用at命令
3、若两个文件都不存在,那么只有root可以使用at命令
注意:在 rhel 里面,由于假设系统上的所有用户都是可信任的,所以允许所有人使用 at 命令,/etc/at.deny 文件为空,如果你想设置拒绝某人使用 at 命令,你可将该用户写入/etc/at.deny文件
判断软件程序是否正常运行:
systemctl is-active atd active inactive
1.1.2 at命令详解
命令格式:at [参数] [时间]
参数 |
说明 |
-m |
当任务完成之后,即使没有标准输出,将给用户发送邮件 |
-l |
atq的别名,可列出目前系统上面的所有该用户的at调度 |
-d |
atrm的别名,可以取消一个在at调度中的工作 |
-v |
使用较明显的时间格式,列出at调度中的任务列表 |
-c |
可以列出后面接的该项工作的实际命令内容 |
-f |
从文件中读取作业 |
时间格式:
参数 |
说明 |
HH:MM |
在今天的HH小时MM分钟执行,如果今天的这个时间点已经过了,则明天执行 |
HH:MM YYYY-MM-DD |
强制规定在某年某月的某一天的特殊时刻进行该工作 |
now + 2 minutes |
从现在开始几分钟minutes, hours, days, or weeks |
at默认解释器是/bin/sh,是/bin/bash的快捷方式
一分钟后自动创建file文件
[root@yang ~]# at now + 1 minutes #从敲回车开始计时
warning: commands will be executed using /bin/sh
at> touch /file
at>
job 2 at Fri Aug 26 20:26:00 2022
如果一分钟之内没有输入任务,在后期把任务补上之后,在退出那一刻立即执行该任务。
wall---广播命令 只要是当前主机中连接的会话均可以收到信息。
执行完成的命令就会删除
1.2 循环执行的例行性工作
循环执行的例行性工作:每隔一定的周期就需要执行一次,crontab
循环执行的例行性工作调度是由crond这个系统服务来控制的。同样,我们也可以限制使用crontab的用户账号。
周期性任务和单一性任务区别在于周期性任务匹配之后不会把这个任务删掉,而是继续匹配下一个时间点,到时候继续去执行。
1.2.1 crontab命令的实际工作过程
1、以账号来判别是否可使用crontab命令
/etc/cron.allow 将可以使用 crontab 的账号写入其中,若不在该文件内的用户 则不可使用 cronta
/etc/cron.deny 将不可以使用 crontab 的账号写入其中,若不在该文件内的用 户则可使用 crontab。
2、当用户使用 crontab 新建工作调度之后,该项工作就会被记录到/var/spool/cron/里面
3、cron 执行的每一项工作都会被 记录到/var/log/cron这个日志文件中
1.2.2 crontab命令详解
命令格式: crontab [-u user] [-l | -r | -e]
参数 |
说明 |
-u |
只有 root 才能进行这个任务,帮某个用户新建/删除 crontab |
-e |
编辑 crontab 的工作内容 |
-l |
查阅 crontab 的工作内容 |
-r |
删除所有的 crontab 的工作内容 |
编辑 crontab :
[root@localhost cron]# crontab -e
文件格式为:每一行为一个工作,每项工作具有六个字段
代表意义 |
分钟 |
小时 |
日期 |
月份 |
周 |
命令 |
数字范围 |
0-59 |
0-23 |
1-31 |
1-12 |
0-7 |
执行的命令 |
文件内的特殊字符:
特殊字符 |
含义 |
* |
代表任何时刻 |
, |
代表分隔时段---------1,7周一和周天 |
- |
代表一段时间范围-------1--7周一到周天 |
/数字 |
指定时间的间隔频率,例如每 3 分钟进行一次 |