目录
需求
环境拓扑结构
主机环境描述
需求具体描述
基本环境配置
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 的论坛服务 |
需求具体描述
基本环境配置
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客户端测试
论坛测试
填写数据库地址和先前授权的用户和密码
实验圆满结束:)