运维与架构

服务器与架构运维手册

服务器与架构运维手册

作者:洋柿子·2026-09-01·共 5 篇 · 当前 5

title: 服务器与架构运维手册 tags: [知识提炼, 随笔提炼, 运维, 架构, Docker, "2026-05-08", "2026-05-11", "2026-06-02", "2026-07-27", "2026-08-18", "2026-08-21"] source: main/随笔/ created: 2026-08-30

服务器与架构运维手册

提炼自 main/随笔/ 共 6 篇日常随笔。来源日期见文首日期标签与文末「来源随笔汇总」。 自建服务器与多站点架构的一手实操:账号隔离、端口规划、Docker、框架选型、MCP 踩坑。

一、服务器账号职责隔离(安全基线)

三个账号各司其职,绝不混用:

账号 权限 用途 说明
deploy 带 sudo,密钥 SSH 运维账号,唯一登录入口 绝不跑业务代码
appuser 完全无 sudo 业务账号,所有项目以它运行 被入侵也不至于拿到 root
root SSH 远程禁用 仅本地控制台 堵死最常见的爆破入口

落目录属:

mkdir -p /home/appuser/myapp && chown -R appuser:appuser /home/appuser/myapp
# 多项目按账号隔离
chown -R app-a:app-a /home/app-a/projA

二、端口集中规划

所有业务端口集中到 8650–9000 区间(实际落地 8650–8701),便于统一管理、防火墙放行与记忆 [[2026年08月18日的随笔]]

三、实际架构清单(2026-08 快照)

组件 实现 端口 / 备注
Web 服务器 Caddy(Docker,host 网络) 80 / 443
bytecove-blog Spring Boot(PostgreSQL + Redis) —
yuechuji-api Python Flask 8651
WatchVault .NET 5000 ⚠️ 对外暴露,建议只监听 127.0.0.1
swap 2 个文件共 4 GB —

四、架构决策

Monorepo 多子站:pnpm workspaces + apps/*,每个子站独立 vite.config、独立 tailwind、独立样式;Vue 用 scoped,React 用 css-module,禁止全局公共主题包。

核心原则:业务隔离优先级高于代码复用——每个子站是独立产品,仅通过完整超链接跳转关联 [[2026年08月18日的随笔]]

框架选型踩坑:

  • Spa 不适合 Agent 开发,要用 React + Next.js(Vercel 出品的 React 元框架)
  • 看重 SEO 用 Nuxt3 / Next.js,每个 app 独立 SSR/SSG [[2026年08月18日的随笔]]

DNS 风险:全部子域名打到同一台服务器,靠 Nginx Host 虚拟主机区分站点 → 属单点架构,单机故障即全站不可用 [[2026年08月18日的随笔]]

五、Docker 实操链(Windows Docker Desktop 29.5.2 / WSL2)

docker run hello-world
docker pull eclipse-temurin:8-jdk
docker build -t my-java-app .
docker run --rm my-java-app

Dockerfile 编译 Java:WORKDIR /app → COPY Hello.java . → RUN javac Hello.java

镜像体积实测:eclipse-temurin:8-jdk 450 MB / postgres:18-alpine 409 MB / hello-world 25.9 kB

起 Postgres:docker run -d -p 5432:5432 -e POSTGRES_PASSWORD=root postgres:18-alpine [[2026年06月02日的随笔]]

MySQL 9:

docker run -d --name mysql \
  -e MYSQL_ROOT_PASSWORD=123456 -e MYSQL_DATABASE=gdp_warehouse \
  -e MYSQL_USER=mike -e MYSQL_PASSWORD=123456 \
  -p 3306:3306 -v mysql_data:/var/lib/mysql \
  mysql:9.0 --default-authentication-plugin=mysql_native_password

六、Docker vs 虚拟机:怎么选

场景 选择 理由
常规业务 Docker 轻量、启动快
政企涉密环境 虚拟机(VMware) 容器共享内核,隔离等级不足;涉密需 CPU/内存硬件级隔离 [[2026年06月02日的随笔]]

七、后端选型:PHP vs Spring Boot

框架 定位 适用
PHP Web 开发「瑞士军刀」,8.5 版性能与安全质变 中小企业 / 个人快速构建
Spring Boot 企业级「航空母舰」 复杂、高并发、高可用系统

本地起服务:php -S localhost:8000 [[2026年05月08日的随笔]]

八、前端基础速查

  • Vue Router:createRouter({ history: createWebHistory(), routes });滚动行为 if (savedPosition) return savedPosition
  • pnpm 安装(Windows):Invoke-WebRequest https://get.pnpm.io/install.ps1 -UseBasicParsing | Invoke-Expression,然后 pnpm create vite
  • 识别网站用的什么框架:Vue → 控制台输入 Vue 看是否定义,或查元素上的 data-v-xxx 属性;React → 看根节点的 data-reactroot,或控制台输入 React 验证 [[2026年05月11日的随笔]]

九、MCP 协议踩坑

WatchVault.McpServer\Program.cs 的协议循环缺 initialize 响应分支(需补 5–10 行后重新 dotnet publish)。 不改的话这个 MCP 装不上、用不了——不是配置问题,是协议握手没实现 [[2026年08月18日的随笔]]


来源随笔汇总

  • [[2026年05月08日的随笔]] — PHP vs Spring Boot 定位、pnpm 安装
  • [[2026年05月11日的随笔]] — 前端框架识别技巧
  • [[2026年06月02日的随笔]] — Docker 实操链、镜像体积、Docker vs VMware 选型、Vue Router
  • [[2026年07月27日的随笔]] — MySQL 9 Docker 起法
  • [[2026年08月18日的随笔]] — 账号隔离、端口规划、Monorepo 决策、架构踩坑、DNS 风险、MCP 坑
  • [[2026年08月21日的随笔]] — 实际服务器架构清单(Caddy / Spring Boot / Flask / .NET / swap)