《软件开发工具实践》实验手册
写在最前面
注意:搭建博客网站只需要实验二、三、四、八,剩下的和虚拟机、linux相关的部分是额外的内容
目录
实验二 Web软件开发环境 …………………… 5
实验三 代码编辑器 ……………………………. 10
实验四 Web站点构建 ………………………….. 15
实验五 虚拟机安装与使用 …………………. 17
实验六 Linux环境配置 ………………………. 21
实验七 远程登录管理 ………………………… 25
实验八 软件部署 ……………………………….. 29
附录一 省流版搭建博客(不含虚拟机 / Linux) ……… 32
附录二 怎么把博客做成科技感暗夜 ……………. 35
实验二 Web软件开发环境
一、实验目标
- 安装并运行一个Web博客软件(本实验选用 Hexo 静态博客框架);
- 了解和掌握Web开发环境的基础安装与配置(Node.js、npm、Git);
- 理解Web软件的B/S架构特点以及静态站点与动态站点的区别。
二、背景知识
2.1 静态博客 vs 动态博客
| 类型 | 原理 | 特点 | 典型代表 |
|---|---|---|---|
| 静态博客 | 在本地将Markdown等源文件预编译为纯HTML页面 | 加载速度快、安全性高、无需数据库 | Hexo、Hugo、VuePress、Jekyll |
| 动态博客 | 每次用户访问时由服务器端程序动态生成页面 | 功能丰富、有后台管理界面、需要数据库 | WordPress、Typecho、Halo |
2.2 Web开发环境的核心组件
| 组件 | 作用 | 本实验对应的工具 |
|---|---|---|
| 运行时环境 | 执行编程语言代码 | Node.js(运行JavaScript/Hexo) |
| 包管理器 | 管理项目依赖库 | npm(Node Package Manager) |
| 版本控制 | 代码管理与协作 | Git |
| 构建工具 | 将源文件转换为可部署的网站 | Hexo CLI |
| 本地服务器 | 在开发时预览网站效果 | Hexo自带的server模块 |
三、实验环境
- 操作系统:Windows 10/11
- 网络:需要互联网连接以下载软件和安装依赖包
- 所需软件:
- Node.js(LTS版本,含npm)
- Git for Windows
- Hexo CLI
- 一个文本编辑器(VS Code或Notepad++等)
四、详细操作步骤
步骤一:安装Node.js与npm
- 打开浏览器,访问 Node.js 官网:https://nodejs.org/
- 下载 LTS(长期支持)版本 的Windows安装包。
- 双击下载的安装包,启动安装向导。
- 在安装过程中,务必勾选“Automatically install the necessary tools”,并确保 “Add to PATH” 选项被选中。
- 其余步骤保持默认,点击“Next”直至安装完成。
- 安装完成后,打开命令提示符,输入以下命令验证安装是否成功:
1
2node -v
npm -v
步骤二:配置npm镜像源(可选但推荐)
在命令提示符中执行:
1 | npm config set registry https://registry.npmmirror.com |
验证配置是否生效:
1 | npm config get registry |
步骤三:安装Git for Windows
- 打开浏览器,访问Git官网:https://git-scm.com/download/win
- 下载适合你系统的安装包。
- 双击安装包,启动安装向导。
- 在安装过程中,当出现 “Select Components” 页面时,建议勾选 “Git Bash Here” 和 “Git GUI Here” 。
- 在 “Choosing the default editor” 页面,可以选择VS Code(如果已安装)或其他编辑器。
- 在 “Adjusting your PATH environment” 页面,选择 “Git from the command line and also from 3rd-party software” 。
- 其余步骤保持默认,点击“Next”直至安装完成。
- 安装完成后,重启命令提示符,输入以下命令验证:
1
git --version
- 配置Git的全局用户信息:
1
2git config --global user.name "你的姓名"
git config --global user.email "你的邮箱@example.com"
步骤四:安装Hexo CLI
在命令提示符中执行:
1 | npm install -g hexo-cli |
验证安装:
1 | hexo -v |
步骤五:初始化博客项目
- 选择一个你希望存放博客源码的目录,进入该目录:
1
cd D:\Blog
- 执行初始化命令创建博客项目:
1
hexo init my-blog
- 进入项目目录:
1
cd my-blog
- 安装项目依赖(如果初始化时未自动完成):
1
npm install
初始化完成后,项目目录结构如下:
1 | my-blog/ |
步骤六:本地预览博客
- 在项目目录下,启动本地预览服务:
1
hexo server
- 看到如下提示表示服务启动成功:
1
INFO Hexo is running at http://localhost:4000 . Press Ctrl+C to stop.
- 打开浏览器,访问 http://localhost:4000 ,即可看到默认的Hexo博客首页。
步骤七:创建并发布一篇博客文章
- 在项目目录下,使用以下命令创建一篇新文章:
1
hexo new "我的第一篇博客"
- 用文本编辑器打开生成的Markdown文件,修改Front-matter信息和正文内容。
- 保存文件后,重新生成静态页面:
1
hexo generate
- 再次启动本地预览服务查看效果:
1
hexo server
步骤八:更换主题(可选)
以安装流行的NexT主题为例:
- 在项目目录下,克隆NexT主题:
1
git clone https://github.com/theme-next/hexo-theme-next themes/next
- 打开项目根目录下的
_config.yml文件,找到theme字段,将其修改为:1
theme: next
- 重新生成并预览。
五、常见问题与排错
| 问题现象 | 可能原因 | 解决方法 |
|---|---|---|
'node' 不是内部或外部命令 |
Node.js未正确安装或未添加到PATH | 重新安装Node.js,确保勾选“Add to PATH” |
npm install 速度极慢 |
默认使用国外镜像源 | 切换为国内镜像源 |
hexo -v 报错 |
Hexo CLI未全局安装 | 执行 npm install -g hexo-cli |
hexo server 启动后浏览器无法访问 |
端口4000被占用 | 更换端口:hexo server -p 4001 |
| 问题现象 | 可能原因 | 解决方法 |
|---|---|---|
安装VS Code后无法在命令行使用code命令 |
安装时未勾选“添加到PATH” | 重新运行安装程序,勾选“添加到PATH”;或手动将VS Code安装目录添加到系统环境变量 |
| 扩展面板搜索不到插件 | 网络问题或搜索关键词不准确 | 检查网络连接;尝试使用准确的插件全名(如“Markdown All in One”)搜索 |
| 预览窗口不显示或显示异常 | 插件未正确安装或未启用 | 检查扩展面板中插件是否已启用;重启VS Code |
| 预览中图片无法显示 | 图片路径错误 | 检查图片路径是否正确,建议使用相对路径 |
[TOC]不生成目录 |
未安装Markdown All in One插件 | 安装并启用Markdown All in One插件 |
六、拓展与进阶
完成基础实验后,可尝试以下进阶操作:
- 自定义代码片段(Snippets) :在VS Code中配置自定义代码片段,快速插入常用的Markdown结构(如表格、引用块等)
- 导出为PDF:使用Markdown Preview Enhanced插件,将Markdown文档导出为PDF格式
- 配置自定义CSS:在Markdown Preview Enhanced中加载自定义CSS,实现个性化排版风格
- 使用Mermaid绘制流程图:在Markdown中嵌入Mermaid代码,绘制流程图和时序图
- 连接Git版本管理:将Markdown文档纳入Git版本控制,追踪修改历史
实验三 代码编辑器
一、实验目标
- 安装Visual Studio Code(VS Code)文本代码编辑器;
- 安装和配置Markdown相关插件,掌握代码编辑器插件的基本概念;
- 学习Markdown基础语法,使用VS Code完成Markdown文档的编辑和渲染任务。
二、背景知识
2.1 代码编辑器 vs 集成开发环境(IDE)
| 类型 | 特点 | 典型代表 |
|---|---|---|
| 代码编辑器 | 轻量级、启动快、以编辑为核心功能、通过插件扩展能力 | VS Code、Sublime Text、Notepad++ |
| 集成开发环境(IDE) | 功能全面、集成了编译/调试/构建/版本控制等全套工具链 | IntelliJ IDEA、PyCharm、Eclipse |
2.2 插件(Extension)的概念
插件是VS Code最核心的扩展机制。通过安装不同的插件,可以为编辑器增加语法高亮、代码补全、格式化、预览、调试等新功能。
2.3 Markdown简介
Markdown是一种轻量级标记语言,通过简单的纯文本语法实现结构化文档的编写,并支持转换为HTML、PDF等格式。
Markdown的核心特点:
- 简洁性:仅需少量符号(如
#、*、-)即可完成排版 - 可读性:未渲染的纯文本仍然清晰易读
- 兼容性:支持GitHub、各大博客平台、笔记工具等场景
三、实验环境
- 操作系统:Windows 10/11
- 网络:需要互联网连接以下载软件和插件
- 所需软件:
- Visual Studio Code
- VS Code插件:Markdown All in One、Markdown Preview Enhanced等
四、详细操作步骤
步骤一:安装Visual Studio Code
- 打开浏览器,访问VS Code官网:https://code.visualstudio.com/
- 点击首页的 “Download for Windows” 按钮,下载最新版本的安装包。
- 双击下载的安装包,启动安装向导。
- 在 “选择附加任务” 页面,建议勾选以下选项:
- ✅ 创建桌面快捷方式
- ✅ 将“通过Code打开”操作添加到Windows资源管理器文件上下文菜单
- ✅ 将“通过Code打开”操作添加到Windows资源管理器目录上下文菜单
- ✅ 将Code注册为受支持的文件类型的编辑器
- ✅ 添加到PATH(必须勾选)
- 点击 “安装” 开始安装。
步骤二:首次运行与界面熟悉
- 双击桌面上的VS Code快捷方式图标启动。
- 熟悉VS Code的主界面布局:
- 活动栏(左侧最窄的竖条):包含资源管理器、搜索、源代码管理、运行和调试、扩展等图标
- 侧边栏(活动栏右侧):显示当前活动栏工具的具体内容
- 编辑器区域(中央):用于编辑文件的主要区域
- 面板(底部):显示终端、输出、问题等
- 状态栏(底部最下方):显示当前文件信息、Git分支、编码格式等
步骤三:安装Markdown相关插件
3.1 打开扩展面板
- 点击左侧活动栏中的 扩展图标(四个小方块组成的图标)
- 或使用快捷键:**
Ctrl + Shift + X**
3.2 安装核心插件
插件1:Markdown All in One
- 在扩展面板中搜索
Markdown All in One - 点击 “安装” 按钮
- 功能:目录生成、快捷键支持、自动完成、列表自动延续等
插件2:Markdown Preview Enhanced
- 在扩展面板中搜索
Markdown Preview Enhanced - 点击 “安装” 按钮
- 功能:数学公式(LaTeX)、流程图(Mermaid)、导出为PDF/HTML等
插件3(可选):Paste Image
- 在扩展面板中搜索
Paste Image - 点击 “安装” 按钮
- 功能:直接粘贴剪贴板中的图片到Markdown文件
插件4(可选):markdownlint
- 用于检查Markdown语法错误和格式规范
步骤四:配置编辑器优化写作体验
- 开启自动保存:按
Ctrl + ,打开设置,搜索files.autoSave,设置为afterDelay - 开启单词折行:搜索
editor.wordWrap,设置为on - 配置图片粘贴路径(如安装了Paste Image插件):设置
Paste Image: Path Type为relative
步骤五:创建并编辑第一个Markdown文件
- 新建文件:
Ctrl + N,保存为test.md - 输入以下内容:
1 | # 我的第一个Markdown文档 |
实验四:Web站点构建——操作说明书
一、实验目标
- 使用静态站点构建工具(Hexo)构建一个静态Web博客站点;
- 了解和掌握Web应用开发的基本要素与流程:环境准备 → 项目初始化 → 内容编写 → 主题配置 → 本地预览 → 部署上线;
- 理解静态站点生成器(SSG)的工作原理及其与动态站点的区别。
二、背景知识
2.1 什么是静态站点生成器(SSG)?
静态站点生成器(Static Site Generator, SSG)是一类工具,它将Markdown等源文件和模板文件作为输入,预先编译成完整的HTML、CSS、JavaScript静态网页。它的核心理念是“提前做好”,而非“现场制作”。
静态站点 vs 动态站点:
| 对比维度 | 静态站点(SSG) | 动态站点(如WordPress) |
|---|---|---|
| 页面生成时机 | 构建时预先生成所有页面 | 用户访问时由服务器实时生成 |
| 数据库 | 不需要 | 通常需要 |
| 访问速度 | 极快(纯静态文件) | 较慢(需执行后端代码+查数据库) |
| 安全性 | 高(无后端攻击面) | 需额外防护 |
| 部署方式 | 上传静态文件即可 | 需配置服务器环境和数据库 |
| 适用场景 | 博客、文档站、个人网站 | 电商、社交、CMS |
2.2 为什么选择Hexo?
Hexo是一个基于Node.js的快速、简洁且高效的博客框架。它使用Markdown解析文章,在几秒内即可利用靓丽的主题生成静态网页。Hexo拥有400+主题和丰富的插件生态,适合技术博客和个人网站。
2.3 Web应用开发的基本流程
本次实验将完整覆盖Web应用开发的六个核心环节:
环境准备 → 项目初始化 → 内容编写 → 主题定制 → 本地预览 → 部署上线
三、实验环境
- 操作系统:Windows 10/11(本说明书以Windows为例)
- 网络:需要互联网连接
- 前置条件:已完成实验二(Node.js、npm、Git已安装并配置)
- 所需账号:GitHub账号(用于免费部署)
四、详细操作步骤
步骤一:环境准备(2分钟)
注意:如果你已完成实验二,Node.js、npm和Git应该已经安装好了。如未安装,请先参考实验二的操作说明书完成安装。
验证环境是否就绪:
打开命令提示符(CMD或PowerShell),依次执行以下命令验证:
1 | node -v # 应输出 v20.x.x 或更高版本 |
如果上述命令都能正常输出版本号,说明环境已准备就绪。
步骤二:安装Hexo CLI
在命令提示符中执行以下命令,全局安装Hexo命令行工具:
1 | npm install -g hexo-cli |
验证安装是否成功:
1 | hexo -v |
应输出Hexo的版本信息及依赖组件列表。
步骤三:初始化博客项目
选择一个存放博客的目录(例如
D:\Blog),进入该目录:1
cd D:\Blog
执行初始化命令:
1
hexo init my-blog
该命令会从GitHub克隆hexo-starter模板,并自动安装依赖。整个过程约需1-3分钟。
进入项目目录:
1
cd my-blog
手动安装依赖(如初始化时未自动完成):
1
npm install
初始化完成后的目录结构:
1 | my-blog/ |
各目录/文件的作用:
_config.yml:站点的全局配置文件,包含网站标题、作者、URL、主题等核心设置source/:存放所有内容源文件(Markdown文章、图片等),_posts是主要的文章存放位置themes/:存放主题,决定网站的外观和布局public/:生成目录(运行hexo generate后自动产生),存放最终的静态HTML文件
步骤四:本地预览博客
在项目目录(my-blog)下,执行以下命令启动本地预览服务:
1 | hexo server |
或简写为:
1 | hexo s |
看到如下提示表示启动成功:
1 | INFO Hexo is running at http://localhost:4000 . Press Ctrl+C to stop. |
打开浏览器,访问 http://localhost:4000,即可看到默认的Hexo博客首页。
提示:在服务器启动期间,Hexo会监视文件变动并自动更新,无需重启服务器。
步骤五:创建并编写博客文章
在项目目录下创建一篇新文章:
1
hexo new "我的第一篇博客"
这会在
source/_posts/目录下生成一个名为我的第一篇博客.md的Markdown文件。用VS Code打开该文件,其内容格式如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15---
title: 我的第一篇博客
date: 2026-07-05 10:00:00
tags:
---
## 欢迎来到我的博客
这是我的第一篇博客文章。通过Hexo,我可以用Markdown轻松写作。
### 为什么要写技术博客?
- 记录学习和成长
- 分享知识和经验
- 打造个人技术品牌Front-matter说明:文件开头的
---之间的区域称为Front-matter,用于定义文章的元数据(标题、日期、标签、分类等)。保存文件后,重新生成静态页面:
1
hexo generate
或简写为:
1
hexo g
刷新浏览器 http://localhost:4000 即可看到新文章出现在博客首页。
步骤六:更换主题(以NexT为例)
Hexo拥有丰富的主题生态。更换主题只需两步:
下载主题:在项目目录下,克隆NexT主题到
themes/next目录:1
git clone https://github.com/theme-next/hexo-theme-next themes/next
修改配置:打开项目根目录下的
_config.yml文件,找到theme字段,修改为:1
theme: next
重新生成并预览:
1
2
3hexo clean # 清理缓存(可选)
hexo generate
hexo server刷新浏览器,即可看到NexT主题的新样式。
步骤七:部署到GitHub Pages(免费上线)
将博客部署到互联网上,让全世界都能访问。
7.1 创建GitHub仓库
- 登录你的GitHub账号。
- 点击右上角的 “+” → “New repository” 。
- 仓库名称必须设置为:**
你的GitHub用户名.github.io** (例如用户名为zhangsan,则仓库名为zhangsan.github.io)。 - 选择 “Public” (公开),不要勾选“Initialize this repository with a README”。
- 点击 “Create repository” 。
7.2 安装部署插件
在项目目录下安装Git部署插件:
1 | npm install hexo-deployer-git --save |
7.3 配置部署信息
打开项目根目录下的 _config.yml 文件,在文件末尾添加以下配置:
1 | deploy: |
注意:如果你的默认分支是
master,则将branch改为master。GitHub新仓库的默认分支通常为main。
7.4 执行部署
执行以下命令将博客部署到GitHub Pages:
1 | hexo clean && hexo generate && hexo deploy |
或分步执行:
1 | hexo clean # 清理缓存 |
部署过程中,系统会提示你输入GitHub的用户名和密码(或Personal Access Token)。
7.5 访问你的博客
部署完成后,在浏览器中访问:
https://你的GitHub用户名.github.io
即可看到你的博客正式上线!
五、常见问题与排错
| 问题现象 | 可能原因 | 解决方法 |
|---|---|---|
'hexo' 不是内部或外部命令 |
Hexo CLI未正确安装 | 执行 npm install -g hexo-cli 重新安装 |
hexo init 速度极慢或失败 |
网络问题,无法访问GitHub | 配置代理,或使用Gitee镜像源;也可手动下载模板 |
hexo server 启动后浏览器无法访问 |
端口4000被占用 | 更换端口:hexo server -p 4001 |
| 部署后GitHub Pages显示404 | 仓库名称不是 用户名.github.io |
检查仓库命名是否正确 |
| 部署后页面样式丢失 | 站点URL配置错误 | 检查 _config.yml 中的 url 字段是否设置为 https://用户名.github.io |
| 部署时提示认证失败 | 未配置Git凭证 | 使用Personal Access Token代替密码,或在Git中配置凭证缓存 |
实验五 虚拟机安装与使用
一、实验目标
- 使用虚拟机工具(VirtualBox)安装Linux系统(Ubuntu Server);
- 通过克隆技术构建一个多机虚拟化环境;
- 了解和掌握基于虚拟机的开发环境的基本构建方法和配置。
二、背景知识
2.1 什么是虚拟化技术?
虚拟化技术允许在一台物理计算机(宿主机)上同时运行多个独立的操作系统(虚拟机),每个虚拟机都拥有自己独立的CPU、内存、硬盘和网络资源。
2.2 虚拟机网络的三种核心模式
| 网络模式 | 特点 | 典型用途 |
|---|---|---|
| NAT | 虚拟机通过宿主机上网,外部不可直达 | 日常上网、安装软件 |
| 桥接(Bridged) | 虚拟机直接接入宿主机所在局域网 | 需要被其他设备直接访问 |
| 仅主机(Host-Only) | 宿主机与虚拟机形成隔离私网 | 搭建内网互通实验环境 |
本实验将采用 “NAT + 仅主机”双网卡方案。
三、实验环境
- 操作系统:Windows 10/11
- 网络:需要互联网连接
- 硬件要求:CPU支持VT-x/AMD-V虚拟化技术;内存≥8GB;硬盘剩余空间≥50GB
- 所需软件:
- Oracle VirtualBox
- Ubuntu Server 22.04 LTS ISO镜像
四、详细操作步骤
步骤一:下载与安装VirtualBox
- 访问VirtualBox官网:https://www.virtualbox.org/
- 下载Windows版本安装包并安装
- 安装完成后重启电脑
步骤二:下载Ubuntu Server ISO镜像
访问Ubuntu官网:https://ubuntu.com/download/server ,下载22.04 LTS版本。
步骤三:创建第一台虚拟机(模板机)
3.1 新建虚拟机
- 名称:
ubuntu-template - ISO映像:选择下载的Ubuntu Server ISO
- 类型:Linux,版本:Ubuntu (64-bit)
3.2 分配硬件资源
- 内存:2048 MB或以上
- 硬盘:VDI格式,动态分配,20 GB或以上
3.3 配置虚拟机网络(双网卡)
| 适配器 | 连接方式 | 用途 |
|---|---|---|
| 适配器1 | NAT | 上网和下载软件 |
| 适配器2 | 仅主机(Host-Only)适配器 | 多机互联 |
步骤四:安装Ubuntu Server
- 启动虚拟机,选择 “Try or Install Ubuntu Server”
- 选择语言和键盘布局
- 网络配置保持默认DHCP
- 存储配置选择 “Use an entire disk”
- 设置用户名和密码
- 务必按空格键选中“Install OpenSSH server”
- 等待安装完成后重启
步骤五:配置静态IP地址
登录系统后,编辑Netplan配置文件:
1 | sudo nano /etc/netplan/50-cloud-init.yaml |
修改为:
1 | network: |
应用配置:
1 | sudo netplan apply |
步骤六:配置主机名与hosts解析
1 | sudo hostnamectl set-hostname template |
添加:
1 | 192.168.56.101 template |
步骤七:克隆虚拟机
- 关闭模板机:
sudo shutdown now - 在VirtualBox中右键点击模板机 → “克隆”
- 选择 “完全克隆”
- 分别克隆出
node1、node2、node3
步骤八:修改克隆机的主机名和IP
对每台克隆机:
1 | sudo hostnamectl set-hostname node1 # 分别改为node1/node2/node3 |
步骤九:验证多机环境
在node1上测试:
1 | ping -c 3 8.8.8.8 # 测试外网 |
五、常见问题与排错
| 问题现象 | 可能原因 | 解决方法 |
|---|---|---|
| 提示“VT-x/AMD-V未启用” | BIOS中未开启硬件虚拟化 | 重启进入BIOS启用VT-x/AMD-V |
| 虚拟机无法上网 | NAT网卡配置错误 | 检查enp0s3是否配置为dhcp4: yes |
| 虚拟机之间ping不通 | 仅主机网卡IP不在同一网段 | 检查IP是否都在192.168.56.x/24网段 |
| 克隆后网络无法使用 | 保留了原网卡的MAC地址 | 在VirtualBox中重新生成MAC地址 |
实验六 Linux环境配置
一、实验目标
- 使用命令行进行Linux系统的基础操作;
- 了解和简单管理常用系统配置文件(
/etc/passwd、/etc/group、/etc/profile等); - 了解和简单管理用户配置文件(
~/.bashrc、~/.profile等); - 掌握环境变量的查看、设置与管理方法。
二、背景知识
2.1 Linux命令行基础
- 命令提示符:
用户名@主机名:当前目录$($表示普通用户,#表示root用户) - Tab补全:输入命令或路径时按Tab键自动补全
- 快捷键:
Ctrl+C终止当前命令,Ctrl+D退出终端
2.2 用户与权限
- root用户:最高权限用户
- 普通用户:受限权限用户,执行系统级操作时需要
sudo提权 - 用户组:将多个用户归类,方便统一管理权限
2.3 环境变量
PATH:指定可执行文件的搜索路径HOME:当前用户的主目录路径USER:当前用户名SHELL:当前使用的Shell类型
三、实验环境
- 操作系统:Ubuntu Server 22.04 LTS(在VirtualBox虚拟机中)
- 前置条件:已完成实验五,至少有一台运行中的Ubuntu虚拟机
四、详细操作步骤
第一部分:系统基础操作
步骤一:登录与查看系统信息
1 | whoami # 查看当前用户 |
步骤二:文件与目录的基本操作
1 | ls -lh # 列出文件(详细信息,易读大小) |
⚠️
rm -rf命令会永久删除文件且不可恢复,请谨慎使用!
步骤三:查看系统资源状态
1 | free -h # 查看内存使用 |
第二部分:用户管理
步骤四:查看用户与组配置文件
1 | cat /etc/passwd # 用户账户信息 |
/etc/passwd文件格式:
1 | 用户名:密码占位符:UID:GID:用户描述:主目录:登录Shell |
步骤五:创建和管理用户
1 | sudo adduser testuser # 创建新用户 |
步骤六:文件权限管理
权限数字对照表:
| 数字 | 权限 | 含义 |
|---|---|---|
| 7 | rwx | 读+写+执行 |
| 6 | rw- | 读+写 |
| 5 | r-x | 读+执行 |
| 4 | r– | 只读 |
| 0 | — | 无权限 |
1 | chmod 755 test.txt # 数字法修改权限 |
第三部分:环境变量与配置文件
步骤七:查看环境变量
1 | env # 查看所有环境变量 |
步骤八:临时设置环境变量
1 | export PATH=$PATH:/home/dev/mybin # 临时添加PATH |
步骤九:永久设置环境变量(用户级)
| 配置文件 | 加载时机 | 作用范围 |
|---|---|---|
~/.bashrc |
每次打开新终端时执行 | 当前用户 |
~/.profile |
用户登录时执行一次 | 当前用户 |
~/.bash_profile |
用户登录时执行(优先于.profile) | 当前用户 |
编辑 ~/.bashrc:
1 | nano ~/.bashrc |
步骤十:永久设置环境变量(系统级)
方法一:/etc/environment (所有用户生效,需要重启):
1 | sudo nano /etc/environment |
方法二:/etc/profile (所有用户登录时执行):
1 | sudo nano /etc/profile |
方法三(推荐):/etc/profile.d/ :
1 | sudo nano /etc/profile.d/myenv.sh |
五、常见问题与排错
| 问题现象 | 可能原因 | 解决方法 |
|---|---|---|
sudo: command not found |
用户不在sudo组中 | 以root用户登录或切换到root |
Permission denied |
权限不足 | 使用sudo提权 |
修改~/.bashrc后不生效 |
未执行source |
执行source ~/.bashrc |
修改/etc/environment后不生效 |
需要重启 | 重启系统 |
实验七 远程登录管理
一、实验目标
- 安装和配置OpenSSH服务,实现多机之间的远程登录管理;
- 配置SSH密钥认证,实现免密登录;
- 了解多机开发环境下的账户管理方法;
- 掌握使用SCP和rsync进行跨机文件传输与同步。
二、背景知识
2.1 什么是SSH?
SSH(Secure Shell)是一种加密网络协议,用于在不安全的网络中安全地远程登录和执行命令。SSH默认使用22端口。
2.2 SSH的两种认证方式
| 认证方式 | 原理 | 安全性 | 适用场景 |
|---|---|---|---|
| 密码认证 | 每次登录输入密码 | 较低 | 临时访问 |
| 密钥认证 | 使用公钥/私钥对验证身份 | 高 | 日常管理、自动化脚本 |
2.3 文件传输工具
| 工具 | 特点 | 适用场景 |
|---|---|---|
| SCP | 基于SSH的简单复制 | 一次性、少量文件传输 |
| rsync | 增量同步,只传输变化的部分 | 目录同步、定期备份 |
三、实验环境
- 操作系统:Ubuntu Server 22.04 LTS
- 网络:所有虚拟机处于同一Host-Only网络(
192.168.56.0/24) - 前置条件:已完成实验五,拥有至少两台Ubuntu虚拟机(node1和node2)
四、详细操作步骤
第一部分:SSH服务安装与基础配置
步骤一:检查SSH服务状态
1 | sudo systemctl status ssh # 检查服务状态 |
步骤二:配置SSH服务器
编辑 /etc/ssh/sshd_config:
1 | sudo nano /etc/ssh/sshd_config |
关键配置项:
1 | # Port 22 # 默认端口 |
重启服务:
1 | sudo systemctl restart ssh |
第二部分:SSH密钥认证配置
步骤三:生成SSH密钥对(在node1上)
1 | ssh-keygen -t ed25519 -C "你的邮箱@example.com" |
生成后查看:
1 | ls ~/.ssh/ |
步骤四:将公钥复制到远程服务器
方法一(推荐) :
1 | ssh-copy-id dev@192.168.56.102 |
方法二(手动) :
1 | cat ~/.ssh/id_ed25519.pub |
步骤五:测试免密登录
1 | ssh dev@192.168.56.102 |
第三部分:文件传输
步骤六:使用SCP传输文件
1 | # 上传文件 |
步骤七:使用rsync同步文件
1 | # 安装rsync |
五、常见问题与排错
| 问题现象 | 可能原因 | 解决方法 |
|---|---|---|
ssh: command not found |
SSH客户端未安装 | sudo apt install openssh-client |
Connection refused |
SSH服务未运行 | sudo systemctl start ssh |
Permission denied |
密码错误或密钥未配置 | 检查用户名密码;检查authorized_keys |
| 配置免密后仍需密码 | 文件权限不对 | chmod 600 ~/.ssh/authorized_keys |
rsync: command not found |
远程未安装rsync | sudo apt install rsync -y |
实验八 软件部署
一、实验目标
- 综合运用前七个实验所学的各类工具;
- 构建和模拟一个完整的网络环境;
- 完整体验和实现Web静态站点从开发到部署的全过程;
- 掌握自动化部署(CI/CD)的基本概念与实践方法。
二、背景知识
2.1 什么是CI/CD?
| 概念 | 含义 | 在本实验中的体现 |
|---|---|---|
| 持续集成(CI) | 代码变更后自动进行构建和测试 | 推送代码后自动执行hexo generate |
| 持续部署(CD) | 构建通过后自动部署到生产环境 | 静态文件自动推送到GitHub Pages |
2.2 本实验的整体架构
1 | ┌─────────────────────────────────────────────────────────────────────────┐ |
三、实验环境
- 操作系统:Windows 10/11 + Ubuntu Server 22.04(虚拟机)
- 前置条件:已完成实验二、三、四、五、七
- 所需账号:GitHub账号
四、详细操作步骤
第一部分:GitHub Pages自动化部署
步骤一:准备工作
确认Hexo博客正常运行:
1 | cd ~/my-blog |
确认Git配置:
1 | git config --global user.name |
步骤二:创建两个GitHub仓库
| 仓库 | 名称 | 可见性 | 用途 |
|---|---|---|---|
| 源码仓库 | my-blog |
Private | 存放Hexo源码 |
| 部署仓库 | 用户名.github.io |
Public | 托管静态页面 |
步骤三:将本地项目关联到源码仓库
1 | cd ~/my-blog |
创建.gitignore:
1 | node_modules/ |
提交并推送:
1 | git add . |
步骤四:配置GitHub Actions
创建工作流目录和文件:
1 | mkdir -p .github/workflows |
配置文件内容(请修改用户名):
1 | name: Deploy to GitHub Pages |
提交并推送:
1 | git add .github/workflows/deploy.yml |
步骤五:生成并配置Personal Access Token
- GitHub → Settings → Developer settings → Personal access tokens
- Generate new token,勾选
repo权限 - 复制Token
- 在源码仓库 → Settings → Secrets → Actions → New repository secret
- Name:
PERSONAL_TOKEN - Secret: 粘贴Token
- Name:
步骤六:配置GitHub Pages
部署仓库 → Settings → Pages → Branch: main → Save
访问:https://你的用户名.github.io
第二部分:部署到云服务器(虚拟机)
步骤七:安装和配置Nginx
1 | sudo apt update |
创建站点目录:
1 | sudo mkdir -p /var/www/blog |
创建Nginx配置:
1 | sudo nano /etc/nginx/sites-available/blog |
1 | server { |
启用站点:
1 | sudo ln -s /etc/nginx/sites-available/blog /etc/nginx/sites-enabled/ |
步骤八:使用rsync部署
在本地生成静态文件:
1 | cd ~/my-blog |
同步到服务器:
1 | rsync -avz -e ssh --delete public/ dev@192.168.56.101:/var/www/blog/ |
访问虚拟机IP查看部署结果。
五、常见问题与排错
| 问题现象 | 可能原因 | 解决方法 |
|---|---|---|
| GitHub Actions失败 | Token权限不足 | 检查Token是否勾选repo权限 |
| GitHub Pages显示404 | 仓库命名错误 | 必须为用户名.github.io |
| 部署后样式丢失 | 站点URL配置错误 | 检查_config.yml中url字段 |
| rsync连接被拒绝 | SSH服务未运行 | sudo systemctl status ssh |
| Nginx显示默认页 | 站点配置未生效 | 检查sites-enabled链接 |
附录一:省流版搭建博客(不含虚拟机 / Linux)
如果你只是想把博客跑起来、上线,不用管实验五、六、七(虚拟机 / Linux / SSH)。
下面这条主线走完就够:装环境 → 建博客 → 写文章 → 换主题 → 上线。
你只需要装这 3 样软件
| 软件 | 作用 | 官网 |
|---|---|---|
| Node.js (LTS) | 运行 Hexo | nodejs.org |
| Git | 管理/推送代码 | git-scm.com |
| VS Code | 写 Markdown | code.visualstudio.com |
一条命令清单(在 Windows 的 CMD / PowerShell 里依次执行)
1 | # 1. 装好上面 3 个软件后,先验证环境 |
记住这 5 个命令
| 命令 | 作用 | 简写 |
|---|---|---|
hexo new "标题" |
新建文章 | — |
hexo server |
本地预览 | hexo s |
hexo generate |
生成静态文件 | hexo g |
hexo clean |
清理缓存(改主题后用它) | — |
hexo deploy |
发布到 GitHub Pages | hexo d |
总结
装 Node + Git + VS Code →
npm i -g hexo-cli→hexo init→hexo s预览 →hexo new写文章 → 换 NexT 主题 →hexo d上线。搞定。
附录二:怎么把博客做成科技感暗夜
效果:深空渐变背景 + 青色粒子连线 + 磨砂玻璃卡片 + 渐变色标题 + 点击涟漪特效 + 暗夜/亮色一键切换。
全程用 NexT 的自定义注入机制,不用改主题源码,想关随时能关。
第 0 步:前提
- 已经装了 Hexo + NexT 主题(建议 7.x 以上)。
- 会用 VS Code 打开项目,会敲
hexo clean && hexo generate。
第 1 步:认识 NexT 的”注入口”
NexT 允许你在项目目录里加自己的样式和脚本,而不动主题:
- 新建目录
source/_data/ - 在
themes/next/_config.yml里找到custom_file_path,去掉注释并填上:
1 | custom_file_path: |
⚠️ 坑1:这里的键名(
head/bodyEnd/style)千万别在前面加#(写成#head: xxx就是YAML注释,等于没写,主题不会加载你的文件)。
第 2 步:加一个”总开关”
还是在 themes/next/_config.yml,末尾追加:
1 | cyber: |
这样下面代码就能用 theme.cyber.enable / hexo-config('cyber.enable') 来判断,想整体关闭只需改成 false。
第 3 步:写样式 source/_data/styles.styl
它的作用顺序:先定一套 CSS 变量(深空色 + 青色 + 玻璃色)→ 再覆盖 NexT 的颜色变量,保证暗夜下文字/链接/按钮都清晰 → 最后给卡片、导航、标题套上玻璃和渐变。
把下面整段复制进去:
1 | // 科技感暗夜主题 —— 由 custom_file_path.style 加载 |
讲解关键几行:
backdrop-filter: blur(14px):这就是”磨砂玻璃”——把卡片后面的粒子/背景模糊掉,前提是卡片背景是半透明的(var(--cyber-card)里带rgba)。background-clip: text; -webkit-text-fill-color: transparent:把文字变成渐变透明镂空,显示的是背景的渐变色,这就是”渐变色标题”。.post-block + .post-block:首页相邻两篇文章的兄弟选择器,主题自带的高优先级规则会覆盖圆角/阴影,所以要一起写进去,否则第二篇起会少了圆角。
第 4 步:写脚本 source/_data/body-end.swig
在页面结尾注入:粒子画布、点击涟漪、主题切换按钮。
⚠️ 坑2:这是 swig / nunjucks 模板,不能用
hexo-config(...)(会报Unable to call config),必须用theme.cyber.*取主题配置。
只有.styl样式文件里才能用hexo-config()。
1 | {% if theme.cyber.enable %} |
讲解关键几行:
canvas.id = 'cyber-bg'+ CSS 里#cyber-bg { z-index:-1 }:让粒子画布垫在内容后面,而且pointer-events:none不挡点击。- 「距离小于
LINK的两点连一条线、透明度随距离变淡」:这就是粒子网络的经典算法。 setAttribute('data-theme', t):切主题,前端 CSS 用html[data-theme='light']来做选择器覆盖。
第 5 步:写 source/_data/head.swig,防开屏闪白
如果不写这一步,浏览器会先画一帧默认白底,再被 JS 切成暗夜,会”白屏闪烁”。加个头部的立即设置脚本:
1 | {% if theme.cyber.enable %} |
第 6 步:生成看效果
1 | hexo clean |
注意:NexT 的样式是编译进
public/css/main.css的(不是实时读取.styl),所以每次改了styles.styl/head.swig/body-end.swig或主题配置,都要重新hexo clean && hexo generate。
常见问题速查
| 现象 | 原因 | 解决 |
|---|---|---|
| 样式 / 脚本完全不生效 | custom_file_path 键名带了 # |
去掉首行 # |
模板报 Unable to call config |
在 swig/njk 模板里用了 hexo-config() |
改成 theme.cyber.* |
| 改了样式没变化 | 没重新生成 | 跑 hexo clean && hexo generate |
| 想整体关闭 | cyber.enable 设为 false |
重新生成 |
| 手机端没有粒子背景 | 移动端被 CSS/JS 隐藏 | 正常,桌面才有 |