fix
本仓库是 SEED Labs 中文展示站点。它维护网站页面、实验入口、中文 PDF、Labsetup 压缩包、图片和部署脚本。
注意:本仓库当前不直接保存 LaTeX 源码。实验 Tex 源码在 SEEDLabs 源仓库中维护,例如本机常见路径:
D:\git\SEEDLabs\category-*\实验名\*.tex D:\git\SEEDLabs\common-files\
网站项目里主要保存已经整理好的展示内容:
Labs_20.04/
. ├─ Labs_20.04/ 实验网站内容,当前手动维护 │ ├─ index.html 实验分类入口页 │ ├─ Software/ 软件安全分类页和实验页 │ ├─ Networking/ 网络安全分类页和实验页 │ ├─ Web/ Web 安全分类页和实验页 │ ├─ Crypto/ 密码学分类页和实验页 │ ├─ System/ 系统安全分类页和实验页 │ ├─ Blockchain/ 区块链分类页和实验页 │ ├─ PDF/ 中文实验 PDF │ └─ Labsetup/ 实验环境压缩包 ├─ assets/ 网站样式、图片等静态资源 ├─ deploy/ Docker / Apache 配置 ├─ manuals/ VM、Docker 等说明文档 ├─ pages/ 普通页面,如新闻、关于、论文等 ├─ scripts/ 资源同步、预览、提交脚本 ├─ _data/ 导航等 Jekyll 数据 ├─ _includes/ Jekyll 公共片段 ├─ _layouts/ Jekyll 页面布局 ├─ index.md 首页 ├─ labs.html 跳转到 /Labs_20.04/ ├─ Dockerfile GitLink / Docker 构建使用 └─ README.md
当前实验页面不再由 _data/lab_portal.json 自动生成,而是手动维护在:
_data/lab_portal.json
分类入口页:
Labs_20.04/index.html
这里的实验分类已经按当前顺序直接写出,不再遍历数据。
分类页:
Labs_20.04/Software/index.html Labs_20.04/Networking/index.html ...
这些分类页里的子实验列表也已经直接写出,不再遍历 site.pages。
site.pages
单个实验详情页:
Labs_20.04/<分类>/<实验名>/index.html
实验详情页通过 front matter 控制标题、展示信息和简介,例如:
--- layout: layout_lab_cn category_key: "Blockchain" title: "区块链探索实验" labname: "Blockchain_Exploration" type: "explore" image: "blockchain_exploration.png" docker: yes arm: no supervised: "2 小时" unsupervised: "1 周" description: >- 本实验帮助学生获得与以太坊区块链交互的实践经验。 ---
description 会同时用于分类列表和实验详情页概述。如果实验正文为空,详情页会自动使用 description 显示概述。
description
假设要在网络安全里新增实验 New_Lab:
New_Lab
Labs_20.04/Networking/New_Lab/
Labs_20.04/Networking/New_Lab/index.html
Labs_20.04/Networking/New_Lab/new_lab.png
Labs_20.04/PDF/New_Lab_cn.pdf
Labs_20.04/Labsetup/New_Lab/Labsetup.zip Labs_20.04/Labsetup/New_Lab/Labsetup-arm.zip
Labs_20.04/Networking/index.html
把新实验卡片加入正确位置,并同步修改顶部实验数量。
如果新增的是实验分类,还需要同步更新:
当前网站项目里没有 Tex 文件。Tex 源码来自 SEEDLabs 源仓库:
https://gitlink.org.cn/seed/SEEDLabs.git
本机开发时通常在:
D:\git\SEEDLabs
scripts/01-sync-resources-from-seedlabs.sh 会把远端源码临时拉到:
scripts/01-sync-resources-from-seedlabs.sh
.course-content/SEEDLabs
这个目录只是同步缓存,不提交。
脚本说明见:
scripts/README.md
常用命令:
chmod +x scripts/*.sh
同步 PDF 和 Labsetup 资源:
bash scripts/01-sync-resources-from-seedlabs.sh
本地 Docker 预览:
bash scripts/02-preview-site.sh
默认监听:
http://服务器IP:4000/
提交并推送当前分支:
bash scripts/03-commit-and-push.sh
如果本机已经安装 Ruby / Bundler,可以直接构建:
bundle exec jekyll build --trace
生成目录:
_site/
_site/ 是 Jekyll 输出目录,不提交。
这些目录是临时构建或缓存内容,默认不提交:
_site/ site/ .jekyll-cache/ .course-content/ vendor/
Labs_20.04/、Labs_20.04/PDF/、Labs_20.04/Labsetup/ 是当前网站需要的内容,应提交到仓库。
Labs_20.04/PDF/
Labs_20.04/Labsetup/
只编译静态站点:
bundle exec jekyll build
编译结果输出到:
启动本地预览服务:
bundle exec jekyll serve --host 127.0.0.1 --port 4000
浏览器访问:
http://127.0.0.1:4000/
如果本机没有 Ruby/Jekyll,但有 Docker,可以用脚本启动预览:
这个脚本默认监听 0.0.0.0:4000。如果在服务器上运行,可以访问:
0.0.0.0:4000
换端口:
PORT=4001 bash scripts/02-preview-site.sh
停止预览服务:在运行服务的终端按 Ctrl+C。
Ctrl+C
版权所有:中国计算机学会技术支持:开源发展技术委员会 京ICP备13000930号-9 京公网安备 11010802047560号
SEED Labs 开源网络安全实验课程
本仓库是 SEED Labs 中文展示站点。它维护网站页面、实验入口、中文 PDF、Labsetup 压缩包、图片和部署脚本。
注意:本仓库当前不直接保存 LaTeX 源码。实验 Tex 源码在 SEEDLabs 源仓库中维护,例如本机常见路径:
网站项目里主要保存已经整理好的展示内容:
目录结构
实验页面维护方式
当前实验页面不再由
_data/lab_portal.json自动生成,而是手动维护在:分类入口页:
这里的实验分类已经按当前顺序直接写出,不再遍历数据。
分类页:
这些分类页里的子实验列表也已经直接写出,不再遍历
site.pages。单个实验详情页:
实验详情页通过 front matter 控制标题、展示信息和简介,例如:
description会同时用于分类列表和实验详情页概述。如果实验正文为空,详情页会自动使用description显示概述。新增实验
假设要在网络安全里新增实验
New_Lab:把新实验卡片加入正确位置,并同步修改顶部实验数量。
如果新增的是实验分类,还需要同步更新:
Tex 源码位置
当前网站项目里没有 Tex 文件。Tex 源码来自 SEEDLabs 源仓库:
本机开发时通常在:
scripts/01-sync-resources-from-seedlabs.sh会把远端源码临时拉到:这个目录只是同步缓存,不提交。
脚本
脚本说明见:
常用命令:
同步 PDF 和 Labsetup 资源:
本地 Docker 预览:
默认监听:
提交并推送当前分支:
本地构建
如果本机已经安装 Ruby / Bundler,可以直接构建:
生成目录:
_site/是 Jekyll 输出目录,不提交。不提交的内容
这些目录是临时构建或缓存内容,默认不提交:
Labs_20.04/、Labs_20.04/PDF/、Labs_20.04/Labsetup/是当前网站需要的内容,应提交到仓库。本地编译和启动
只编译静态站点:
编译结果输出到:
启动本地预览服务:
浏览器访问:
如果本机没有 Ruby/Jekyll,但有 Docker,可以用脚本启动预览:
这个脚本默认监听
0.0.0.0:4000。如果在服务器上运行,可以访问:换端口:
停止预览服务:在运行服务的终端按
Ctrl+C。