网络服务综合项目(一键部署shell脚本)

news2024/9/21 8:01:22

目录

需求:

主机环境描述

注意:

项目需求:

代码讲解

配置本地仓库

安装软件包

配置防火墙

配置策略中的一个布尔值

配置web服务

配置网络仓库

配置DNS服务

配置NTP服务

配置MySQL服务

配置NFS服务

配置论坛服务

进入网站配置论坛服务

完整版代码


需求:

主机环境描述

主机名主机地址需要提供的服务
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.example.com172.25.250.104提供基于 NFS 的网络文件系统服务
dns.exam.com 172.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 服务器进行提供。

项目需求:

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服务

  1. 首先向 /etc/httpd/conf.d/vhost.conf 文件中写入一些配置信息。

  2. 创建 /www/exam/ 目录,并创建 index.html 文件,写入网页的内容。

  3. 修改 index.html 文件的 SELinux 上下文类型。

  4. 备份 /etc/hosts 文件,然后在原内容基础上添加新的主机名和 IP 地址的映射。

  5. 启用 httpd 服务并重启。

  6. 最后使用 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
​

配置网络仓库

  1. 首先对本地的 /etc/yum.repos.d/rpm.repo 文件进行备份,然后清空其内容,并写入新的仓库配置信息。

  2. 创建相关目录,并尝试挂载设备。

  3. 通过 yum repolist 命令测试本地仓库配置是否成功,并给出相应的提示。

  4. 使用 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服务

  1. 配置主 DNS 服务器(172.25.250.105)的 named.conf 配置文件,指定了监听端口和区域信息。

  2. 分别为正向解析区域 exam.com 和反向解析区域 250.25.172.in-addr.arpa 生成了相应的解析记录文件。

  3. 重启并启用 named 服务。

  4. 对于从 DNS 服务器(172.25.250.106),通过 ssh 远程操作,设置了其 named.conf 配置文件。

  5. 最后通过 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服务

  1. 在主机 172.25.250.102 上: - 使用 sed 命令修改 /etc/chrony.conf 配置文件,允许特定网段(172.25.250.0/24)的访问,设置本地层级为 3,并修改日志相关的配置。 - 重启 chronyd 服务并设置其开机自启。

  2. 在主机 172.25.250.106 上: - 通过 ssh 远程连接,并使用 sed 命令修改 /etc/chrony.conf 配置文件,指定 NTP 服务器为 ntp.exam.com 并设置相关参数。 - 重启 chronyd 服务并设置其开机自启。 - 远程执行 chronyc sources 命令获取结果,并将返回值存储在 result 变量中。

  3. 根据 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服务

  1. 首先使用 yum 命令安装 mysql-server,并将安装过程中的输出重定向到 /dev/null 以隐藏输出。

  2. 启动 MySQL 服务。

  3. 以 root 用户登录 MySQL 执行一系列操作,包括修改 root 用户在本地的密码、创建数据库 bbs、更新 root 用户的主机权限以及刷新权限。

  4. 启用 MySQL 服务并重启。

  5. 通过 SSH 免密登录到 172.25.250.106 执行相同的安装、启用和重启 MySQL 服务的操作。

  6. 最后通过检查 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服务

  1. 172.25.250.104 主机上:

    • 创建 /bbs 目录并设置权限。

    • 配置 /etc/exports 文件以共享 /bbs 目录。

    • 启动 NFS 服务。

    • 检查 /etc/fstab 中是否有关于 /dev/sr0 的挂载配置,如果没有则添加。

  2. 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

配置论坛服务

  1. 安装 httpdphp 相关的软件包。

  2. Discuz_X3.5_SC_UTF8_20230520.zip 复制到 /var/www/html 目录。

  3. 进入该目录并解压压缩包。

  4. 进入特定目录并修改相关目录的权限。

  5. 设置 httpd 的相关 SELinux 布尔值,以允许特定的操作。

  6. 启动、启用并重启 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 "论坛配置完成"

运行结果展示

 


                

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1953278.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数据结构(稀疏数组)

简介 稀疏数组是一种数据结构&#xff0c;用于有效地存储和处理那些大多数元素都是零或者重复值的数组。在稀疏数组中&#xff0c;只有非零或非重复的元素会被存储&#xff0c;从而节省内存空间。 案例引入 假如想把下面这张表存入文件&#xff0c;我们会怎么做&#xff1f;…

C语言字符函数与字符串函数超详解

文章目录 前言1. 字符分类函数2. 字符转换函数3. strlen3. 1 strlen 的使用3. 2 strlen 的模拟实现 4. strcpy4. 1 strcpy 的使用4. 2 strcpy 的模拟实现 5. strcat5. 1 strcat 的使用5. 2 strcat 的模拟实现 6. strcmp6. 1 strcmp 的使用6. 2 strcmp 的模拟实现 7. strncpy 函…

如何获得某个Window画面所属包名packageName和用户userId

在安卓上获得某个Window画面所属包名packageName和用户userId的方法 1&#xff0c;用到的工具如下&#xff1a; adb androidSDK里的monitor工具 adb shell dumpsys window animator adb shell dumpsys window命令 jdk 1.8已在安卓14模拟器上测试通过。 以AOSP的launcher中的m…

Nacos适配达梦数据库并制作镜像

背景&#xff1a;因项目需要信创&#xff0c;需将原本的mysql数据库&#xff0c;改成达梦数据库 一、部署达梦数据库 1.1 部署达梦数据库服务 可参考&#xff1a;Docker安装达梦数据库_达梦数据库docker镜像-CSDN博客 1.2 创建nacos数据库 create user SAFE_NACOS identifi…

pythonGame-实现简单的贪食蛇游戏

通过python简单复现贪食蛇游戏。 使用到的库函数&#xff1a; import pygame import time import random 游戏源码&#xff1a; import pygame import time import randompygame.init()white (255, 255, 255) yellow (255, 255, 102) black (0, 0, 0) red (213, 50, 80…

【秋招突围】2024届秋招笔试-美团笔试题-第一套-三语言题解(Java/Cpp/Python)

🍭 大家好这里是清隆学长 ,一枚热爱算法的程序员 ✨ 本系列打算持续跟新 美团 春秋招笔试题**汇总~ 👏 感谢大家的订阅➕ 和 喜欢💗 01.LYA 的音乐播放列表 问题描述 LYA 有一个包含 n n n 首歌曲的音乐播放列表,歌曲编号从 1 1

护网紧急情况应对指南:Linux 应急响应手册

继上一篇&#xff1a;护网紧急情况应对指南&#xff1a;Windows版v1.2全新升级版 之后 收到小伙伴后台要Linux应急手册&#xff0c;今天给大家安排上。 《Linux应急手册》是一本为Linux系统管理员和运维工程师量身打造的实用指南&#xff0c;旨在帮助他们快速应对各种突发状况…

电测量数据交换DLMSCOSEM组件第10部分:智能测量标准化框架

1.GB/T 17215.6XY系列 IEC 62056 DLMS/COSEM组件标准已经由IEC/TC 13完成制定,用于电测量的目的。有些标准——特别是COSEM数据模型——也已经被其他非电量测量的技术委员会使用。IEC62056-X-Y系列标准对应转换国标GB/T 17215.6XY系列(电测量数据交换DLMSCOSEM组件)。如下图…

Electron的入门介绍与使用(1)共30节

Electron是一个使用 JavaScript、HTML 和 CSS 构建桌面应用程序的框架。 嵌入 Chromium 和 Node.js 到 二进制的 Electron 允许您保持一个 JavaScript 代码代码库并创建 在Windows上运行的跨平台应用 macOS和Linux——不需要本地开发 经验。 入门指南​ Electron 是网页应用 …

repo 工具安装和使用教程(windows+gitee)

repo是什么 官方的定义&#xff1a;Repo是谷歌用python脚本写的调用git的一个脚本&#xff0c;可以实现管理多个git库。 Android的源代码使用Repo 命令行工具来管理多个git仓库&#xff0c;大概有百多个。要想克隆和管理百多个 Git 仓库&#xff0c;不是一件简单的事情。Repo 命…

Java集合——HashMap的底层实现

HashMap将数据以键值对的形式存储&#xff0c;是线程不安全的&#xff08;即在多线程中若不用concurrentHashMap会导致结果错误&#xff09;。 // concurrentHashMap编程示例 import java.util.Map; import java.util.concurrent.ConcurrentHashMap;public class HashMapThrea…

快手电商Android一面凉经(2024)

快手电商Android一面凉经(2024) 笔者作为一名双非二本毕业7年老Android, 最近面试了不少公司, 目前已告一段落, 整理一下各家的面试问题, 打算陆续发布出来, 供有缘人参考。今天给大家带来的是《快手电商Android一面凉经(2024)》。 面试职位: Android工程师 技术一面 面试形式…

新手小白的pytorch学习第十四弹------十一、十二、十三弹卷积神经网络CNN的习题

习题编号目录 No 1No 2No 3No 4No 5No 6No 7No 8No 9No 10No 11No 12No 13 练习题主要就是 写代码&#xff0c;所以这篇文章大部分是代码哟~ No 1 What are 3 areas in industry where computer vision is currently being used? No 2 工业异常检测&#xff0c;目标检测 Sea…

C语言 -- sizeof和strlen的用法

C语言 -- sizeof和strlen的用法 1. sizeof和strlen的对比​1.1 sizeof​1.2 strlen​1.3 sizeof 和 strlen的对比​ 2. 数组和指针笔试题解析2.1 一维数组​2.2 字符数组​2.3 二维数组 3. 指针运算笔试题解析3.1 题目1&#xff1a;3.2 题目2​3.3 题目3​3.4 题目4​3.5 题目5…

力扣高频SQL 50题(基础版)第十九题

文章目录 力扣高频SQL 50题&#xff08;基础版&#xff09;第十九题1211. 查询结果的质量和占比题目说明思路分析实现过程准备数据实现方式结果截图 力扣高频SQL 50题&#xff08;基础版&#xff09;第十九题 1211. 查询结果的质量和占比 题目说明 Queries 表&#xff1a; …

学习c语言第十五天(初阶测评)

选择题 1.下列程序输出结果为 67 2.下列程序输出结果为 死循环打印 3.i 和j的值分别为什么 2 1 4.k的终值是什么 90 5.输出结果是什么 1 6.正确的是 C 7. C语言规定main函数位置 C 8.不正确的是 D 9.正确的是 c 库函数独立c语言之外 10…

comsol在静水压力下的地应力平衡

comsol在静水压力下的地应力平衡 条件: 水深3m,粗砂层厚度10m,模型长度100m土体的饱和密度1950kg/m3水的密度1000kg/m3浮重度 γ ′ = γ s a t − γ w \gamma=\gamma_{sat}-\gamma_w γ

GD32 PWM输入捕获

前言 通过本次的学习&#xff0c;了解定时器的分类和配置&#xff0c;高级定时器&#xff0c;通用定时器等不同等级的定时器拥有的功能&#xff0c;学习定时器的输入捕获与输出比较功能&#xff08;PWM&#xff09;脉冲宽度调制&#xff0c;来控制电机等外设。 定义 定时器的分…

Pytorch学习笔记——在GPU上进行训练

文章目录 1. 环境准备2. 导入必要库3. 加载数据集4. 定义简单的神经网络模型5. 检查和设置GPU设备6. 定义损失函数和优化器7. 训练模型8. 全部代码展示及运行结果 1. 环境准备 首先&#xff0c;确保PyTorch已经安装&#xff0c;且CUDA&#xff08;NVIDIA的并行计算平台和编程模…

go-kratos 学习笔记(6) 数据库gorm使用

数据库是项目的核心&#xff0c;数据库的链接数据是data层的操作&#xff0c;选择了比较简单好用的gorm作为数据库的工具&#xff1b;之前是PHP开发&#xff0c;各种框架都是orm的操作&#xff1b;gorm还是很相似的&#xff0c;使用起来比较顺手 go-kratos官网的实例是ent&…