服务器运维:Alibaba Cloud Linux 4 LTS 64位 根目录全景深度解析文章-CSDN博客
适配系统:Alibaba Cloud Linux 4 LTS(RHEL9 生态,64位)
适用场景:Vue/Vite 前端静态项目、SpringBoot 微服务后端、K3S 轻量 Kubernetes 容器集群部署
规范目标:统一前端静态部署、后端服务部署、K3S容器资源目录标准,实现系统目录、业务资源、容器资源完全隔离,适配测试/生产环境,降低运维维护成本,规避文件丢失、权限混乱、路径报错等常见问题。
一、全局目录选址总规则(前后端+K3S 通用)
1.1 核心原则
系统资源与业务资源隔离:系统配置存 /etc、系统日志存 /var/log,所有前后端业务代码、静态资源、容器配置统一独立存放,不侵入系统目录
前后端资源隔离:前端静态资源、后端服务程序、K3S容器资源分目录部署,互不干扰
禁止临时目录存业务:严禁 /tmp、/root 正式投产,规避系统自动清理、误删风险
容器与宿主机隔离:K3S 配置、镜像缓存、挂载卷独立目录,不混用前后端业务目录
1.2 全场景目录优先级对照表
部署场景 | 首选目录 | 推荐等级 | 核心适用场景 | 禁止/不推荐事项 |
|---|---|---|---|---|
Vue前端项目 | /opt/frontend/{项目名} | ⭐⭐⭐⭐⭐ 生产首选 | Vue2/Vue3、Vite、Nuxt静态打包项目,Nginx反向代理托管 | 不放在 /usr/share/nginx/html、/root、/tmp,避免全局覆盖、文件丢失 |
Java后端项目 | /opt/backend/{项目名} | ⭐⭐⭐⭐⭐ 生产首选 | SpringBoot、SpringCloud微服务、RPC网关、后台接口服务 | 禁止存放系统脚本、yum安装组件,不与前端资源混目录 |
中间件(源码部署) | /usr/local/{中间件名} | ⭐⭐⭐⭐⭐ 标准规范 | Nginx、Redis、RocketMQ、Seata、MinIO 手动编译安装 | 业务前后端代码禁止放入此目录,专属中间件程序 |
K3S 集群资源 | /opt/k3s | ⭐⭐⭐⭐⭐ 容器专属 | K3S 配置文件、持久化挂载卷、镜像缓存、集群脚本 | 禁止存放前后端原始业务代码,避免容器挂载冲突 |
多用户业务部署 | /home/{业务用户} | ⭐⭐⭐⭐ | 非root账号运行前后端项目,最小权限安全部署 | root运行的核心生产项目不建议放置此处 |
临时测试调试 | /root/workspace | ⭐⭐ | 前后端Demo测试、脚本调试、临时验证功能 | 严禁存放正式生产项目,权限开放高、易误删 |
全局临时文件 | /tmp | ❌ 完全禁止投产 | 仅用于解压安装包、临时缓存文件 | 系统定时自动清理,禁止放静态资源、jar包、配置、日志 |
二、Vue前端专属标准目录结构(生产规范)
适配:Vue3 + Vite、Vue2 + Webpack 打包后的 dist 静态资源,Nginx 托管部署
统一根路径:/opt/frontend/{项目名}(示例项目:web-admin 后台前端)
/opt/frontend/web-admin ├── dist/ # 核心打包静态资源(index.html、js、css、img、fonts) ├── config/ # 前端nginx专属配置、环境变量配置 │ ├── nginx.conf # 项目独立nginx代理配置(不修改全局nginx配置) │ └── env.js # 线上环境接口地址、静态资源配置 ├── logs/ # 前端访问日志、错误日志、nginx代理日志 ├── backup/ # 历史打包包、旧版本静态资源备份 ├── temp/ # 前端临时解压、更新缓存文件 └── script/ # 前端发布、回滚、更新自动化脚本2.1 前端目录用途详解
子目录 | 核心作用 | 运维部署规范 |
|---|---|---|
dist | 存放打包后的线上静态资源,是前端对外访问的核心目录 | 每次发布直接覆盖更新,禁止手动修改打包后文件,统一通过打包工具生成 |
config | 隔离项目专属Nginx配置,不污染全局 /etc/nginx 配置 | 全局Nginx通过 include 引入项目配置,多前端项目互不冲突 |
logs | 存放前端页面访问日志、404/500错误日志、接口代理日志 | 配置日志自动切割、定期清理,防止磁盘爆满 |
backup | 版本备份,支持快速回滚 | 每次发布前备份旧dist包,按日期命名归档 |
script | 自动化发布、灰度、回滚脚本 | 统一脚本权限,支持一键更新前端项目 |
2.2 前端目录一键生成命令
mkdir -p /opt/frontend/web-admin/{dist,config,logs,backup,temp,script}2.3 前端Nginx配置挂载规范
全局Nginx主配置(/etc/nginx/nginx.conf)只做通用配置,项目独立配置全部存业务目录,通过引入方式加载:
在 /etc/nginx/conf.d/ 新建软链接,指向前端项目配置,实现解耦:
ln -s /opt/frontend/web-admin/config/nginx.conf /etc/nginx/conf.d/web-admin.conf三、Java后端专属标准目录结构(延续生产规范)
统一根路径:/opt/backend/{项目名}(示例项目:product-center 产品微服务)
/opt/backend/product-center ├── app/ # SpringBoot Jar包存放目录 ├── config/ # 外部配置文件(yml、jvm参数、日志配置) ├── logs/ # 业务运行日志、异常日志 ├── script/ # 启停、重启、状态查询脚本 ├── data/ # 项目本地持久化文件 ├── backup/ # 版本Jar、配置备份 └── temp/ # 项目临时缓存文件3.1 后端一键目录生成命令
mkdir -p /opt/backend/product-center/{app,config,logs,script,data,backup,temp}四、K3S 容器集群专属部署目录规范
适配Alibaba Cloud Linux 4 环境K3S轻量集群,区分集群配置、持久化存储、资源清单、运维脚本,完全隔离前后端业务目录
统一根路径:/opt/k3s
/opt/k3s ├── config/ # K3S 集群核心配置、kubeconfig文件 ├── manifests/ # 全局自动部署yaml清单(K3S自动监听) ├── apps/ # 自定义前后端容器部署yaml、service、ingress配置 │ ├── frontend/ # Vue前端容器部署清单 │ └── backend/ # Java后端容器部署清单 ├── volume/ # 容器PV持久化挂载目录(静态资源、数据库数据、缓存) │ ├── frontend-data/ # 前端容器静态资源挂载 │ ├── backend-data/ # 后端服务数据挂载 │ └── middleware-data/# 中间件持久化数据(Redis、MySQL) ├── cache/ # 镜像缓存、临时容器文件 ├── logs/ # K3S集群日志、容器运行日志 └── script/ # 集群启停、资源更新、批量部署脚本4.1 K3S目录核心规范
目录 | 核心用途 | 部署规范 |
|---|---|---|
manifests | K3S原生自动加载目录,放入yaml可自动创建资源 | 仅放集群基础组件,业务前后端yaml统一放入 apps 目录 |
apps/frontend、apps/backend | 分类存放前后端容器部署配置,结构清晰 | 按项目拆分yaml,避免单文件臃肿,方便迭代更新 |
volume | 容器数据持久化,防止重建容器数据丢失 | 严格区分前后端、中间件挂载目录,权限单独配置 |
config | 集群凭证、访问配置 | 严格权限管控,禁止普通用户修改 |
4.2 K3S目录一键生成命令
mkdir -p /opt/k3s/{config,manifests,cache,logs,script} \ /opt/k3s/apps/{frontend,backend} \ /opt/k3s/volume/{frontend-data,backend-data,middleware-data}五、全场景统一权限规范(前后端+K3S)
生产环境强制遵循最小权限原则,禁止root直接运行业务/容器进程
部署场景 | 专属用户 | 目录权限 | 核心命令 |
|---|---|---|---|
Vue前端项目 | webuser(无登录权限) | 目录750、文件640 | useradd -s /sbin/nologin webuser && chown -R webuser:webuser /opt/frontend |
Java后端项目 | bizuser(无登录权限) | 目录750、文件640、脚本740 | useradd -s /sbin/nologin bizuser && chown -R bizuser:bizuser /opt/backend |
K3S集群目录 | k3suser | 目录700、配置文件600 | useradd -s /sbin/nologin k3suser && chown -R k3suser:k3suser /opt/k3s |
六、CI/CD 自动化部署专属目录规范
适配场景:Jenkins、GitLab CI、Gitee CI 自动化拉取代码、打包、构建、镜像制作、K3S容器发布、回滚流水线,完全对齐本机 Vue 前端、Java 后端、K3S 容器部署目录,实现构建目录、制品目录、镜像目录、K3S容器发布目录、缓存目录完全链路隔离,杜绝流水线冲突、旧包残留、发布覆盖异常容器发布异常、挂载失效等问题。
统一核心根路径:/opt/cicd(遵循 opt 语义:自定义可选业务程序,不归系统管控,全权自主运维)
6.1 CI/CD 完整目录树结构
/opt/cicd ├── jenkins/ # Jenkins服务本体、数据、插件、任务持久化目录 │ ├── data/ # Jenkins工作空间、任务、插件、用户数据 │ ├── config/ # Jenkins全局配置、安全策略、凭据配置 │ ├── logs/ # Jenkins服务运行日志 │ └── backup/ # Jenkins配置与数据定时备份 ├── gitlab/ # GitLab代码仓库服务本体、代码数据持久化 │ ├── data/ # Git代码仓库、提交记录、分支标签数据 │ ├── config/ # GitLab全局站点配置、邮箱、权限配置 │ ├── logs/ # GitLab运行日志、访问日志 │ └── backup/ # 代码仓库、配置全量备份 ├── workspace/ # CI/CD 流水线工作空间(代码拉取、编译、打包临时目录) │ ├── frontend/ # 前端项目构建工作区 │ └── backend/ # 后端项目构建工作区 ├── artifacts/ # 统一制品仓库(打包成品归档,长期留存) │ ├── frontend/ # 前端 dist 压缩包、版本归档 │ └── backend/ # 后端 Jar 包、版本归档 ├── k3s-release/ # 【K3S专属】容器发布资源目录 │ ├── image-build/ # 镜像构建Dockerfile、构建脚本 │ ├── yaml-temp/ # 动态生成的K3S临时部署YAML │ └── rollback/ # K3S版本回滚资源备份 ├── config/ # CI/CD 流水线专属配置 │ ├── pipeline/ # Jenkinsfile、CI 流水线脚本 │ └── env/ # 构建环境变量、私服地址、镜像仓库、K3S集群连接配置 ├── script/ # 自动化发布、灰度、回滚、清理脚本 ├── cache/ # 构建缓存(node_modules、maven 依赖缓存) ├── logs/ # 流水线构建日志、发布日志、K3S部署日志、异常日志 └── temp/ # 构建临时文件、解压缓存、临时资源6.2 CI/CD 核心目录用途详解
子目录 | 核心作用 | 运维规范 |
workspace | 流水线执行工作区,Git 拉取源码、npm/maven 编译打包、代码校验 | 每次构建自动清空冗余文件,避免旧代码残留导致打包异常;前后端工作区隔离互不干扰 |
artifacts | 成品制品归档,存储打包完成的 dist、Jar 包,按「项目名-版本号-日期」归档 | 永久留存历史版本,支持一键版本回滚、灰度发布,禁止随意删除 |
k3s-release | K3S容器发布专属资源,存放镜像构建配置、动态YAML、版本回滚包 | 专门承接容器化部署全流程,与宿主机部署资源完全隔离,避免YAML混乱、版本覆盖 |
config | 存放流水线文件、环境变量、私服、镜像仓库、K3S 集群连接配置 | 配置与工作空间隔离,升级构建环境、更新集群配置不丢失,统一版本管理 |
cache | 缓存前端 node 依赖、后端 maven 依赖,提升构建速度 | 定期清理过期缓存,避免磁盘占用过高,不影响正式制品与容器部署资源 |
logs | 记录每一次构建、发布、K3S容器部署、报错日志,方便排查流水线与集群异常 | 开启日志按天切割、自动压缩清理,保留近30天日志,区分宿主机部署、容器部署日志 |
6.3 CI/CD 目录一键生成命令
mkdir -p /opt/cicd/{jenkins,gitlab,workspace,artifacts,config,script,cache,logs,temp,k3s-release} \ /opt/cicd/jenkins/{data,config,logs,backup} \ /opt/cicd/gitlab/{data,config,logs,backup} \ /opt/cicd/workspace/{frontend,backend} \ /opt/cicd/artifacts/{frontend,backend} \ /opt/cicd/config/{pipeline,env} \ /opt/cicd/k3s-release/{image-build,yaml-temp,rollback}6.4 CI/CD 目录选址逻辑(对齐全文规范)
语义合规:/opt 为系统非必需的自定义业务目录,CI/CD 自动化属于业务运维工具,完全契合 opt=Optional 设计语义,不侵入系统内核目录
全局统一:前端/后端/K3S/CI/CD 全部收敛在 /opt,形成完整业务闭环,目录层级统一、运维逻辑一致
全场景闭环:前端/后端/K3S容器/CI/CD流水线全部收敛在 /opt,宿主机部署、容器化部署双模式目录独立、规范统一,无场景遗漏
6.5 CI/CD 发布联动规范(核心闭环)
流水线发布路径严格对齐前文部署目录,实现构建→归档→发布闭环:
前端:/opt/cicd/artifacts/frontend 制品 → 发布至 /opt/frontend/{项目名}/dist(宿主机Nginx托管)
后端主机部署:/opt/cicd/artifacts/backend 制品 → 发布至 /opt/backend/{项目名}/app
K3S容器部署:CI/CD 构建前后端镜像、推送镜像仓库 → 读取 /opt/cicd/k3s-release 配置 → 动态更新 /opt/k3s/apps 业务YAML → K3S集群重载完成部署、扩容、回滚全流程
6.6 CI/CD 专属权限规范
沿用最小权限原则,统一运维账号,避免 root 运行流水线
useradd -s /sbin/nologin cicduser && chown -R cicduser:cicduser /opt/cicd七、文件分类存放总规范(统一收口)
文件类型 | 前端存放路径 | 后端存放路径 | K3S容器存放路径 | 系统配置路径 |
|---|---|---|---|---|
业务程序/静态资源 | /opt/frontend/项目名/dist | /opt/backend/项目名/app | 容器内部镜像打包 | 不存放业务程序 |
自定义配置文件 | /opt/frontend/项目名/config | /opt/backend/项目名/config | /opt/k3s/apps/* | /etc(全局组件配置) |
运行日志 | /opt/frontend/项目名/logs | /opt/backend/项目名/logs | /opt/k3s/logs | /var/log(系统日志) |
启停/部署脚本 | /opt/frontend/项目名/script | /opt/backend/项目名/script | /opt/k3s/script | 不存放业务脚本 |
备份文件 | /opt/frontend/项目名/backup | /opt/backend/项目名/backup | 手动归档服务器备份目录 | 无 |
持久化数据 | 无需持久化 | /opt/backend/项目名/data | /opt/k3s/volume/* | 无 |
八、上线避坑核对清单(前后端+K3S通用)
✅ Vue静态资源、后端Jar包、K3S容器配置,全部存放 /opt 业务目录,不侵入系统目录
✅ 前端Nginx配置独立业务目录,通过软链接引入全局配置,不修改系统默认配置
✅ 前后端配置文件与程序包物理分离,升级迭代不覆盖配置
✅ K3S业务yaml清单分类存放,与集群基础组件配置隔离
✅ 所有正式业务不存 /tmp、/root,杜绝文件丢失、权限泄露风险
✅ 生产环境使用独立业务用户运行服务,禁止root常驻运行业务、容器进程
✅ 日志目录独立配置,开启自动切割清理,防止磁盘占满宕机
✅ 容器持久化目录单独挂载,避免容器重建导致数据丢失