ip配置 配置本地仓库 进行挂载
#!/bin/bash
##配置ip地址
hostnamectl set-hostname servera.exam.com
nmcli connection modify ens33 +ipv4.addresses 172.25.250.101/24
nmcli connection modify ens33 +ipv4.addresses 172.25.250.102/24
nmcli connection modify ens33 +ipv4.addresses 172.25.250.103/24
nmcli connection modify ens33 +ipv4.addresses 172.25.250.104/24
nmcli connection modify ens33 +ipv4.addresses 172.25.250.105/24
nmcli connection modify ens33 ipv4.dns 172.25.250.105 ipv4.method manual connection.autoconnect yes
nmcli connection up ens33
##配置本地仓库
cat > /etc/yum.repos.d/rpm.repo << EOF
[baseos]
name=chengshuyubaseos
baseurl=/mnt/BaseOS
gpgcheck=0
[appstream]
name=chengshuyuappstream
baseurl=/mnt/AppStream
gpgcheck=0
EOF
##挂载仓库
ck_mount=`df -h | grep /dev/sr0 | awk '{print $6}'`
if [ "$ck_mount" = "/mnt" ]; then
echo "mount ok"
elif [ -z "$ck_mount" ]; then
mount /dev/sr0 /mnt
else
umount /dev/sr0
mount /dev/sr0 /mnt
fi
配置dns服务
dnf install bind* -y
dnf repolist
##配置正反向解析
cat > /etc/named.conf <<EOF
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 "fanxiang";
};
EOF
cat > /var/named/named.exam <<EOF
\$TTL 1D
@ IN SOA @ admin.exam.com. (
2024072101
1
1
1
1)
IN NS ns.exam.com.
IN MX 10 mail.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
dns IN A 172.25.250.105
nfs IN A 172.25.250.104
bbs IN A 172.25.250.106
EOF
cat > /var/named/fanxiang <<EOF
\$TTL 1d
@ IN SOA @ admin.exam.com. (
2024072101
1
1
1
1)
IN NS ns.exam.com.
IN MX 10 mail.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.
106 IN PTR bbs.exam.com.
EOF
systemctl enable named --now
firewall_dns=`firewall-cmd --list-services | grep -o dns`
if [ -z $firewall_dns ]; then
firewall-cmd --permanent --add-service=dns
firewall-cmd --reload
else
echo "firewall_dns ok"
fi
配置httpd服务
dnf install httpd -y
dnf install -y vim net-tools bash-com*
if [ -d $/www ];then
echo "/www cunzai!"
else
mkdir /www
fi
mkdir /www/yum -p
cat > /etc/httpd/conf.d/vhost.conf << EOF
<directory /www>
allowoverride none
require all granted
</directory>
<directory /www/yum>
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</directory>
<virtualhost 172.25.250.101:80>
documentroot /www
servername www.exam.com
</virtualhost>
<virtualhost 172.25.250.101:80>
documentroot /www
servername content.exam.com
</virtualhost>
EOF
echo "Hello,Welcome to www.exam.com!" > /www/index.html
systemctl restart httpd
systemctl enable httpd
firewall_http=`firewall-cmd --list-services | grep -o http`
if [ -z $firewall_http ]; then
firewall-cmd --permanent --add-service=http
firewall-cmd --reload
else
echo "firewall_http ok"
fi
##将 /www/index.html 文件的上下文类型标签更改为 httpd_sys_content_t
chcon -t httpd_sys_content_t /www/index.html
##基于网络仓库服务
cat > /etc/yum.repos.d/rpm.repo << EOF
[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
##挂载到/www/yum目录下
yum_mount=`df -h | grep /dev/sr0 | awk '{print $6}'`
if [ $yum_mount = /www/yum ]; then
echo "mount ok"
elif [ -z $yum_mount ]; then
mount /dev/sr0 /www/yum
else
umount /dev/sr0
mount /dev/sr0 /www/yum
fi
配置nfs服务
bbs='/bbs'
if [ -z $bbs ]; then
mkdir /bbs
else
echo "file ok"
fi
dnf install -y nfs-utils
chmod 777 /bbs/
cat > /etc/exports << EOF
/bbs bbs.exam.com(rw)
EOF
systemctl restart nfs-server
systemctl enable nfs-server
firewall_nfs=`firewall-cmd --list-services | grep -o nfs`
if [ -z $firewall_nfs ]; then
firewall-cmd --permanent --add-service=nfs
firewall-cmd --reload
else
echo "firewall_nfs ok"
fi
firewall_mountd=`firewall-cmd --list-services | grep -o mountd`
if [ -z $firewall_mountd ]; then
firewall-cmd --permanent --add-service=mountd
firewall-cmd --reload
else
echo "firewall_mountd ok"
fi
firewall_rpc_bind=`firewall-cmd --list-services | grep -o rpc-bind`
if [ -z $firewall_rpc_bind ]; then
firewall-cmd --permanent --add-service=rpc-bind
firewall-cmd --reload
else
echo "firewall_rpc-bind ok"
fi
dnf install -y unzip
upload=`ls -l | grep upload | awk '{print $9}'`
if [ -z $upload ]; then
unzip /root/Discuz_X3.5_SC_UTF8_20230520.zip
cp -r /root/upload /bbs
else
echo "file ok"
fi
chmod 777 /bbs/* -R
配置mysql服务
##开启服务并放行防火墙
##安装软件包
##在MySQL数据库中设置root用户的密码并检查或创建一个名为bbs的数据库
##实现授予root下的所有数据库和表权限
firewall_mysql=`firewall-cmd --list-services | grep -o mysql`
if [ -z $firewall_mysql ]; then
firewall-cmd --permanent --add-service=mysql
firewall-cmd --reload
else
echo "firewall_mysql ok"
fi
dnf install mariadb* -y
systemctl enable mariadb --now
mysqladmin -u root password "redhat" &>/dev/null
if mysql -u root -predhat -e "USE bbs"; then
echo "database ok"
else
mysql -u root -predhat<<EOF
create database bbs;
grant all privileges on *.* to 'root'@'%' identified by 'redhat';
flush privileges;
EOF
fi
配置ntp服务
##将/etc/chrony.conf中的相关条目进行全局替换
sed -i 's!#allow 192.168.0.0/16!allow 172.25.250.0/24!g' /etc/chrony.conf
sed -i 's!#local stratum 10!local stratum 3!g' /etc/chrony.conf
sed -i 's!#pool 2.rhel.pool.ntp.org iburst!server 172.25.250.102 iburst!g' /etc/chrony.conf
systemctl enable chronyd
systemctl restart chronyd
firewall_ntp=`firewall-cmd --list-services | grep -o ntp`
if [ -z $firewall_ntp ]; then
firewall-cmd --permanent --add-service=ntp
firewall-cmd --reload
else
echo "firewall_ntp cunzai!"
fi
systemctl restart chronyd
ssh root@172.25.250.106 << EOF
hostnamectl set-hostname serverb.exam.com
nmcli connection modify ens33 +ipv4.addresses 172.25.250.106/24
nmcli connection modify ens33 ipv4.dns 172.25.250.105 ipv4.method manual connection.autoconnect yes
nmcli connection up ens33
sed -i 's/pool pool.ntp.org iburst/server ntp.exam.com iburst/g' /etc/chrony.conf
systemctl restart chronyd
EOF
进行论坛搭建
##进行ip配置 仓库配置 各种软件包的安装 开启各种服务并放行防火墙
ssh root@172.25.250.106 << 'ALLEOF'
cat > /etc/yum.repos.d/rpm.repo << EOF
[baseos]
name=chengshuyubaseos
baseurl=http://content.exam.com/yum/BaseOS
gpgcheck=0
[appstream]
name=chengshuyuappstream
baseurl=http://content.exam.com/yum/AppStream
gpgcheck=0
EOF
dnf install -y httpd php* vim net-tools bash-com*
cat > /etc/httpd/conf.d/vhost.conf << EOF
<directory /www>
allowoverride none
require all granted
</directory>
<virtualhost 172.25.250.106:80>
documentroot /www
servername 172.25.250.106
</virtualhost>
EOF
systemctl start httpd
systemctl enable httpd --now
firewall_http=`firewall-cmd --list-services | grep -o http`
if [ -z $firewall_http ]; then
firewall-cmd --permanent --add-service=http
firewall-cmd --reload
else
echo "firewall_http cunzai!"
fi
if [ -d "/www" ]; then
echo "/www cunzai!"
else
mkdir -p /www/
fi
dnf install -y nfs-utils
systemctl start nfs-server
##进行NFS服务挂载 /bbs挂载到/www下
mount_nfs=`df -h | grep ntp.exam.com:/bbs | awk '{print $6}'`
if [ $mount = /www ]; then
echo "mount_nfs cunzai!"
elif [ -z $mount ]; then
mount ntp.exam.com:/bbs /www/
else
umount ntp.exam.com:/bbs
mount ntp.exam.com:/bbs /www/
fi
##配置开机自动挂载
fstab='nfs.exam.com:/bbs /www iso9660 defaults 0 0'
if grep -qF $fstab /etc/fstab; then
echo "fstab cunzai!"
else
echo "$fstab" >> /etc/fstab ##追加到文件末尾
fi
systemctl enable httpd --now
systemctl enable php-fpm.service --now
setsebool -P httpd_use_nfs 1
setsebool -P httpd_can_network_connect_db on
ALLEOF
我在其中遇见过一些问题 大家可以参考一下
1.语法问题 要仔细检查一下 EOF 或者``号是不是加错了 很容易出现很多比较细的小符号错误
2.压缩包没进行压缩 需要将压缩包拉进虚拟机中 让他存在 (配有压缩包 可以使用)
3.出现了Waiting for process with pid 24537 to finish.
原因:
进程正在执行一个耗时的任务,如大数据处理、文件传输或复杂的计算。
进程可能因某种原因(如等待用户输入、等待外部资源如网络或数据库响应)而挂起。
进程可能遇到了错误或异常,但尚未处理完毕或未能正常退出。
解决: 在虚拟机上断开一下并重新连接一下光盘 采取直接杀死这个进程的方式
建议分每个服务单独写脚本进行逐一排错并运行 最后再整合成一个大脚本 不然很容易报超级多错
最后运行界面如下就是成功啦!
希望大家可以运行出成功的结果 耶耶耶!!!