一、设计目的
1)熟练掌握RHEL8的网络配置及VMWare的网络环境配置;
2)熟练掌握软件包的安装管理;
3)熟练掌握目录、文件权限的配置;
4)熟练掌握网络应用服务的搭建和错误排查。
二、设计要求
如上图所示,需配置3台RHEL8的服务器(建议虚拟机内存设置为1G)
1)Server A网卡1连接到互联网(虚拟机中可使用Nat);
2)Server A网卡2和Server B、Server C连接在同一内网(同一LAN区段),配置ip地址段为192.168.X.0/24(X为自己学号后3位);
3)Server A配置为反向代理服务器,真实主机可以通过Server A访问Server B和Server C上构建的网站,反向代理服务器软件不限(建议使用Nginx);
4)Server A配置为负载均衡服务器,访问流量能在Server B和Server C上进行均衡,负载均衡软件不限(建议使用Nginx);
5)Server A配置为DNS服务器,域为 abc.com(abc为自己的姓名首字母),配置完成后,用nslookup进行正向和反向解析的校验;
6)ServerB和Server C配置Apache+Mysql+PHP,在Mysql中任意建一张表,首页文件显示查询该表的内容(Server B和Server C表内容需不一致,以示区别);
7)Server B和Server C需配置数据库管理软件(如phpmyadmin)。
三、软硬件实验环境(除了RHEL 8,其他版本可以不一样)
RHEL 8;
Server version: Apache/2.4.37 (centos)
mysql Ver 8.0.26 for Linux on x86_64 (Source distribution)
PHP 7.2.24
Adminer version 4.8.1
nginx version: nginx/1.14.1
BIND 9.11.26-RedHat-9.11.26-6.el8
四、设计步骤和调试过程
注:本次步骤我们分为三大块进行,也就是1)2)、3)4)5)6)、7)三大块
第一块
1)Server A网卡1连接到互联网(虚拟机中可使用Nat);
2)Server A网卡2和Server B、Server C连接在同一内网(同一LAN区段),配置ip地址段为192.168.X.0/24(X为自己学号后3位);
说明
这里三台服务器的网络模式全部设置为NAT模式,即使三台服务器全部设置为NAT模式也不影响他们属于一个内网!!!并且他们三个又都能访问外网,这样在校园网的环境中比较方便实验,如果改为桥接模式,那么每换一个虚拟机上网就得重新认证一次(而且可能还存在NAC根本上不了网),而NAT模式只需要物理机认证即可,因为所有的IP最终经过NAT网关都转为了物理机的以太网网卡的IP(如果你接的是WIFI那就是WLAN网卡);我们画出全部使用NAT之后的拓扑图,就如下(交换机和路由器为虚拟机虚拟出来的设备):
接下来我们将逐个讲解配置:
NAT网关配置
三台Server的IP配置方法
vim /etc/sysconfig/network-script/ifcfg-ens160
进入配置文件,文件配置如下(三台设备除了IP其他配置一样,不再赘述)
输入systemctl restart NetworkManager
和sudo nmcli connection up ens160
重启网卡,使得配置生效
并且还得确认虚拟机使用的是NAT的网络模式
物理机的VM8网卡设置
以太网网卡设置
默认都为DHCP,不需要特别设置,想要查看IP的话,可以WINDOWS+R
输入cmd
后再输入ipconfig
查看
验证配置方式:
- 1)Server A网卡1连接到互联网(虚拟机中可使用Nat);
该网卡配置就是以太网网卡的配置,查看方法就在上面- 2)Server A网卡2和Server B、Server C连接在同一内网(同一LAN区段),配置ip地址段为192.168.X.0/24>(X为自己学号后3位);
逐个服务器输入ifconfig
,或者vim /etc/sysconfig/network-script/ifcfg-ens160
查看,都可以
第二块
3)Server A配置为反向代理服务器,真实主机可以通过Server A访问Server B和Server C上构建的网站,反向代理服务器软件不限(建议使用Nginx);
4)Server A配置为负载均衡服务器,访问流量能在Server B和Server C上进行均衡,负载均衡软件不限(建议使用Nginx);
5)ServerB和Server C配置Apache+Mysql+PHP,在Mysql中任意建一张表,首页文件显示查询该表的内容(Server B和Server C表内容需不一致,以示区别);
6)Server B和Server C需配置数据库管理软件(如phpmyadmin)。
- 说明:
在进行配置之前,需要我们三台服务器都能正常上网,按照前面的网络进行配置,应该是没有问题的,要是有问题可以留言评论区;除了能正常上网之外,还需要安装一个库,三个服务器都要装;
依次输入:
sudo dnf install --nogpgcheck https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
sudo dnf install --nogpgcheck https://downloadl. rpmfusion.org/free/el/rpmfusion-free-release-8.noarch.rpm
接下来进行正式配置
- Server A配置
关闭安全相关功能(以后重启后记得还得关闭)
setenforce 0
暂时关闭安全
systemctl stop firewlald
暂时关闭防火墙
systemctl stop firewlald
永久关闭防火墙
可以使用getenforce
以及systemctl status firewalld
查看是否正确关闭
安装Nginx
yum -y install nginx
启动nginx并且设置为开机自启
systemctl start nginx
systemctl enable nginx
设置Nginx的配置文件实现负载均衡
vim /etc/nginx/nginx.conf
- Server B和Server C配置
注意,B和C也得先安装前面那个包,不再赘述,且B和C的配置类似
安装Apache以及开发工具包
yum -y install httpd
以及yum -y install httpd-devel
启动Apache并且设置开机自启
systemctl start httpd
以及systemctl enable httpd
物理机(物理防火墙要关闭)访问启动了Apache的虚拟机的IP地址验证
安装Mysql且配置账号
yum -y install mysql-server.x86_64
启动Mysql并且设置开机自启
systemctl start mysqld.service
以及systemctl enable mysqld.service
Mysql添加账号
使用创建账号登录
安装PHP以及PHP-Mysql交互组件
yum -y install php
yum -y install php-mysqlnd.x86_64
安装数据库管理软件 adminer
cd /var/www/html
sudo wget "http://www.adminer.org/latest.php" -O adminer.php
给adminer权限
Chmod -R 777 /var/www/html/adminer.php
通过adminer管理数据库
访问管理页面(输入的IP为本机apache的IP)
登录数据库
登录成功
创建数据库test
创建表test以及字段show
新建数据
注:Sever B和Server C除了新建数据不同以外
(Server B的新建数据事例: This_is_192.168.23.3 Server C的新建数据事例: This_is_192.168.23.4),其他的adminer配置方式两者一样不赘述;
Server B和C编写PHP页面
vim /var/www/html/test.php
文本内容如下(为了防止课设查重,你可以把这个文本复制到GPT如通义千问,让他生成一个类似的而不是照搬)
<?php
// 数据库连接参数
$host = 'localhost';
$username = 'root';
$password = 'lsx8876099';
$dbname = 'test';
// 创建与数据库的连接
$conn = new mysqli($host, $username, $password, $dbname);
// 检查连接
if ($conn->connect_error) {
die("连接失败: " . $conn->connect_error);
}
// SQL 查询,从 'test' 表中获取 'show' 字段的所有数据
$sql = "SELECT `show` FROM `test`";
$result = $conn->query($sql);
// 检查并显示查询结果
if ($result->num_rows > 0) {
// 输出每一行数据
while($row = $result->fetch_assoc()) {
echo "Show Field Value: " . $row["show"]. "<br>";
}
} else {
echo "0 结果";
}
// 关闭连接
$conn->close();
?>
然后给该文件权限
Chmod -R 777 /var/www/html/test.php
验证配置方式:
在物理机的浏览器输入192.168.23.2/test.php
(前面IP为ServerA的IP),成功显示之后按刷新键,可以发现页面出现变化
说明:物理机(物理防火墙要关闭)访问反向解析服务器IP,每次访问都会显示不一样的结果,说明
A、反向解析实现
B、负载均衡实现
C、LAMP架构正常工作
D、PHP页面编写正确,且数据库正常工作返回结果正确
第三块
7)Server A配置为DNS服务器,域为 abc.com(abc为自己的姓名首字母),配置完成后,用nslookup进行正向和反向解析的校验;
安装Bind服务
yum -y install bind
修改主配置文件
vim /etc/named.conf
修改子配置文件
vim /etc/named.rfc1912.zones
创建区域文件(拷贝模版文件进行修改,注意com后面有个“.”,不要忘记写!!!)
建立正向解析文件
cp -p /var/named/named.localhost /var/named/ly.zone
vim /var/named/ly.zone
建立反向解析文件
cp -p /var/named/named.localhost /var/named/23.168.192.rs.zone
vim /var/named/23.168.192.rs.zone
检测文件语法是否有错误(均检测通过,有错再认真核对一下,注意不要漏了“.”,还不行黏贴到通义千问)
named-checkconf /etc/name.conf
named-checkconf /etc/named.rfc.zones
cd /var/named
//由于下面两个检测需要再/var/named下进行,所以不能省略
named-checkzone ly.zone ly.zone
named-checkzone 23.168.192.rs.zone 23.168.192.rs.zone
全部通过如下
为文件授权
chmod -R 777 /var/named/ly.zone
chmod -R 777 /var/named/23.168.192.rs.zone
开启DNS服务并且设置开机自启
systemctl start named
systemctl enable named
Server B和Server C修改DNS为Server A的IP地址(怎么修改第一块有,不赘述)
修改后如下
验证
在修改了DNS后的Server上进行,如Server B
说明
A、正向和反向解析都成功,DNS服务器运行正常
五、注意点
1、phpmyadmin笔者也试着安装过,但是尝试了半天收效甚微,所以改用adminer,这个安装快,省事,即装即用,强推!
2、如果出现问题,很可能就是服务没有启用,或者防火墙以及安全功能没关,以及文件没有授权,请逐个排查
systemctl status named
检测DNS是否正常
systemctl status httpd
检测Apache是否正常
systemctl status nginx
检测nginx是否正常
systemctl status mysqld.service
检测数据库是否正常
getenforce
检测安全功能是否关闭
setenforce 0
关暂时闭安全功能(重启后就得重新输入)
systemctl status firewalld
检测防火墙是否关闭
systemctl stop firewalld
暂时关闭防火墙
systemctl disable firewalld
永久关闭防火墙
Linux都学一学期了,systemctl status/stop/start/restart/disable/enable 服务名
这种格式应该不用我说吧(狗头)
chmod -R 777 文件路径
这样可以直接给沿途的所有文件和目录加权限比较方便
3、如果学弟学妹走的是网络方向(和我一样哈哈哈),还是建议好好学Linux,毕竟网络计算存储三个东西,作为网工除了要掌握网络外至少还得掌握一个,而Linux就是计算;同时这个课程设计,能帮助我们理解反向代理和负载均衡的原理,以及LAMP架构(Linux、Apache、Mysql、PHP)这些东西其实在现网中是非常常用的;而且,就算只是会Linux网卡的配置,我们比起没学过Linux的同学也是遥遥领先了;
4、最后,如果有啥问题,都可以评论区留言,我有空会回,冲冲冲!!!点点关注不迷路哈;