43、【Ubuntu】【Gitlab】拉出内网 Web 服务:静态&动态服务

【声明】本博客所有内容均为个人业余时间创作,所述技术案例均来自公开开源项目(如Github,Apache基金会),不涉及任何企业机密或未公开技术,如有侵权请联系删除

背景

上篇 blog
【Ubuntu】【远程开发】拉出内网 Web 服务:后台运行(三)

初步讲了如何从内网拉出由 Sphinx 构建出的静态 HTML,结合之前 blog
【Ubuntu】【GitLab】局域网用 Ubuntu 搭建 GitLab

最开始搭建的局域网代码托管平台 Gitlab,下面将详细分析 Gitlab 的内网拉出过程

静态&动态服务

在拉出 Gitlab 内网服务前,首先回顾下之前用 Sphinx 配合 python http.server 的构建命令

bash 复制代码
python -m http.server 8000

在这里,Python 将启动一个非常简单HTTP 静态文件服务器,该服务器会:

  • 把当前目录当作网站根目录
  • 对请求的路径(比如 /index.html)直接映射到本地文件系统
  • 这种服务器不执行任何后端逻辑,只提供静态文件 ,适合用来临时预览静态 HTML 文件,比如这里的 Sphinx 打包构建后的产物

所以总结一下,Sphinx 构建打包成功后,会生成一个完整的纯静态网站 (从服务器上看就是一个文件夹),里面存放着包括 index.html*.css*.js,图片等资源,内部链接都是相对路径或绝对路径(相对于站点根),这些文件不需要服务端处理,只要能通过 HTTP 正确返回文件内容即可

这里的静态网站指的是一堆预先写好的 HTML*.css*.js,图片等文件,服务器直接原样返回给浏览器,不做任何修改或计算 ,比如用户访问 Sphinx 构建好的网站 http://ServerIp:ServerPort/index.html,服务器会直接把 index.html 文件内容发过去,这期间

  • 没有数据库查询;
  • 没有用户登录状态判断;
  • 没有根据用户不同显示不同内容(除非用前端 JS 动态处理)

也就是内容在服务器上是提前准备好,固定不变,无需服务器计算的,不会因为谁访问,什么时候访问而改变

OK,分析完 Sphinx 构建的静态内容,下面再来看下动态与之的区别

  • 内容生成时机 :静态网站是构建时提前生成好 ,而动态网站是用户访问时实时生成
  • 后端程序 :静态网站不需要后端程序,只要把对应位置的文件内容返回即可,而动态网站则需要后端程序,比如 Ruby,Node.js 等
  • 数据库依赖:静态网站不需要依赖数据库,其内容来源于目录下的文件,而动态网站通常需要数据库,用来存储一些结构化的,可变的数据,比如用户信息,内容数据,交互数据,日志等
  • 响应速度:静态网站直接返回文件,响应很快,而动态网站相对较慢,因为要计算,查库
  • 典型例子:静态网站如 Sphinx 文档,博客,企业官网等,而动态网站如 GitLab,淘宝,微信,知乎等涉及内容交互的

对于 GitLab 来说,GitLab 提供的 Web 服务是典型的动态网站,比如

  • 浏览器发送请求到内网中的 GitLab 服务器
  • GitLab 后端(Ruby)收到请求后,首先查看用户是谁,是否已登录,权限如何,然后接着查询数据库,查看这个项目下的文件,以及最近的提交都有哪些
  • 收集完这些信息,再动态拼接处一个 HTML 页面,最后把这个页面返还给用户

可以看到,GitLab 的网页内容是和用户有交互,动态生成的,而不是提前写死的 HTML 文件,所以后面分析的,会和之前 Sphinx 构建的静态网站有所区别


OK,本篇先到这里,如有疑问,欢迎评论区留言讨论,祝各位功力大涨,技术更上一层楼!!!更多内容见下篇 blog

相关推荐
xiaofeichaichai4 小时前
Webpack
前端·webpack·node.js
问心无愧05134 小时前
ctf show web入门111
android·前端·笔记
唐某人丶4 小时前
模型越来越强,我们还需要 Agent 工程吗?—— 从价值重估到 Harness 实践
前端·agent·ai编程
智码看视界4 小时前
现代Web开发基础:全栈工程师的起航点
前端·后端·c5全栈
JS菌5 小时前
手写一个 AI Agent 全栈项目:从沙箱执行到子智能体的完整实现
前端·人工智能·后端
excel6 小时前
HLS TS 文件损坏的元凶:Git 提交与拉取
前端
Aphasia3116 小时前
https连接传输流程
前端·面试
徐小夕6 小时前
万字长文!千万级文档 RAG 知识库系统落地实践
前端·算法·github
threelab6 小时前
Three.js 物理模拟着色器 | 三维可视化 / AI 提示词
开发语言·前端·javascript·人工智能·3d·着色器