Web 服务、 Nfs 服务器以及 Dns 服务器综合实验
要求:
1.web 服务的资源文件通过 nfs 服务器共享 www.luntan.com
2.确保所有主机时间同步
3.定义本地 dns 服务器解析 web 主机域名
实验:
主机 | 服务程序 |
192.168.96.142 | dns、nfs |
192.168.96.132 | web |
服务器说明:
设备 | IP |
服务端 | 192.168.96.142 [root@localhost ~] |
客户端 | 192.168.96.132 [root@www ~] |
1.确保所有主机时间同步
① 首先检查 chrony 服务是否已经安装(chrony 是在 linux 系统中用于时间同步的守护进程,可以让系统时钟与网络时间协议(NTP)服务器保持同步);在看到已安装后启动该程序
[root@142 ~]# rpm -qa | grep chrony
chrony-4.5-3.el9.x86_64[root@142 ~]# systemctl start chronyd
② 进入到 chrony 服务配置文件查看指定的 NTP 服务器池
[root@142 ~]# vim /etc/chrony.conf pool 2.rhel.pool.ntp.org iburst
③ 查看 chrony
当前时间源状态,带 * 符号的源表示当前正在使用该服务器进行同步;两个主机的同步的 IP 地址一样说明在 /etc/chrony.conf 中重复配置了 同一个 NTP 服务器
[root@142 ~]# chronyc sourcesMS Name/IP address Stratum Poll Reach LastRx Last sample
===============================================================================
^- time.cloudflare.com 3 9 377 56 +23ms[ +22ms] +/- 242ms
^+ ntp5.flashdance.cx 2 8 377 370 -2762us[-4281us] +/- 108ms
^+ time.cloudflare.com 3 9 377 56 +3249us[+1772us] +/- 106ms
^* 211.68.71.26 3 8 373 25 -12ms[ -13ms] +/- 88ms# MS Name/IP address:① ^:表示该源是 NTP 服务器(server)② -:表示未被合并的源③ +:表示被合并到时间计算中的辅助源④ *:表示当前正在同步的主时间源# Stratum:NTP 服务器的层级,数值越小越接近原子钟(2 比 3更精确)# Poll:轮询间隔的对数(6表示 2^6 = 64 秒)# Reach:可达性寄存器(八进制),记录最近 8 次尝试连接的结果(377 表示连续 8 次成功)# LastRx:上次成功接收数据包的时间(秒)# Last sample:最后一次测量的时间偏移量,格式为 调整后偏移 [原始测量值] +/- 误差估计
[root@132 ~]# chronyc sources
MS Name/IP address Stratum Poll Reach LastRx Last sample
===============================================================================
^- time.cloudflare.com 3 8 377 18 -398us[ -398us] +/- 133ms
^* 211.68.71.26 2 7 377 122 +1913us[+1105us] +/- 104ms
^- time.cloudflare.com 3 8 377 82 +91ms[ +91ms] +/- 198ms
^+ ntp5.flashdance.cx 2 7 377 85 -5186us[-5186us] +/- 119ms
④ 除却 chronyc sources 查看 chrony
当前时间源状态,timedatectl 同样可以管理系统时间和日期,查看和配置系统时钟、时区以及 NTP 同步状态
[root@142 ~]# timedatectlLocal time: 五 2025-05-23 14:28:07 CSTUniversal time: 五 2025-05-23 06:28:07 UTCRTC time: 五 2025-05-23 06:28:08Time zone: Asia/Shanghai (CST, +0800)
System clock synchronized: yes # NTP 同步状态NTP service: active # chrony 或 ntpd 是否运行RTC in local TZ: no # RTC 是否使用本地时区
2.在142主机上实现 dns 以及 nfs 服务程序
DNS
① rpm 查看 dns 服务程序 bind
[root@142 ~]# rpm -qa | grep bind
② 查看后没有 bind 程序包则进行下载
[root@142 ~]# mount /dev/sr0 /mnt # 磁盘挂载[root@142 ~]# vim /etc/yum.repos.d/base.repo # 查看yum源配置是否完整[root@142 ~]# dnf install bind -y # 下载bind程序包
③ 进入到 bind 配置文件并编辑,其次进入到配置文件中资源文件 named.openlab 中设置 132 主机的 luntan.com
[root@142 ~]# vim /etc/named.conf zone "luntan.com" IN {type master;file "named.openlab";
};
[root@142 ~]# vim /var/named/named.openlab$TTL 1D
@ IN SOA @ rname.invalid. (1 ; serial1M ; refresh1M ; retry1M ; expire3M ) ; minimum NS ns.openlab.com.ns A 192.168.96.142www A 192.168.96.132 ; www.luntan.com 192.168.96.132 web服务器主机wwww CNAME wwwftp A 192.168.96.222mail A 192.168.96.100
④ 修改完配置文件后重启服务程序
[root@142 ~]# systemctl restart named
⑤ 在 132 主机进行测试
[root@132 ~]# dig -t A www.luntan.com @192.168.96.142
NFS
① 下载 nfs-utils 程序包
[root@142 ~]# dnf install nfs-utils -y
② 进入到 /etc/exports 配置文件并编辑,其次根据配置文件中设置的创建对应的资源文件
[root@142 ~]# vim /etc/exports
/pub *(rw,sync)# sync:启用同步写入模式;NFS 服务在处理客户端写入请求时,会将数据先写入本地磁盘,再返回确认信息给客户端[root@142 ~]# mkdir /pub
③ 将 Discuz_X3.5_SC_UTF8_20230520 文件(论坛网站开源包文件)传输至 /pub 目录下并进行解压操作
[root@142 ~]# cd /pub[root@142 pub]#
[root@142 pub]# unzip Discuz_X3.5_SC_UTF8_20230520.zip [root@142 pub]# ll
④ 重启 nfs 服务,由于 nfs 服务启动时每次都会通过 rpc 进行端口注册,所以不建议频繁进行重启操作,只需要进行导出操作即可
[root@142 pub]# exportfs -ra
⑤ 将当前主机挂载的文件系统进行查看,但是我们前面下载完 nfs-utils 后没有启动服务程序,所以先启动 nfs-utils ,在进行挂载系统查看
[root@142 ~]# systemctl restart nfs-server.service[root@142 ~]# showmount -e 192.168.96.142
Export list for 192.168.96.142:
/pub *
⑥ 客户端访问服务端共享系统,需要在客户端建立一个挂载点目录,我们创建为 /www‘接着将服务端的共享文件挂载到客户端的 /www 下,挂在后可查看服务端的共享文件内容
[root@132 ~]# dnf install nfs-utils -y[root@132 ~]# mkdir /www[root@132 ~]# mount 192.168.96.142:/pub /www[root@132 ~]# ll /www
3.在132主机上实现 web 服务器
① 下载 nginx 程序包
[root@132 ~]# dnf install nginx -y
② 通过 nfs 解析网站资源路径下的界面信息,需要自定义一个配置文件
[root@132 ~]# vim /etc/nginx/conf.d/luntan.confserver {listen 80;server_name www.luntan.com;root /www/upload/;location ~* \.(jpg|jpeg|png|gif|css|js)$ {#~* 匹配不区分大小写expires 30d; # 设置缓存时间access_log off;}# php-fpm 进程调度器location / {fastcgi_pass unix:/run/php-fpm/www.sock;fastcgi_index index.php;fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;include fastcgi_params;}
}
③ 解析 php 文件还需要下载 php 解析程序
[root@132 ~]# dnf install php* -y
④ 最后安装数据库程序 mariadb-server 并启动
[root@132 ~]# dnf install mariadb-server -y[root@132 ~]# systemctl restart mariadb
⑤ MySQL/MariaDB 提供一个安全配置脚本,用于初始化数据库安全设置;除了要设置密码以外,其余皆可回车
[root@132 ~]# mysql_secure_installation
⑥ 完成之后登录数据库并创建 luntan 的数据库,创建完成后 exit 退出数据库即可
[root@132 ~]# mysql -uroot -pEnter password:
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 13
Server version: 10.5.22-MariaDB MariaDB ServerCopyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.MariaDB [(none)]> create database luntan;
Query OK, 1 row affected (0.000 sec)MariaDB [(none)]> exit;
Bye
⑦ 同时启用并立即启动三个服务:Nginx(Web 服务器)、MariaDB(数据库)和 PHP-FPM(PHP 处理引擎)
[root@132 ~]# systemctl enable nginx mariadb php-fpm --now
Ⅰ.在 Windows 下测试 luntan
① 在 Windows 系统下登录浏览器,在浏览器中输入 linux 系统中的132主机 IP 地址进入到 Discuz! 安装向导(由于在动态网站 LNMP 文章中有完整的安装过程,这里省略安装过程)
进入到安装向导后我们可以看到文件缺失以及权限不够的问题,我们返回到 linux 中解决这两个问题。注意这里的文件是在服务端(142主机)的共享文件中,所以我们需要在服务端(142主机)修改权限等问题!
[root@142 ~]# cd /pub/upload/ # 将路径切换到upload下[root@142 upload]# ll # 查看upload下文件名[root@142 upload]# chmod 777 config data uc_* -R # 修改目录以及该目录下所有文件的权限,以递归的方式
修改完成后返回到 Windows 下刷新页面即可完成检查安装环境
② 安装完成后点击直接访问站点即可进入论坛
Ⅱ.在 Linux 下测试 luntan
① 在132主机客户端修改 dns IP 地址为142主机
[root@132 ~]# vim /etc/resolv.conf # Generated by NetworkManager
search localdomain
nameserver 192.168.96.142
② 进入到浏览器中输入 www.luntan.com 域名即可成功进入到我们的论坛界面,这一步证明我们在142主机配置的 dns 解析没有问题!
相关文章:

Web 服务、 Nfs 服务器以及 Dns 服务器综合实验
要求: 1.web 服务的资源文件通过 nfs 服务器共享 www.luntan.com 2.确保所有主机时间同步 3.定义本地 dns 服务器解析 web 主机域名 实验: 主机服务程序192.168.96.142dns、nfs192.168.96.132web 服务器说明: 设备 IP服务端 192…...
保证数据库 + redis在读写分离场景中事务的一致性
在 Spring Boot 中实现数据库与 Redis 的一致性,特别是处理读写分离时,确保数据修改的事务一致性是一个常见的挑战。因为 Redis 是一个内存数据库,通常用于缓存,而关系型数据库是持久化存储,两者之间的数据同步和一致性…...

汇编语言的子程序魔法:解锁四则运算的奥秘
在嵌入式系统的世界里,汇编语言就像是魔法师手中的魔杖,能够直接操控硬件,实现各种神奇的功能。今天,我将带你走进一场充满乐趣的实验:如何用汇编语言实现四则运算,并将它们封装成子程序。这不仅是一次技术…...

快速解决Linux 中yum镜像拉取失败问题
在linux中使用yum命令拉取镜像的时候,如果出现如下类似报错: 我这里是安装Erlang环境也是同样报错: 其实就是网络环境的问题,更换为国内的镜像源就行了,可以选择cmd的ssh连接方式(命令:ssh root192.168.xxx…...
C#核心概念解析:析构函数、readonly与this关键字
🔍 析构函数:资源清理的最后防线 核心作用 析构函数(~ClassName)在对象销毁前执行,专用于释放非托管资源(如文件句柄、非托管内存)。托管资源(如.NET对象)由GC自动回收…...

HarmonyOS基础组件:Button三种类型的使用
简介 HarmonyOS在明年将正式不再兼容Android原生功能,这意味着对于客户端的小伙伴不得不开始学习HarmonyOS开发语言。本篇文章主要介绍鸿蒙中的Button使用。 HarmonyOS中的Button相较于Android原生来说,功能比较丰富,扩展性高,减…...
深入理解设计模式之适配器模式
深入理解设计模式之适配器模式 1. 适配器模式概述 适配器模式(Adapter Pattern)是一种结构型设计模式,它允许将一个类的接口转换为客户端所期望的另一个接口。适配器模式使得原本由于接口不兼容而不能一起工作的类能够协同工作,扮演了"转换器&quo…...
预训练模型:深度学习的通用特征引擎
预训练模型是深度学习领域的重要技术,其核心思想是通过大规模数据预先学习通用特征,再迁移到具体任务中进行微调。以下是其定义、原理及与其他模型的对比分析: 一、预训练模型的定义与原理 基本概念 预训练模型(Pre-trained Model…...
C++题解(33)2025年顺德区中小学生程序设计展示活动(初中组C++)U560876 美丽数(一)和 U560878 美丽数(二)题解
U560876 美丽数(一) 题目描述 小明很喜欢3和5这两个数字,他将能被3或5整除的数叫做美丽数。现在给你一个整数n,你能告诉小明第n个美丽数是多少吗? 输入格式 输入有多行,每行只有一个整数${n_i}$。 输出格式…...

产业互联网+三融战略:重构企业增长密码
产业互联网时代:用"三融"重构企业增长飞轮 在产业互联网浪潮下,企业面临资源分散、资金短缺、人才难聚的三重挑战。本文提出的"融人、融资、融资源"顶层设计,正为新时代企业构建增长新引擎。 一、三级合伙人体系&#x…...
centos yum源,docker源
yum源repo文件: wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repodocker源repo文件: yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo安装docker和docker c…...
通过设备节点获取已注册的 i2c client
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言代码分析 前言 另一个驱动通过设备节点 获取已注册的i2c client 代码分析 #include <linux/kernel.h> #include <linux/init.h> #include <li…...

Centos系统资源镜像配置
主要体现 yum 命令执行报错,排除网络连接问题 解决步骤: 下载安装工具 # 安装 wget curl vim yum install -y wget curl vim 原有repo文件备份 # 进入配置文件所在文件夹 cd /etc/yum.repos.d# 创建 backup 文件夹 mkdir backup# 备份文件放置文件夹 m…...

【Linux网络篇】:Socket网络套接字以及简单的UDP网络程序编写
✨感谢您阅读本篇文章,文章内容是个人学习笔记的整理,如果哪里有误的话还请您指正噢✨ ✨ 个人主页:余辉zmh–CSDN博客 ✨ 文章所属专栏:Linux篇–CSDN博客 文章目录 网络编程套接字一.预备知识1.理解源IP地址和目的IP地址2.认识端…...

学习路之uniapp--unipush2.0推送功能--给自己发通知
学习路之uniapp--unipush2.0推送功能--给自己发通知 一、绑定云空间及创建云函数二、编写发送界面三、效果后期展望: 一、绑定云空间及创建云函数 package.json {"name": "server-push","dependencies": {},"main": "…...
Java面向对象 一
系列文章目录 Java面向对象 二-CSDN博客 目录 系列文章目录 前言 一、初步认识面向对象 1.类和对象的简单理解 2.类的构成 二、类的实例化 1.对象的创建 2.对象的初始化 三、this引用的作用 四、构造方法 1.构造方法的提供 2.对象的构造 3.构造方法的重载 4.th…...
怎么开发一个网络协议模块(C语言框架)之(二) 数据结构设计
一、数据结构设计模板分析 (gdb) p gVrrpInstance $3 = { INT4 socketV4 = 107, .... vrrpStatisticsEntry_t SvrrpStatistics = {delIp4Count = 0, delIp6Count = 0, delIp4Error = 0, delIp6Error = 0, addIp4Count = 0, addIp6Count = 3, addIp4Error = 0, addIp6Error …...
30天自制操作系统day5(vram和显存)(GDT和IDT)(c语言结构体)(汇编-c)(ai辅助整理)
day5 harib02d c语言结构体的一些解释 struct BOOTINFO { char cyls, leds, vmode, reserve; short scrnx, scrny; char *vram; }; //最开始的struct命令只是把一串变量声明集中起来,统一叫做“struct BOOTINFO”。 //最初是1字节的变量cyls,接着是1字…...
【音频】drc 限幅器、多带限幅器、压缩器、多带压缩器
以下是关于 DRC 限幅器、多带限幅器、压缩器、多带压缩器的详细解释,它们均为音频处理领域的动态范围控制设备,主要用于调整音频信号的动态范围(即最大音量与最小音量的差值),以优化音质或满足特定播放需求: 一、DRC 限幅器(Dynamic Range Compression Limiter) 核心功…...

leetcode hot100刷题日记——12.反转链表
解答: /*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode *next;* ListNode() : val(0), next(nullptr) {}* ListNode(int x) : val(x), next(nullptr) {}* ListNode(int x, ListNode *next) : val(x), next(n…...
osgEarth中视角由跟随模式切换到漫游模式后没有鼠标拖拽功能问题分析及解决方法
遇到了一个棘手的问题,就是在由跟随模式切换到漫游模式的时候,鼠标无法实现拖拽功能。后来发现是前面给自己挖的坑。 因为要实现鼠标点选某个模型后,模型需要变红色显示,所以添加了一个事件处理程序。 // 创建 场景中模型的点选功能 事件处理程序 ModelSelectionHandler* …...
STM32中断优先级分组有哪几种?
STM32中断优先级分组主要有以下5种: 分组0:所有16位用于子优先级,没有抢占优先级。此时可配置的子优先级为0~15,共16级,适用于系统中对中断实时性要求不高,且中断源较多,需要更多子优先级来区分不同中断的情况。分组1:最高1位用于抢占优先级,最低3位用于子优先级。可配…...

《Python语言程序设计》第4章第8题3个个位数之间比大小。‘a小于b而b大于c’这是最有漏洞的一个对比,请问我如何判断a和c
升序来做这个题 比如123就变成321 需要比对3个数 这不是比对2个数。a和b比对 我们可以直接写 if a>b: print(ab) else print(ba) 但是现在是3个数abc 如果进行if比对呢 if a > b >c: print(a,b,c) elif a < b >c: print(bca) … 简洁的代码变成了复杂的代码段。…...

Selenium 测试框架 - Python
🚀Selenium Python 实战指南:从入门到进阶 Selenium 是 Web 自动化测试中最受欢迎的工具之一,支持多种浏览器和语言。本文将从环境搭建到多浏览器兼容、测试框架集成、元素定位方式、常用操作、浏览器配置等多个方面进行详细讲解,并分享常见的最佳实践建议。 📦一、环境…...

RNN GRU LSTM 模型理解
一、RNN 1. 在RNN中, 二、GRU 1. GRU是为了解决RNN 梯度消失引入的改良模型, 2. GRU 通过门控 Gamma_r Gamma_u 两个变量,实现了对于过往记忆的筛选:这种机制使得GRU能够灵活地决定何时“忘记”过去的信息以及何时“记住”新的…...
AutoCompose - 携程自动编排原理 -【编排关系DAG的构建】
AutoCompose - 携程自动编排原理 -【编排关系DAG的构建】 前言一. Spring / SpringBoot 的兼容✅ spring.factories 文件🧩 特点📄 示例 ✅ META-INF/spring/ 目录下的文件(Spring Boot 2.4 新特性)🧩 特点Ὄ…...

【MC】红石比较器
在《我的世界》(Minecraft)中,红石比较器(Redstone Comparator) 是一种高级红石元件,主要用于 检测、比较或处理信号强度,同时还能与容器、特定方块互动。 红石比较器有两种模式: 比…...
危化品经营单位安全生产管理人员考试主要内容
危化品经营单位安全生产人员考试主要测试从业人员对危险化学品安全管理的专业知识和法规掌握程度。考试内容涵盖以下重点: 法律法规(30%) 重点考查《安全生产法》《危险化学品安全管理条例》等核心法规,以及经营许可、重大危险源…...
get_the_category() 和 get_the_terms() 的区别
get_the_category() 和 get_the_terms() 是WordPress中用于获取文章分类的两个函数,但它们之间存在一些关键差异: get_the_category() 特定于分类:get_the_category() 函数专门用于获取文章的分类(category)。它返回一个包含所有分类对象的…...

红黑树简单模拟实现
定义成员变量旋转insert以234树的角度来待插入操作具体代码 完整代码 我们前面实现了 二叉搜索树和 AVL树。 其中AVL树是二叉搜索树的改进,但是有些人觉得二叉树搜索的插入调整太频繁了,或者说平衡条件过于苛刻。 于是人们放松了左右子树高度差的限制&…...