目录
需求:
主机环境描述
注意:
项目需求:
代码讲解
配置本地仓库
安装软件包
配置防火墙
配置策略中的一个布尔值
配置web服务
配置网络仓库
配置DNS服务
配置NTP服务
配置MySQL服务
配置NFS服务
配置论坛服务
进入网站配置论坛服务
完整版代码
需求:
主机环境描述
主机名 | 主机地址 | 需要提供的服务 |
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 主机上运行,并支持多次运行
本代码需要手动配置IP和免密登录,也需要收动将压缩包拖入106主机上进行解压缩
代码讲解
配置本地仓库
ls /etc/yum.repos.d/ | grep rpm.repo &> /dev/null
if [ $? = 0 ];then
echo "已有本地仓库"
else
echo "[baseos]
name=baseos
baseurl=/www/yum/BaseOS
gpgcheck=0
[baseos1]
nmae=baseos
baseurl=/www/yum/AppStream
gpgcheck=0">>/etc/yum.repos.d/rpm.repo
echo "本地仓库完成"
fi
安装软件包
(使用命令安装后,进行判断,如果返回值为0,就说明安装成功)
# 安装所需软件包 yum install -y php* unzip httpd chrony nfs-utils bind vim autofs > /dev/null 2>&1 if [ $? -eq 0 ]; then echo "软件安装成功" else echo "软件安装失败" fi #106安装软件 ssh root@172.25.250.106 &>> /dev/null <<EOF1 yum install -y php* unzip httpd chrony nfs-utils bind vim autofs > /dev/null 2>&1 EOF1 echo "106软件安装成功"
配置防火墙
将所有会使用到的服务全部进行防火墙放行
# 配置防火墙规则 firewall-cmd --permanent --add-service=http > /dev/null 2>&1 firewall-cmd --permanent --add-service=dns > /dev/null 2>&1 firewall-cmd --permanent --add-service=nfs > /dev/null 2>&1 firewall-cmd --permanent --add-service=mountd > /dev/null 4>&1 firewall-cmd --permanent --add-service=rpc-bind > /dev/null 2>&1 firewall-cmd --permanent --add-service=mysql > /dev/null 2>&1 firewall-cmd --permanent --add-service=ntp > /dev/null 2>&1 firewall-cmd --reload > /dev/null 2>&1 if [ $? -eq 0 ]; then echo "防火墙已放行" else echo "防火墙放行操作失败" fi # 配置106防火墙规则 ssh root@172.25.250.106 &>> /dev/null <<EOF1 firewall-cmd --permanent --add-service=http > /dev/null 2>&1 firewall-cmd --permanent --add-service=dns > /dev/null 2>&1 firewall-cmd --permanent --add-service=nfs > /dev/null 2>&1 firewall-cmd --permanent --add-service=mountd > /dev/null 2>&1 firewall-cmd --permanent --add-service=rpc-bind > /dev/null 2>&1 firewall-cmd --permanent --add-service=mysql > /dev/null 2>&1 firewall-cmd --permanent --add-service=ntp > /dev/null 2>&1 firewall-cmd --reload > /dev/null 2>&1 EOF1 echo "106防火墙已放行"
配置策略中的一个布尔值
允许 httpd连接到数据库。
# 配置 SELinux布尔值 setsebool -P httpd_use_nfs 1 setsebool -P httpd_can_network_connect_db 1 # 配置106 SELinux布尔值 ssh root@172.25.250.106 &>> /dev/null <<EOF1 setsebool -P httpd_use_nfs 1 setsebool -P httpd_can_network_connect_db 1 EOF1
配置web服务
-
首先向
/etc/httpd/conf.d/vhost.conf
文件中写入一些配置信息。 -
创建
/www/exam/
目录,并创建index.html
文件,写入网页的内容。 -
修改
index.html
文件的 SELinux 上下文类型。 -
备份
/etc/hosts
文件,然后在原内容基础上添加新的主机名和 IP 地址的映射。 -
启用
httpd
服务并重启。 -
最后使用
curl
命令访问配置的网站,并根据返回的内容判断 Web 服务配置是否成功。
# 配置Web 服务 echo "<Directory /www >" > /etc/httpd/conf.d/vhost.conf echo "AllowOverride None" >> /etc/httpd/conf.d/vhost.conf echo "Require all granted" >> /etc/httpd/conf.d/vhost.conf echo "</Directory>" >> /etc/httpd/conf.d/vhost.conf echo "<VirtualHost 172.25.250.101:80>" >> /etc/httpd/conf.d/vhost.conf echo "DocumentRoot /www/exam" >> /etc/httpd/conf.d/vhost.conf echo "ServerName www.exam.com" >> /etc/httpd/conf.d/vhost.conf echo "</VirtualHost>" >> /etc/httpd/conf.d/vhost.conf mkdir -p /www/exam/ > /dev/null 2>&1 touch /www/exam/index.html echo "Hello,Welcome to www.exam.com!" > /www/exam/index.html chcon -t httpd_sys_content_t /www/exam/index.html -R cp /etc/hosts /etc/hosts.bak original_content=$(cat /etc/hosts) # 拼接新的内容 new_content="$original_content 172.25.250.101 www.exam.com 172.25.250.101 content.exam.com" # 将新内容写入文件 echo "$new_content" > /etc/hosts systemctl enable httpd > /dev/null 2>&1 systemctl restart httpd result=$(curl -s "www.exam.com") if [[ $result == *"Hello,Welcome to www.exam.com!"* ]]; then echo "web 服务配置成功" else echo "web 服务配置失败" fi
配置网络仓库
-
首先对本地的
/etc/yum.repos.d/rpm.repo
文件进行备份,然后清空其内容,并写入新的仓库配置信息。 -
创建相关目录,并尝试挂载设备。
-
通过
yum repolist
命令测试本地仓库配置是否成功,并给出相应的提示。 -
使用
ssh
命令在远程主机172.25.250.106
上执行类似的仓库配置操作。
#配置网络仓库 cp /etc/yum.repos.d/rpm.repo /etc/yum.repos.d/rpm.repo.bak # 备份原文件 > /etc/yum.repos.d/rpm.repo # 删除原文件内容 cat <<EOF > /etc/yum.repos.d/rpm.repo [baseos] name=baseos baseurl=http://content.exam.com/yum/BaseOS gpgcheck=0 [appstream] name=appstream baseurl=http://content.exam.com/yum/AppStream gpgcheck=0 EOF mkdir -p /www/exam > /dev/null 2>&1 # 创建目录 mkdir -p /www/exam/yum mount /dev/sr0 /www/exam/yum > /dev/null 2>&1 # 执行挂载 yum repolist > /dev/null 2>&1 # 测试下载 if [ $? -eq 0 ]; then echo "网络仓库配置成功" else echo "网络仓库配置失败" fi #配置主机106的仓库 ssh root@172.25.250.106 &>> /dev/null <<EOF2 cp /etc/yum.repos.d/rpm.repo /etc/yum.repos.d/rpm.repo.bak # 备份原文件 > /etc/yum.repos.d/rpm.repo # 删除原文件内容 echo "[baseos] name=baseos baseurl=http://content.exam.com/yum/BaseOS gpgcheck=0 [appstream] name=appstream baseurl=http://content.exam.com/yum/AppStream gpgcheck=0" > /etc/yum.repos.d/rpm.repo exit EOF2 echo "106仓库配置完成"
配置DNS服务
-
配置主 DNS 服务器(
172.25.250.105
)的named.conf
配置文件,指定了监听端口和区域信息。 -
分别为正向解析区域
exam.com
和反向解析区域250.25.172.in-addr.arpa
生成了相应的解析记录文件。 -
重启并启用
named
服务。 -
对于从 DNS 服务器(
172.25.250.106
),通过ssh
远程操作,设置了其named.conf
配置文件。 -
最后通过
dig
命令测试 DNS 服务是否配置成功,并根据结果输出相应的提示。
# 配置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.fanxiang"; }; EOF cat <<EOF > /var/named/named.exam \$TTL 1d @ IN SOA @ admin.exam.com. ( 0 5 3 10 15 ) IN NS dns.exam.com. 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 cat <<EOF1 > /var/named/named.fanxiang \$TTL 1d @ IN SOA @ admin.exam.com. ( 0 5 3 10 15 ) IN NS dns.exam.com. 101 IN PTR content.exam.com. 101 IN PTR www.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. EOF1 systemctl restart named systemctl enable named > /dev/null 2>&1 result=$(dig -t A www.exam.com ) if [[ $result == *"NOERROR"* ]]; then echo "DNS服务配置成功" else echo "DNS服务配置失败" fi
配置NTP服务
-
在主机
172.25.250.102
上: - 使用sed
命令修改/etc/chrony.conf
配置文件,允许特定网段(172.25.250.0/24
)的访问,设置本地层级为3
,并修改日志相关的配置。 - 重启chronyd
服务并设置其开机自启。 -
在主机
172.25.250.106
上: - 通过ssh
远程连接,并使用sed
命令修改/etc/chrony.conf
配置文件,指定 NTP 服务器为ntp.exam.com
并设置相关参数。 - 重启chronyd
服务并设置其开机自启。 - 远程执行chronyc sources
命令获取结果,并将返回值存储在result
变量中。 -
根据
result
的值判断时间服务器配置是否成功。
# 配置NTP服务 #"进入servera中配置NTP服务" # 配置 172.25.250.102 主机 sed -i '27a\allow 172.25.250.0/24' /etc/chrony.conf sed -i '30a\local stratum 3' /etc/chrony.conf sed -i '52c\log measurements statistics tracking' /etc/chrony.conf systemctl restart chronyd systemctl enable chronyd > /dev/null 2>&1 #"进入serverb中配置NTP服务" # 配置 172.25.250.106 主机 ssh root@172.25.250.106 &>> /dev/null << EOF1 sed -i '3c\server ntp.exam.com iburst' /etc/chrony.conf systemctl restart chronyd systemctl enable chronyd > /dev/null 2>&1 exit EOF1 ssh root@172.25.250.106 &>> /dev/null "chronyc sources" result=$? if [ $? = 0 ];then echo "Chronyd服务成功运行" else echo "NTP已配置,无需重复配置" fi EOF1
配置MySQL服务
-
首先使用
yum
命令安装mysql-server
,并将安装过程中的输出重定向到/dev/null
以隐藏输出。 -
启动 MySQL 服务。
-
以 root 用户登录 MySQL 执行一系列操作,包括修改 root 用户在本地的密码、创建数据库
bbs
、更新 root 用户的主机权限以及刷新权限。 -
启用 MySQL 服务并重启。
-
通过 SSH 免密登录到
172.25.250.106
执行相同的安装、启用和重启 MySQL 服务的操作。 -
最后通过检查
result
变量是否有值来判断 MySQL 服务配置是否成功。
# 配置MySQL 服务 yum install mysql-server -y > /dev/null 2>&1 # 执行 yum 安装命令,并将输出重定向到黑洞 systemctl start mysqld #启动MySQL服务 mysql &>> /dev/null << EOF2 alter user 'root'@'localhost' identified with mysql_native_password by 'redhat' ; create database bbs; update mysql.user set host='%' where user='root'; flush privileges; EOF2 systemctl enable mysqld > /dev/null 2>&1 systemctl restart mysqld # 通过 SSH 免密登录到 172.25.250.106 进行操作 ssh root@172.25.250.106 &>> /dev/null <<EOF3 yum install mysql-server -y &>> /dev/null systemctl enable mysqld > /dev/null 2>&1 systemctl restart mysqld EOF3 if [ $? = 0 ]; then echo "MySQL服务配置成功" else echo "MySQL服务配置失败" fi systemctl enable mysqld systemctl start mysqld
配置NFS服务
-
在
172.25.250.104
主机上:-
创建
/bbs
目录并设置权限。 -
配置
/etc/exports
文件以共享/bbs
目录。 -
启动 NFS 服务。
-
检查
/etc/fstab
中是否有关于/dev/sr0
的挂载配置,如果没有则添加。
-
-
在
172.25.250.106
主机上:-
通过
ssh
远程执行一系列操作,创建一个脚本xixi.sh
用于检查并配置自动挂载相关的文件,然后执行该脚本,重启并启用autofs
服务。
-
# 配置 172.25.250.104 主机的 NFS 服务 mkdir /bbs &>> /dev/null chmod 777 /bbs/ echo "/bbs bbs.exam.com(rw)" > /etc/exports systemctl start nfs-server # 启动 NFS 服务 #设置开机自动挂载 grep ^\/dev\/sr0 /etc/fstab &>> /dev/null if [ $? == 1 ] then echo "/dev/sr0 /www/exam/yum iso9660 defaults 0 0" >> /etc/fstab fi echo "开机自动挂载成功" #106主机配置自动挂载 ssh root@172.25.250.106 &>> /dev/null <<EOF2 echo 'grep ^/var/www/html /etc/auto.master &>> /dev/null if [ \$? != 0 ] then echo "/var/www/ /etc/auto.bbs" >> /etc/auto.master echo "html nfs.exam.com:/bbs" > /etc/auto.bbs fi' > xixi.sh bash xixi.sh systemctl restart autofs systemctl enable --now autofs EOF2
配置论坛服务
-
安装
httpd
和php
相关的软件包。 -
将
Discuz_X3.5_SC_UTF8_20230520.zip
复制到/var/www/html
目录。 -
进入该目录并解压压缩包。
-
进入特定目录并修改相关目录的权限。
-
设置
httpd
的相关 SELinux 布尔值,以允许特定的操作。 -
启动、启用并重启
httpd
服务。
#搭建论坛服务器 ssh root@172.25.250.106 &>> /dev/null << EOF1 cp Discuz_X3.5_SC_UTF8_20230520.zip /var/www/html cd /var/www/html unzip Discuz_X3.5_SC_UTF8_20230520.zip &>> /dev/null cd /var/www/html/upload chmod 777 data/ uc_server/ uc_client/ config/ -R setsebool -P httpd_use_nfs 1 systemctl start --now httpd systemctl enable --now httpd systemctl restart httpd EOF1 echo "论坛配置完成"
进入网站配置论坛服务
输入ip地址
172.25.250.106/upload/
点击同意
点击下一步
选择全新安装Discuzl!X(独立模式安装),然后点击下一步
输入数据库服务器的地址,然后输入之前代码配置好的数据库名,然后输入密码,管理员密码随便填,然后点击下一步
安装完成后点击直接访问站点
能够成功进入论坛就表示成功
完整版代码
#!/bin/bash
#ip
nmcli connection modify ens160 ipv4.method manual ipv4.address 172.25.250.101/24 ipv4.gateway 172.25.250.2 ipv4.dns 172.25.250.105
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 c up ens160 &>> /dev/null
if [ $? -eq 0 ]; then
echo "网络配置成功"
else
echo "网络配置失败"
fi
#
ls /etc/yum.repos.d/ | grep rpm.repo &> /dev/null
if [ $? = 0 ];then
echo "已有本地仓库"
else
echo "[baseos]
name=baseos
baseurl=/www/yum/BaseOS
gpgcheck=0
[baseos1]
nmae=baseos
baseurl=/www/yum/AppStream
gpgcheck=0">>/etc/yum.repos.d/rpm.repo
echo "本地仓库完成"
fi
# 安装所需软件包
yum install -y php php-mysqlnd unzip httpd chrony nfs-utils bind vim autofs > /dev/null 2>&1
if [ $? -eq 0 ]; then
echo "软件安装成功"
else
echo "软件安装失败"
fi
#106安装软件
ssh root@172.25.250.106 &>> /dev/null <<EOF1
yum install -y php php-mysqlnd unzip httpd chrony nfs-utils bind vim autofs > /dev/null 2>&1
EOF1
echo "106软件安装成功"
# 配置防火墙规则
firewall-cmd --permanent --add-service=http > /dev/null 2>&1
firewall-cmd --permanent --add-service=dns > /dev/null 2>&1
firewall-cmd --permanent --add-service=nfs > /dev/null 2>&1
firewall-cmd --permanent --add-service=mountd > /dev/null 2>&1
firewall-cmd --permanent --add-service=rpc-bind > /dev/null 2>&1
firewall-cmd --permanent --add-service=mysql > /dev/null 2>&1
firewall-cmd --permanent --add-service=ntp > /dev/null 2>&1
firewall-cmd --reload > /dev/null 2>&1
if [ $? -eq 0 ]; then
echo "防火墙已放行"
else
echo "防火墙放行操作失败"
fi
# 配置106防火墙规则
ssh root@172.25.250.106 &>> /dev/null <<EOF1
firewall-cmd --permanent --add-service=http > /dev/null 2>&1
firewall-cmd --permanent --add-service=dns > /dev/null 2>&1
firewall-cmd --permanent --add-service=nfs > /dev/null 2>&1
firewall-cmd --permanent --add-service=mountd > /dev/null 2>&1
firewall-cmd --permanent --add-service=rpc-bind > /dev/null 2>&1
firewall-cmd --permanent --add-service=mysql > /dev/null 2>&1
firewall-cmd --permanent --add-service=ntp > /dev/null 2>&1
firewall-cmd --reload > /dev/null 2>&1
EOF1
echo "106防火墙已放行"
# 配置 SELinux
setsebool -P httpd_can_network_connect_db 1
# 配置106 SELinux
ssh root@172.25.250.106 &>> /dev/null <<EOF1
etsebool -P httpd_can_network_connect_db 1
EOF1
# 配置Web 服务
echo "<Directory /www >" > /etc/httpd/conf.d/vhost.conf
echo "AllowOverride None" >> /etc/httpd/conf.d/vhost.conf
echo "Require all granted" >> /etc/httpd/conf.d/vhost.conf
echo "</Directory>" >> /etc/httpd/conf.d/vhost.conf
echo "<VirtualHost 172.25.250.101:80>" >> /etc/httpd/conf.d/vhost.conf
echo "DocumentRoot /www/exam" >> /etc/httpd/conf.d/vhost.conf
echo "ServerName www.exam.com" >> /etc/httpd/conf.d/vhost.conf
echo "</VirtualHost>" >> /etc/httpd/conf.d/vhost.conf
mkdir -p /www/exam/ > /dev/null 2>&1
touch /www/exam/index.html
echo "Hello,Welcome to www.exam.com!" > /www/exam/index.html
chcon -t httpd_sys_content_t /www/exam/index.html -R
cp /etc/hosts /etc/hosts.bak
original_content=$(cat /etc/hosts)
# 拼接新的内容
new_content="$original_content
172.25.250.101 www.exam.com
172.25.250.101 content.exam.com"
# 将新内容写入文件
echo "$new_content" > /etc/hosts
systemctl enable httpd > /dev/null 2>&1
systemctl restart httpd
result=$(curl -s "www.exam.com")
if [[ $result == *"Hello,Welcome to www.exam.com!"* ]]; then
echo "web 服务配置成功"
else
echo "web 服务配置失败"
fi
#配置网络仓库
cp /etc/yum.repos.d/rpm.repo /etc/yum.repos.d/rpm.repo.bak # 备份原文件
> /etc/yum.repos.d/rpm.repo # 删除原文件内容
cat <<EOF > /etc/yum.repos.d/rpm.repo
[baseos]
name=baseos
baseurl=http://content.exam.com/yum/BaseOS
gpgcheck=0
[appstream]
name=appstream
baseurl=http://content.exam.com/yum/AppStream
gpgcheck=0
EOF
mkdir -p /www/exam > /dev/null 2>&1 # 创建目录
mkdir -p /www/exam/yum
mount /dev/sr0 /www/exam/yum > /dev/null 2>&1 # 执行挂载
yum repolist > /dev/null 2>&1 # 测试下载
if [ $? -eq 0 ]; then
echo "网络仓库配置成功"
else
echo "网络仓库配置失败"
fi
#配置主机106的仓库
ssh root@172.25.250.106 &>> /dev/null <<EOF2
ls /etc/yum.repos.d/ | grep rpm.repo &>> /dev/null
if [ $? == 1 ]
then
touch /etc/yum.repo.d/rpm.repo
fi
echo "[baseos]
name=baseos
baseurl=http://content.exam.com/yum/BaseOS
gpgcheck=0
[appstream]
name=appstream
baseurl=http://content.exam.com/yum/AppStream
gpgcheck=0" > /etc/yum.repos.d/rpm.repo
exit
EOF2
echo "106仓库配置成功"
# 配置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.fanxiang";
};
EOF
cat <<EOF > /var/named/named.exam
\$TTL 1d
@ IN SOA @ admin.exam.com. (
0
5
3
10
15 )
IN NS dns.exam.com.
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
cat <<EOF1 > /var/named/named.fanxiang
\$TTL 1d
@ IN SOA @ admin.exam.com. (
0
5
3
10
15 )
IN NS dns.exam.com.
101 IN PTR content.exam.com.
101 IN PTR www.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.
EOF1
systemctl restart named
systemctl enable named > /dev/null 2>&1
result=$(dig -t A www.exam.com )
if [[ $result == *"NOERROR"* ]]; then
echo "DNS服务配置成功"
else
echo "DNS服务配置失败"
fi
# 配置NTP服务
#echo "进入servera中配置Chrony 服务" # 配置 172.25.250.102 主机
sed -i '27a\allow 172.25.250.0/24' /etc/chrony.conf
sed -i '30a\local stratum 3' /etc/chrony.conf
sed -i '52c\log measurements statistics tracking' /etc/chrony.conf
systemctl restart chronyd
systemctl enable chronyd > /dev/null 2>&1
#echo "进入serverb中配置Chrony服务" # 配置 172.25.250.106 主机
ssh root@172.25.250.106 &>> /dev/null << EOF1
sed -i '3c\server ntp.exam.com iburst' /etc/chrony.conf
systemctl enable chronyd > /dev/null 2>&1
systemctl restart chronyd
if [ $? = 0 ];then
echo "Chronyd服务成功运行"
else
echo "NTP已配置,无需重复配置"
fi
EOF1
# 配置MySQL 服务
yum install mysql-server -y > /dev/null 2>&1 # 执行 yum 安装命令,并将输出重定向到黑洞
systemctl start mysqld #启动MySQL服务
mysql &>> /dev/null << EOF2
alter user 'root'@'localhost' identified with mysql_native_password by 'redhat' ;
create database bbs;
update mysql.user set host='%' where user='root';
flush privileges;
EOF2
systemctl enable mysqld > /dev/null 2>&1
systemctl restart mysqld
# 通过 SSH 免密登录到 172.25.250.106 进行操作
ssh root@172.25.250.106 &>> /dev/null <<EOF3
yum install mysql-server -y &>> /dev/null
systemctl enable mysqld > /dev/null 2>&1
systemctl restart mysqld
EOF3
if [ $? = 0 ]; then
echo "MySQL服务配置成功"
else
echo "MySQL服务配置失败"
fi
systemctl enable mysqld
systemctl restart mysqld
# 配置 172.25.250.104 主机的 NFS 服务
mkdir /bbs &>> /dev/null
chmod 777 /bbs/
echo "/bbs bbs.exam.com(rw)" > /etc/exports
systemctl start nfs-server # 启动 NFS 服务
echo "NFS配置成功"
#设置开机自动挂载
grep ^\/dev\/sr0 /etc/fstab &>> /dev/null
if [ $? == 1 ]
then
echo "/dev/sr0 /www/exam/yum iso9660 defaults 0 0" >> /etc/fstab
fi
echo "开机自动挂载成功"
#106主机配置自动挂载
ssh root@172.25.250.106 &>> /dev/null <<EOF2
echo 'grep ^/var/www/html /etc/auto.master &>> /dev/null
if [ \$? != 0 ]
then
echo "/var/www/ /etc/auto.bbs" >> /etc/auto.master
echo "html nfs.exam.com:/bbs" > /etc/auto.bbs
fi' > xixi.sh
bash xixi.sh
systemctl restart autofs
systemctl enable --now autofs
EOF2
#搭建论坛服务器
ssh root@172.25.250.106 &>> /dev/null << EOF1
yum install httpd php* -y &>> /dev/null
cp Discuz_X3.5_SC_UTF8_20230520.zip /var/www/html
cd /var/www/html
unzip Discuz_X3.5_SC_UTF8_20230520.zip &>> /dev/null
cd /var/www/html/upload
chmod 777 data/ uc_server/ uc_client/ config/ -R
setsebool -P httpd_use_nfs 1
setsebool -P httpd_can_network_connect_db 1
systemctl start --now httpd
systemctl enable --now httpd
systemctl restart httpd
EOF1
echo "论坛配置完成"
运行结果展示