【RHCE】实战练习

一、实验内容

1、环境拓扑结构

2、主机环境描述

主机名主机地址需要提供的服务
content.exam.com172.25.250.101提供基于 httpd/nginx 的 YUM仓库服务
ntp.exam.com172.25.250.102提供基于Chronyd 的 NTP 服务
mysql.exam.com172.25.250.103提供基于 MySQL 的数据库服务
nfs.exam.com172.25.250.104提供基于 NFS 的网络文件系统服务
dns.exam.com172.25.250.105提供基于 bind 的 DNS 服务
bbs.exam.com172.25.250.106提供基于 Discuz 的论坛服务

注意:

  • 172.25.250.101-172.25.250.105 共 5 个 IP 地址由servera.exam.com服务器进行提供。
  • 172.25.250.106 由 serverb.exam.com 服务器进行提供。 

3、需求描述

项目需求:

 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 主机上运行,并支持多次运行。

二、实验步骤

1、更改主机名

 

2、修改IP地址

2.1 代码部分

2.2 检验部分

3、挂载

 

4、下载工具

 5、web服务搭建

5.1 代码部分

 5.2 检验部分

6、配置网络仓库

 

7、 NTP时间服务器搭建

7.1 代码部分

7.2 检验部分

8、 数据库服务搭建

9、DNS服务搭建

9.1 代码部分
9.1.1 服务开启和开机启动

 

9.1.2 正向解析文件

9.1.3 反向解析文件 

9.1.4 DNS配置文件

 

9.1.5 DNS域名解析文件
 
9.1.6 防火墙放行和重启服务
 
9.2 检验部分 
 9.2.1 正向解析检验

9.2.2 反向解析检验

 10、NFS共享服务

10.1 代码部分

 

 10.2 检验部分

 11、论坛服务搭建

11.1 代码部分
11.1.1 挂载和工具下载

 

11.1.2 论坛解压和权限更改、web服务配置

 11.1.3 防火墙方向和服务重启

三、代码部分

#!/bin/bash

#更改主机名
hostnamectl set-hostname servera.exam.com

ssh root@172.25.250.106 << ALLEOF
hostnamectl set-hostname serverb.exam.com
ALLEOF

#配置IP地址
nmcli connection modify ens160 ipv4.addresses 172.25.250.101/24
nmcli connection modify ens160 ipv4.method manual
nmcli connection modify ens160 connection.autoconnect yes
nmcli connection modify ens160 +ipv4.addresses 172.25.250.102/24
nmcli connection modify ens160 +ipv4.addresses 172.25.250.103/24
nmcli connection modify ens160 +ipv4.addresses 172.25.250.104/24
nmcli connection modify ens160 +ipv4.addresses 172.25.250.105/24
nmcli connection up ens160

#挂载
rm -rf /etc/yum.repos.d/*
cat << EOF > /etc/yum.repos.d/base.repo
[BaseOS]
name=BaseOS
baseurl=/mnt/BaseOS
enabled=1
gpgcheck=0
[Appstream]
name=AppStream
baseurl=/mnt/AppStream
enabled=1
gpgcheck=0
EOF
mount /dev/sr0 /mnt


#下载工具
dnf install httpd yum chrony mysql-server nfs-utils bind bind-utils -y

#web服务
systemctl start httpd
systemctl enable httpd

mkdir /www
mkdir /www/exam
echo "Hello,Welcom to www.exam.com!" > /www/exam/index.html

cat << EOF > /etc/httpd/conf.d/vhost.conf
<directory /www>
allowoverride none
require all granted
</directory>
<virtualhost 172.25.250.101:80>
documentroot /www/exam
servername www.exam.com
</virtualhost>
EOF

insert_content="172.25.250.101 www.exam.com"
if grep -q "$insert_content" /etc/hosts; then
	echo "hosts文件已存在www.exam.com本地解析"
else
	sudo sed -i '$a'"$insert_content" /etc/hosts
	echo "hosts文件已创建www.exam.com本地解析"
fi
firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-service=dns
firewall-cmd --permanent --add-port=80/tcp
firewall-cmd --reload
semanage port -a -t http_port_t -p tcp 80
chcon -t httpd_sys_content_t /www/exam/index.html
systemctl restart httpd

#配置网络仓库
base="/etc/yum.repos.d/rpm.repo"
cat > $base << EOF
[BaseOS]
name=BaseOS
baseurl=http://content.exam.com/yum/BaseOS
enabled=1
gpgcheck=0
[Appstream]
name=AppStream
baseurl=http://content.exam.com/yum/AppStream
enabled=1
gpgcheck=0
EOF

#NTP时间服务器
if grep -q '^#pool 2.rhel.pool.ntp.org iburst' /etc/chrony.conf; then
	echo "时间服务器——pool 2.rhel.pool.ntp.org iburst已被注释,无需修改"
else
	sudo sed -i '/pool 2.rhel.pool.ntp.org iburst/s/^/#/' /etc/chrony.conf
	echo "时间服务器——已成功注释pool 2.rhel.pool.ntp.org iburst"
fi
chrony_server="server 172.25.250.102 iburst"
if grep -q "$chrony_server" /etc/chrony.conf; then
        echo "时间服务器——server 172.25.250.102 iburst已存在,无需添加!"
else
        sudo sed -i '$a'"$chrony_server" /etc/chrony.conf
        echo "时间服务器——server 172.25.250.102 iburst已成功添加!"
fi
chrony_allow="allow 172.25.250.0/24"
if grep -q "$chrony_allow" /etc/chrony.conf; then
        echo "时间服务器——allow 172.25.250.0/24已存在,无需添加!"
else
        sudo sed -i '$a'"$chrony_allow" /etc/chrony.conf
        echo "时间服务器——allow 172.25.250.0/24已成功添加!"
fi
chrony_stratum="local stratum 3"
if grep -q "$chrony_stratum" /etc/chrony.conf; then
        echo "时间服务器——local stratum 3已存在,无需添加!"
else
        sudo sed -i '$a'"$chrony_stratum" /etc/chrony.conf
        echo "时间服务器——local stratum 3已成功添加!"
fi
sudo sed -i '/^#log measurements statistics tracking/s/^#//' /etc/chrony.conf
sudo firewall-cmd --permanent --add-service=ntp
sudo firewall-cmd --reload

ssh root@172.25.250.106 << ALLEOF
if grep -q '^#pool 2.rhel.pool.ntp.org iburst' /etc/chrony.conf; then
        echo "时间服务器——pool 2.rhel.pool.ntp.org iburst已被注释,无需修改"
else
        sudo sed -i '/pool 2.rhel.pool.ntp.org iburst/s/^/#/' /etc/chrony.conf
        echo "时间服务器——已成功注释pool 2.rhel.pool.ntp.org iburst"
fi
chrony_server="server 172.25.250.102 iburst"
if grep -q "\$chrony_server" /etc/chrony.conf; then
        echo "时间服务器——server 172.25.250.102 iburst已存在,无需添加!"
else
        sudo sed -i '\$a'"\$chrony_server" /etc/chrony.conf
        echo "时间服务器——server 172.25.250.102 iburst已成功添加!"
fi
sudo sed -i '/^#log measurements statistics tracking/s/^#//' /etc/chrony.conf

firewall-cmd --permanent --add-service=ntp
firewall-cmd --reload
ALLEOF

#数据库服务
systemctl start mysqld
systemctl enable mysqld
mysqladmin -u root password "redhat"
mysql -u root -predhat << EOF
create database bbs;
update mysql.user set host='%' where user='root';
create user 'root'@'%' identified by 'redhat';
FLUSH PRIVILEGES;
EOF

firewall-cmd --permanent --add-service=mysql
firewall-cmd --permanent --add-port=3306/tcp
firewall-cmd --reload

#DNS服务
systemctl start named
systemctl enable named
cat << EOF > /var/named/named.exam
\$TTL   1D
@       IN      SOA     @       admin.exam.com. (2024072201
							1
							1
							1
							1)
        IN      NS      dns.exam.com.
dns     IN      A       172.25.250.105
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
bbs     IN      A       172.25.250.106
EOF

cat << EOF > /var/named/named.fanxiang
\$TTL   1D
@       IN      SOA     @       admin.exam.com. (2024072201
                                                        1
                                                        1
                                                        1
                                                        1)
        IN      NS      dns.exam.com.
105	IN	PTR	dns.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.
106     IN      PTR     bbs.exam.com.
EOF

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.fanxiang";
};
EOF

cat >> /etc/resolv.conf << EOF
search localdomain
nameserver 172.25.250.105
EOF
firewall-cmd --permanent --add-server=dns
firewall-cmd --reload
systemctl restart named

#NFS服务
systemctl start nfs-server
systemctl enable nfs-server
mkdir /bbs
chmod 777 /bbs/
cat << EOF > /etc/exports
/bbs 172.25.250.106(rw)
EOF
firewall-cmd --permanent --add-service=nfs
firewall-cmd --permanent --add-service=mountd
firewall-cmd --permanent --add-service=rpc-bind
firewall-cmd --reload
systemctl restart nfs-server

#论坛服务
ssh root@172.25.250.106 << ALLEOF
rm -rf /etc/yum.repos.d/*
cat << EOFA > /etc/yum.repos.d/base.repo
[BaseOS]
name=BaseOS
baseurl=/mnt/BaseOS
enabled=1
gpgcheck=0
[Appstream]
name=AppStream
baseurl=/mnt/AppStream
enabled=1
gpgcheck=0
EOFA
mount /dev/sr0 /mnt
dnf install chrony nfs-utils httpd bind bind-utils php* unzip -y
systemctl start httpd
systemctl enable httpd

mkdir -p /var/www/html/bbs
umount /var/www/html/bbs
mount 172.25.250.104:/bbs /var/www/html/bbs
echo '172.25.250.104:/bbs	/var/www/html/bbs	nfs   defaults	0 0' >> /etc/fstab
mount -a
systemctl restart nfs-server

cd /var/www/html/bbs
if [ -d "upload" ]; then
  echo "Discuz压缩包已解压"
else
  rm -rf *
  unzip /root/Discuz_X3.5_SC_UTF8_20230520.zip
  cd
  chmod -R 777 /var/www/html/bbs
fi
cat > /etc/httpd/conf.d/vhost.conf << EOFB
<Directory /var/www/html/bbs>
AllowOverride All
Require all granted
</Directory>
<VirtualHost 172.25.250.106:80>
DocumentRoot /var/www/html/bbs
ServerName bbs.example.com
</VirtualHost>
EOFB

cat >> /etc/resolv.conf << EOFC
search localdomain
nameserver 172.25.250.105
EOFC

firewall-cmd --permanent --add-service=http
firewall-cmd --reload
setsebool -P httpd_use_nfs 1
setsebool -P httpd_can_network_connect_db 1
systemctl restart httpd
ALLEOF

四、实验结果

  • 7
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值