运用rhce知识搭建论坛(结合web、nfs、dns、ntp、mysql)

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.

原因:

进程正在执行一个耗时的任务,如大数据处理、文件传输或复杂的计算。

进程可能因某种原因(如等待用户输入、等待外部资源如网络或数据库响应)而挂起。

进程可能遇到了错误或异常,但尚未处理完毕或未能正常退出。

解决: 在虚拟机上断开一下并重新连接一下光盘  采取直接杀死这个进程的方式

建议分每个服务单独写脚本进行逐一排错并运行  最后再整合成一个大脚本 不然很容易报超级多错

最后运行界面如下就是成功啦!

希望大家可以运行出成功的结果 耶耶耶!!!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值