shell脚本实验

环境拓扑结构主机环境描述

需求描述
项目需求:
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
nmcli connection modify ens160 ipv4.addresses 172.25.250.101/24
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 modify ens160 ipv4.gateway 172.25.250.102
nmcli connection modify ens160 ipv4.dns 172.25.250.102
nmcli connection modify ens160 ipv4.method manual
nmcli connection modify ens160 connection.autoconnect yes

nmcli connection  up ens160

severb

nmcli connection modify ens160 ipv4.addresses 172.25.250.106
nmcli connection modidy ens160 ipv4.gateway 172.25.250.102
nmcli connection modify ens160 ipv4.dns 172.25.25.105

nmcli connection modify ens160 ipv4.method manual
nmcli connection modify ens160  connection.autoconnect yes
nmcli connection up ens160

配置ssh免密

servera 
ssh-keygen
ssh-copy-id root@172.25.250.106
ssh-copy-id root@172.25.250.101

serverb
ssh-keygen
ssh-copy-id root@172.25.25.101
ssh-copy-id root@172.25.25.106

简单的脚本


#!/bin/bash
mount /dev/sr0 /mnt

dnf install bind -y 

 firewall-cmd --permanent --add-service=dns

 firewall-cmd --reload

systemctl start named

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
						1
						1
						1
						1 )
	IN	NS ns.exam.com.
ns	IN	A  172.25.250.101
dns	IN   	A  172.25.250.105
content	IN	A  172.25.250.101
www	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
echo '$TTL 1D
@       IN              SOA     @       admin.exam.com. (
                                        2024070602
                                        1
                                        1
                                        1
                                        1 )
         IN      NS      ns.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.'  > /var/named/named.fanxiang

systemctl restart named
systemctl enable named

dnf install httpd -y
systemctl start httpd
umount /mnt
mkdir  -p /www/yum
mount /dev/sr0  /www/yum
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
sed -i '/^#.#ServerName/c\ServerName www.example.com:80' /etc/httpd/conf/httpd.conf
echo "Hello,Welcome to www.exam.com!" > /www/index.html
echo '<directory /www>
options indexes followsymlinks
allowoverride none
require all granted
</directory>
<virtualhost 172.25.250.101:80>
ServerName www.exam.com
documentroot /www
</virtualhost>  ' > /etc/httpd/conf.d/host.conf
      chcon -t httpd_sys_content_t   /www/* 



firewall-cmd --permanent  --add-service=http
firewall-cmd --reload

systemctl restart httpd

curl www.exam.com

dnf install chrony -y
sed -i '/^#allow 192.168.0.0\/16$/c\allow 172.25.250.0/24'  /etc/chrony.conf
sed -i '/^#local stratum 10$/c\local stratum 3'  /etc/chrony.conf
sed -i '/leapsectz right\/UTC/d' /etc/chrony.conf
sed -i '/^#log measurements statistics tracking/c\log measurements statistics tracking'  /etc/chrony.conf
firewall-cmd --permanent --add-service=ntp
firewall-cmd --reload
systemctl restart chronyd
systemctl enable chronyd

ssh root@172.25.250.106  &>> /dev/null << over
sed -i '/pool 2.rhel.pool.ntp.org iburst/c\\server ntp.exam.com iburst' /etc/chrony.conf
systemctl restart chronyd
chronyc sources
over
df -h | grep /mnt &>>/dev/null
if [ $? -eq 0 ];then
	umount /mnt
fi
mount /dev/sr0 /www/yum &>> /dev/null
grep iso9660 /etc/fstab &>> /dev/null
if [ $? != 0 ];then
echo "/dev/sr0 /www/yum iso9660  defaults 0 0" >> /etc/fstab
fi
scp /etc/yum.repos.d/rpm.repo  172.25.250.106:/etc/yum.repos.d/rpm.repo


 
dnf install mysql -y
dnf install mysql-server -y
systemctl start  mysqld
mysql -u root -p <<EOF  
ALTER USER 'root'@'localhost' IDENTIFIED BY 'redhat';  
update mysql.user set host='%' where user='root';
CREATE DATABASE bbs;  

 flush privileges;
EOF
firewall-cmd --permanent --add-service=mysql
firewall-cmd --reload
setsebool -P httpd_use_nfs 1
systemctl enable mysqld &>> /dev/null



dnf install nfs-utils -y

mkdir /bbs
chmod 777 /bbs/
echo '/bbs   bbs.exam.com(rw)' >>/etc/exports
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
systemctl restart named


ssh root@172.25.250.106  &>> /dev/null << over
yum install nfs-utils autofs httpd -y 
cat << EOF > /etc/httpd/conf.d/vhost.conf
<directory /www/bbs>
allowoverride none
require all granted
</directory>
<virtualhost 172.25.250.106:80>
documentroot /www/bbs
servername 172.25.250.106
</virtualhost>
EOF
mkdir  -p /www
mkdir  -p /www/bbs
mount nfs.exam.com:/bbs  /www/bbs  
echo "/www  /etc/auto.nfs" >> /etc/auto.master
echo "bbs nfs.exam.com:/bbs" >> /etc/auto.nfs
systemctl restart autofs
systemctl enable autofs-now &>> /dev/null
over


#配置论坛服务器
echo "客户端正在创建论坛"
ssh root@172.25.250.106  &>> /dev/null << overd
yum install mysql-server -y &>> /dev/null
yum install php php-mysqlnd -y &>> /dev/null
yum install unzip -y &>> /dev/null

cp Discuz_X3.5_SC_UTF8_20230520.zip /www/bbs
cd  /www/bbs
unzip Discuz_X3.5_SC_UTF8_20230520.zip
cd  /www/bbs/upload
chmod 777 data/ uc_server/ uc_client/ config/ -R &> /dev/null


setsebool -P httpd_use_nfs 1
setsebool -P httpd_can_network_connect_db on
systemctl restart httpd

firewall-cmd --permanent --add-service=http &>> /dev/null 
firewall-cmd --reload &>> /dev/null
overd
echo "论坛创建成功,请在windows浏览器输入:172.25.250.106/upload"





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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值