weblab finished

This commit is contained in:
2026-01-19 22:35:09 +08:00
parent 553a2c7f3a
commit 26236f5590
13 changed files with 11603 additions and 0 deletions

150
network/weblab/main.typ Normal file
View File

@@ -0,0 +1,150 @@
#import "labtemplate.typ": *
#show: nudtlabpaper.with(title: "网站搭建实验",
author: "程景愉",
id: "202302723005",
training_type: "无军籍",
grade: "2023",
major: "网络工程",
department: "计算机学院",
advisor: "逄德明",
jobtitle: "教授",
lab: "307-211",
date: "2026.01.17",
header_str: "《计算机网络》实验报告",
)
#set page(header: [
#set par(spacing: 6pt)
#align(center)[#text(size: 11pt)[《计算机网络》实验报告]]
#v(-0.3em)
#line(length: 100%, stroke: (thickness: 1pt))
],)
// Global text settings
#set text(font: song, size: 10.5pt)
#set par(first-line-indent: 2em, justify: true, leading: 1em)
// Heading styling
#show heading: it => box(width: 100%)[
#v(0.50em)
#set text(font: hei)
#counter(heading).display()
#h(0.5em)
#it.body
]
#outline(title: "目录", depth: 3, indent: 2em)
#pagebreak()
#outline(
title: [图目录],
target: figure.where(kind: image),
)
#pagebreak()
// List settings
#set enum(indent: 0.5em, body-indent: 0.5em)
// Disable indentation for lists
#show enum: set par(first-line-indent: 0pt)
#show list: set par(first-line-indent: 0pt)
= 实验目的
1. 了解万维网World Wide Web的历史起源与发展通过复刻世界上第一个网站直观感受早期Web技术的形态理解超文本标记语言HTML的基本结构与演变。
2. 掌握现代Web前端开发技术包括HTML5语义化标签、CSS3样式设计及响应式布局能够独立设计并编写符合标准、美观大方的个人主页。
3. 熟悉互联网基础设施的运作机制包括域名系统DNS的注册与解析原理以及Linux服务器的基本操作。
4. 掌握Web服务器软件Caddy的安装与配置实现网站在个人服务器上的部署并配置HTTPS安全访问打通从开发到上线的全流程。
= 实验原理
1. *HTML (HyperText Markup Language)*: 超文本标记语言是构建Web的基础。它使用标签Tags来定义网页的内容结构如标题、段落、链接和图片。实验中涉及从早期的HTML标签到现代HTML5语义化标签的应用。
2. *CSS (Cascading Style Sheets)*: 层叠样式表用于控制网页的外观和布局。通过CSS选择器、盒模型、Flexbox/Grid布局以及媒体查询Media Queries可以将结构与表现分离实现适应不同屏幕尺寸的响应式设计。
3. *Web服务器与HTTP协议*: Web服务器如Caddy运行在服务端监听标准端口80/443接收客户端浏览器发起的HTTP/HTTPS请求并返回请求的资源HTML文件、图片等。Caddy以其自动化的HTTPS配置和简洁的Caddyfile配置语法著称。
4. *DNS (Domain Name System)*: 域名系统将人类易记的域名(如 `hifuu.ink`映射为计算机网络中通讯使用的IP地址使用户能够通过域名便捷地访问服务器。
= 实验环境
- *操作系统*: Linux (个人公网服务器环境使用Rockylinux 9)
- *Web服务器*: Caddy Web Server (支持自动 HTTPS)
- *开发环境*: VS Code, Typst (实验报告排版)
- *前端技术栈*: HTML5, CSS3 (未使用庞大的前端框架,保持轻量级)
- *域名服务商*: 阿里云 (Aliyun)
- *测试工具*: Firefox Developer Edition
= 实验步骤及结果
== 复刻世界上第一个网站https://www.hifuu.ink/TheProject.html
实验的第一部分是致敬历史,复刻由万维网之父 Tim Berners-Lee 创建的世界上第一个网站 "The World Wide Web project"。
我获取了原始的 `TheProject.html` 源代码。代码中包含了许多早期 HTML 的特征,例如 `<NEXTID>` 标签(这是当年 NeXTSTEP 开发环境特有的标签)以及 `<DL>`, `<DT>`, `<DD>` 定义列表的使用。该页面通过简单的超链接结构,构建了一个关于 W3C 项目本身的各种信息的索引。
#figure(
rect(width: 100%, height: 8cm, stroke: (thickness: 1pt, dash: "dashed"))[
#align(center + horizon)[#image("screenshot2.png")]
],
caption: [复刻的世界上第一个网站页面效果],
)
== 搭建个人主页 (https://www.hifuu.ink)
实验的第二部分是设计并实现我的个人主页 "CGH0S7 Official"。主页旨在展示个人简介、技术栈、教育经历及博客链接。
=== 页面结构设计 (HTML5)
`index.html` 中,我采用了 HTML5 的语义化标签来构建页面结构,这有助于代码的可读性和 SEO 优化:
- *`<header>`*: 包含了网站导航 (`<nav>`) 和个人品牌区域 (`.brand`),展示头像与昵称。
- *`<section>`*: 将页面内容划分为不同的逻辑区块,包括关于我 (`About`)、爱好 (`Hobby`)、教育经历 (`Education`)、奖项 (`Awards`)、发表论文 (`Publications`)、博客 (`Blog`) 和联系方式 (`Contact`)。
- *`<footer>`*: 页脚部分,展示版权信息和构建时间。
=== 样式与交互设计 (CSS3)
为了实现现代化的视觉体验,我在 `<style>` 标签中编写了 CSS 样式:
- *CSS 变量*: 定义了 `:root` 变量(如 `--accent: #CEA152`),方便统一管理主题色和字体颜色。
- *Flexbox 与 Grid 布局*: 导航栏使用 Flexbox 实现水平排列;教育经历卡片使用 Grid 布局 (`grid-template-columns: 1fr auto`) 实现文字与校徽的对齐。
- *响应式设计*: 使用 `@media (max-width: 640px)` 媒体查询。当屏幕宽度小于 640px Header 自动调整为垂直排列,卡片布局也切换为单列模式,确保在手机端有良好的浏览体验。
#figure(
rect(width: 100%, height: 10cm, stroke: (thickness: 1pt, dash: "dashed"))[
#align(center + horizon)[#image("screenshot1.png")]
],
caption: [个人主页 (hifuu.ink) PC 端显示效果],
)
#figure(
rect(width: 50%, height: 10cm, stroke: (thickness: 1pt, dash: "dashed"))[
#align(center + horizon)[#image("screenshot3.jpg")]
],
caption: [个人主页移动端响应式布局效果],
)
== 服务器部署与上线
=== 域名购买与解析
为了让个人主页能够在公网访问,我在 *阿里云* 平台购买了域名 `hifuu.ink`
在阿里云的域名控制台中,我添加了一条 A 记录,将主机记录 `@` 指向了我个人 Linux 服务器的公网 IP 地址。等待 DNS 缓存刷新后ping 域名即可解析到正确的 IP。
=== 配置 Caddy Web Server
我选择使用 *Caddy* 作为 Web 服务器,主要看重其配置简单且默认支持自动 HTTPS通过 Let's Encrypt
部署步骤如下:
1. 将编写好的 `index.html``avatar.jpg` 以及复刻的 `hifuu.ink` 文件夹上传至服务器目录。
2. 编写 `Caddyfile` 配置文件,指定站点根目录。
3. 启动 Caddy 服务。Caddy 自动检测到域名配置,并自动完成了 SSL 证书的申请和安装。
= 实验总结
== 心得感悟
本次实验是一次非常有意义的web开发初体验。
首先,通过复刻 Web 诞生之初的网页,我深刻体会到了互联网技术从简陋到繁荣的巨大变迁。几十行简单的 HTML 代码,却是如今万物互联世界的基石。
其次,在编写个人主页的过程中,我不仅巩固了 HTML5 CSS3 的语法,更重要的是学会了如何通过布局和配色来提升用户体验。看到自己设计的页面在不同设备上都能完美展示,这种“所见即所得”的反馈带给我很大的成就感。
最后,服务器部署环节让我走出了“本地开发”的舒适区。从购买域名到配置 Linux 服务器再到看着浏览器地址栏那把代表安全的“小锁”HTTPS亮起我理解了网站上线背后的技术链路。使用 Caddy 服务器极大地简化了配置流程,让我能更专注于内容本身。这次实验不仅不仅让我拥有了一个属于自己的互联网角落,也为后续深入学习计算机网络原理打下了坚实的基础。