欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 财经 > 金融 > 【RHCE】综合实战练习

【RHCE】综合实战练习

2025/3/28 21:29:21 来源:https://blog.csdn.net/2201_75534982/article/details/146482762  浏览:    关键词:【RHCE】综合实战练习

目录

需求

环境拓扑结构

主机环境描述

需求具体描述

基本环境配置

servera主机

serverb主机

shell脚本编写-servera

配置防火墙

配置本地仓库

配置nginx服务

安装nginx服务

修改配置文件

测试nginx服务

配置selinux

配置dns服务

安装bind软件

配置dns主配置文件

配置dns正向解析区域文件

配置dns反向解析区域文件

启动dns服务并测试

配置网络仓库

配置ntp服务

安装chrony软件

配置防火墙

修改ntp配置文件

启动服务并测试

配置mariaDB

安装mariaDB

配置防火墙

启动服务并运行mariaDB

创建bbs数据库并给其他主机授权

配置nfs服务

安装nfs-utils软件

修改配置文件

创建共享目录并修改权限

修改防火墙配置

启动nfs服务并测试

shell脚本编写-serverb

配置网络仓库

配置nfs客户端

安装autofs软件

配置autofs自动挂载

测试挂载是否成功

配置论坛

安装http服务

安装论坛软件

解压论坛压缩包

修改部分目录权限

开启httpd服务并测试

安装论坛所需软件

配置selinux

启动httpd服务

配置ntp客户端

修改配置文件

启动ntp服务并测试

Shell文件运行测试

serverb方测试

dns客户端测试

ntp客户端测试

论坛测试


需求

环境拓扑结构

主机环境描述

主机名

主机地址需要提供的服务
content.exam.com
172.25.250.101
提供基于 httpd/nginx YUM 仓库服务
ntp.exam.com
172.25.250.102
提供基于 Chronyd NTP 服务
mysql.exam.com
172.25.250.103
提供基于 MySQL 的数据库服务
nfs.example.com
172.25.250.104
提供基于 NFS 的网络文件系统服务
dns.exam.com
172.25.250.105
提供基于 bind DNS 服务
bbs.exam.com
172.25.250.106
提供基于 Discuz 的论坛服务
172.25.250.101-172.25.250.105 5 IP 地址由 servera.exam.com 服务器进行提供。
172.25.250.106 serverb.exam.com 服务器进行提供。

需求具体描述

1. 172.25.250.101 主机上的 Web 服务要求提供 www.exam.com Web 站点,该站点在任何路由可达的主机上被访问,页面内容显示为 "Hello Welcome to www.exam.com !" ,并提供
content.exam.com/yum/AppStream content.exam.com/yum/BaseOS URL 作为网络仓库供所有主机使用。
2. 172.25.250.102 主机提供基于 Chronyd NTP 服务将本主机作为时间服务器,对外提供 NTP 服务,并设置本服务器为 3 层。
3. 172.25.250.103 主机提供的 MySQL 数据库服务,要求使用需求 1 中提供的仓库进行安装,并将数据库密码设定为 redhat 。创建名称为 bbs 的数据库提供给论坛服务使用。
4. 172.25.250.104 主机提供 NFS 服务,该服务将导出本地的 /bbs 目录作为论坛数据目录,该导出指定只能论坛所在主机使用,并且开机自动挂载。
5. 172.25.250.105 主机提供 DNS 服务,该服务需要提供对项目中所有主机名的正向和反向解析,并要求所有服务器的 DNS 配置为该 DNS 服务器。
6. 172.25.250.106 主机提供基于 Discuz 的论坛服务,该论坛服务使用 172.25.250.103 主机提供的数据库 bbs ,使用 172.25.250.104 主机提供的 NFS 作为论坛数据目录,并开机挂载。并使用
172.25.250.101 主机提供的网络仓库, 172.25.250.102 主机提供的 NTP 服务, 172.25.250.105 主机提供的 DNS 服务。
7. 所有服务器的防火墙服务和 SELinux 服务必须开启。
8. 所有服务器提供的网络服务必须在系统重启后仍然可以正常提供服务。
9. 根据所有服务的相关代码,编写一键部署 shell 脚本,最基础的功能为 通过执行该脚本实现所有上面所有需求,要求脚本必须在 servera.exam.com 主机上运行,并支持多次运行。

基本环境配置

servera主机

[root@localhost ~]# nmcli connection modify ens160 ipv4.addresses 172.25.250.101/24 ipv4.gateway 172.25.250.2 ipv4.dns 172.25.250.105 ipv4.method manual connection.autoconnect yes
[root@localhost ~]# nmcli connection modify ens160 +ipv4.addresses 172.25.250.102/24
[root@localhost ~]# nmcli connection modify ens160 +ipv4.addresses 172.25.250.103/24
[root@localhost ~]# nmcli connection modify ens160 +ipv4.addresses 172.25.250.104/24
[root@localhost ~]# nmcli connection modify ens160 +ipv4.addresses 172.25.250.105/24
[root@localhost ~]# nmcli connection up ens160[root@localhost ~]# hostnamectl hostname servera.exam.com

serverb主机

[root@localhost ~]# nmcli connection modify ens160 ipv4.addresses 172.25.250.106/24 ipv4.gateway 172.25.250.2 ipv4.dns 172.25.250.105 ipv4.method manual connection.autoconnect yes

shell脚本编写-servera

配置防火墙

systemctl enable --now firewalldfirewall-cmd --permanent --add-service=http --add-service=dns &> /dev/nullfirewall-cmd --reload &> /dev/null

 

配置本地仓库

rm -rf /etc/yum.repos.d/* &> /dev/null
cat << EOF > /etc/yum.repos.d/bendi.repo
[base]
name=base
baseurl=/mnt/BaseOS
gpgcheck=0
[app]
name=app
baseurl=/mnt/AppStream
gpgcheck=0
EOF

 挂载并测试是否成功

mount /dev/sr0 /mnt &> /dev/null# 判断挂载是否成功
ls /mnt/GPL &> /dev/null
if [ $? -eq 0 ]
thenecho "mount ok"
elseecho "mount not ok"
fi

 

配置nginx服务

安装nginx服务

dnf install -y nginx &> /dev/null
if [ $? -eq 0 ]
thenrpm -qa | grep nginx &> /dev/nullif [ $? -eq 0 ]thenecho "nginx install ok"elseecho "nginx install not ok"fi
elseecho "nginx install not ok"
fi

修改配置文件

mkdir -p /var/www/exam &> /dev/null
echo Hello, Welcome to www.exam.com! > /var/www/exam/index.html
mkdir /var/log/nginx/exam &> /dev/nullcat << EOF > /etc/nginx/conf.d/exam.conf
server {server_name www.exam.com;root /var/www/exam/;access_log /var/log/nginx/exam/access.log;error_log /var/log/nginx/exam/error.log;
}
EOF
cat << EOF > /etc/nginx/conf.d/content.conf
server {server_name content.exam.com;root /var/www/exam/;access_log /var/log/nginx/exam/access.log;error_log /var/log/nginx/exam/error.log;
}
EOF

测试nginx服务

systemctl enable --now nginx &> /etc/null
if [ $? -eq 0 ]
thenactive=$(systemctl is-active nginx)if [ "$active"=="active" ]thenecho "nginx start ok"elseecho "nginx start not ok"fi
elseecho "nginx start not ok"
fi

配置selinux

给nginx目录设置selinux上下文标签,若无特别要求也可将selinux修改为宽容模式

#设置httpd_d域为permissive(宽容)模式
#semanage permissive -a httpd_t
#添加上下文标签
chcon -t httpd_sys_content_t /var/www -R &> /etc/null

 

配置dns服务

安装bind软件

dnf install -y bind &> /dev/null
if [ $? -eq 0 ]
thenrpm -qa | grep bind &> /dev/nullif [ $? -eq 0 ]thenecho "bind install ok"elseecho "bind install not ok"fi
elseecho "bind install not ok"
fi

配置dns主配置文件

cat << EOF > /etc/named.conf
options {listen-on port 53 { 172.25.250.105; };directory       "/var/named";
};
zone "exam.com" IN {type master;file "named.exam";
};
zone "250.25.172.in-addr.arpa" IN {type master;file "named.fanxiangexam";
};
EOF

配置dns正向解析区域文件

cat << EOF > /var/named/named.exam
\$TTL   1D
@       IN      SOA     @       admin.exam.com. (01111)IN      NS      ns.exam.com.
ns      IN      A       172.25.250.101
www     IN      A       172.25.250.101
content IN      A       172.25.250.101
ntp     IN      A       172.25.250.102
mysql   IN      A       172.25.250.103
nfs     IN      A       172.25.250.104
dns     IN      A       172.25.250.105
bbs     IN      A       172.25.250.106
EOF

配置dns反向解析区域文件

cat << EOF > /var/named/named.fanxiangexam
\$TTL   1D
@       IN      SOA     @       admin.exam.com. (01111)IN      NS      ns.exam.com.
101     IN      PTR     ns.exam.com.
101     IN      PTR     www.exam.com.
101     IN      PTR     content.exam.com.
102     IN      PTR     ntp.exam.com.
103     IN      PTR     mysql.exam.com.
104     IN      PTR     nfs.exam.com.
105     IN      PTR     dns.exam.com.
106     IN      PTR     bbs.exam.com.
EOF

启动dns服务并测试

systemctl enable --now named &> /etc/null
if [ $? -eq 0 ]
thenecho "named start ok"
elseecho "named start not ok"
fi

 

配置网络仓库

把/dev/sr0挂载到nginx下的目录中,使其他服务器可以将http://content.exam.com/yum/此作为网络仓库的地址

umount /dev/sr0
mkdir /var/www/exam/yum &> /etc/null
mount /dev/sr0 /var/www/exam/yum &> /etc/nullcat << EOF > /etc/yum.repos.d/bendi.repo
[base]
name=base
baseurl=http://content.exam.com/yum/BaseOS
gpgcheck=0
[app]
name=app
baseurl=http://content.exam.com/yum/AppStream
gpgcheck=0
EOF

 

配置ntp服务

安装chrony软件

dnf install -y chrony &> /etc/nullif [ $? -eq 0 ]
thenecho "chrony install ok"
elseecho "chrony install not ok"
fi

配置防火墙

firewall-cmd --permanent --add-service=ntp &> /dev/null
firewall-cmd --reload &> /dev/null

修改ntp配置文件

sed -i 's/^pool.*/server time.windows.com iburst/g' /etc/chrony.conf
sed -i 's/#allow.*/allow 172.25.250.0\/24/g' /etc/chrony.conf
sed -i 's/#local stratum.*/local stratum 3/g' /etc/chrony.conf
sed -i 's/#log measurements statistics tracking/log measurements statistics tracking/g' /etc/chrony.conf

启动服务并测试

systemctl enable chronyd
systemctl restart chronydif [ $? -eq 0 ]
thenecho "chronyd start ok"
elseecho "chronyd start not ok"
fi

 

配置mariaDB

安装mariaDB

dnf install -y mariadb* &> /etc/null
if [ $? -eq 0 ]
thenecho "mariadb install ok"
elseecho "mariadb install not ok"
fi

配置防火墙

#配置防火墙
firewall-cmd --permanent --add-service=mysql &> /etc/null
firewall-cmd --reload &> /etc/null

启动服务并运行mariaDB

systemctl enable --now mariadb &> /etc/nullmysqladmin -u root password "redhat"

创建bbs数据库并给其他主机授权

mysql -u root -predhat -e "USE bbs" &> /etc/null
#没有bbs数据库执行会报错if [ $? -eq 0 ]
thenecho "database bbs exists"mysql -u root -predhat << EOF
grant all privileges on *.* to 'root'@'%' identified by 'redhat';
flush privileges;
EOF
else# 给所有访问的主机授权,允许所有操作,并确定用户root且密码为redhatmysql -u root -predhat << EOF
create database bbs;
grant all privileges on *.* to 'root'@'%' identified by 'redhat';
flush privileges;
EOF
fiif [ $? -eq 0 ]
thenecho "数据库bbs创建完毕,授权成功"
elseecho "因未知原因,mysql配置失败"
fi

配置nfs服务

安装nfs-utils软件

dnf install -y nfs-utils &> /etc/null
if [ $? -eq 0 ]
thenecho "nfs-utils install ok"
elseecho "nfs-utils install not ok"
fisystemctl enable --now nfs-server &> /etc/null

修改配置文件

echo "/bbs 172.25.250.106(rw)" > /etc/exports

创建共享目录并修改权限

mkdir -p /bbs
chmod 777 /bbs/ -R

修改防火墙配置

firewall-cmd --permanent --add-service=nfs --add-service=mountd --add-service=rpc-bind &> /etc/null
firewall-cmd --reload &> /etc/null

启动nfs服务并测试

systemctl restart nfs-server &> /etc/nullif [ $? -eq 0 ]
thenecho "nfs-server start ok"
elseecho "nfs-server start not ok"
fi

 

shell脚本编写-serverb

在servera中要向把命令运行在serverb中,可以使用ssh

ssh root@172.25.250.106 << ALLEOF
...
ALLEOF

配置网络仓库

rm -rf /etc/yum.repos.d/*cat << EOF > /etc/yum.repos.d/wangluo.repo
[base]
name=base
baseurl=http://content.exam.com/yum/BaseOS
gpgcheck=0
[app]
name=app
baseurl=http://content.exam.com/yum/AppStream
gpgcheck=0
EOF

 

配置nfs客户端

安装autofs软件

dnf install -y autofs &> /etc/null

配置autofs自动挂载

echo "html 172.25.250.104:/bbs" > /etc/auto.client
echo "/var/www/ /etc/auto.client" >> /etc/auto.master

测试挂载是否成功

systemctl enable autofs
systemctl restart autofsif [ $? -eq 0 ]
thenecho "serverb's nfs mount ok"
elseecho "serverb's nfs mount not ok"
fi

配置论坛

安装http服务

dnf install -y httpd &> /etc/null
if [ $? -eq 0 ]
thenecho "serverb's httpd install ok"
else    echo "serverb's httpd install not ok"
fi

修改防火墙配置

systemctl enable --now firewalld &> /etc/nullfirewall-cmd --permanent --add-service=http &> /etc/null

安装论坛软件

在servera运行shell文件前先将论坛安装包放在root用户目录下

解压论坛压缩包
cp -u Discuz_X3.5_SC_UTF8_20230520.zip /var/www/htmlcd /var/www/htmlunzip -o Discuz_X3.5_SC_UTF8_20230520.zip &> /etc/null
修改部分目录权限
chmod 777 upload/uc_server/ upload/uc_client/ upload/data/ upload/config/ -R &> /dev/null
开启httpd服务并测试
systemctl start httpd &> /etc/null
if [ $? -eq 0 ]
thenecho "serverb's httpd start ok"
elseecho "serverb's httpd start not ok"
fi
安装论坛所需软件
dnf install -y php* &> /etc/null
if [ $? -eq 0 ]
thenecho "serverb's php* install ok"
elseecho "serverb's php* install not ok"
fi
配置selinux
setsebool -P httpd_use_nfs 1 &> /etc/null
setsebool -P httpd_can_network_connect_db on &> /etc/null
#semanage permissive -a httpd_t
启动httpd服务
systemctl restart httpd
systemctl enable httpd &> /etc/null

配置ntp客户端

修改配置文件

sed -i 's/^pool.*/server 172.25.250.102 iburst/g' /etc/chrony.conf
sed -i 's/#log measurements statistics tracking/log measurements statistics tracking/g' /etc/chrony.conf

启动ntp服务并测试

systemctl restart chronyd
if [ $? -eq 0 ]
thenecho "serverb's ntp start ok"
elseecho "serverb's ntp start ok"
fi

Shell文件运行测试

servera服务器无明显报错

serverb方测试

dns客户端测试

ntp客户端测试

论坛测试

 填写数据库地址和先前授权的用户和密码

 

实验圆满结束:)

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词