Samba + SSH 隧道:本地 IDE 直接编辑服务器文件

背景 远程开发模式下,代码跑在服务器上,但本地 IDE 更趁手。 问题来了:怎么让本地编辑器直接访问服务器上的文件? 方案不少:FTP 同步、网盘同步、rsync……但总觉得不够优雅。要么配置繁琐,要么实时性差,要么得装一堆东西。 方案:Samba + SSH 隧道 核心思路: 服务器上跑 Samba — 提供文件共享服务 SSH 隧道转发 — 把 Samba 端口安全地映射到本地 本地挂载 — 像操作本地文件夹一样操作远程文件 这样做的优点: ✅ 无需额外客户端软件 ✅ 实时同步,所见即所得 ✅ SSH 加密,安全可靠 ✅ 本地 IDE 原生支持 服务端配置 Samba 安装 Samba sudo apt update sudo apt install samba 创建共享目录 # 创建共享目录(或使用现有项目目录) mkdir -p ~/projects # 备份原始配置 sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.bak 编辑配置文件 编辑 /etc/samba/smb.conf,在末尾添加: [projects] path = /home/youruser/projects browseable = yes read only = no create mask = 0644 directory mask = 0755 valid users = youruser 记得把 youruser 和路径换成你自己的。 ...

January 9, 2025 · 开发技巧 · 2 min · 219 words · map[email:onetick@live.cn name:Hongyu]

离线自动化部署脚本设计与实现——企业级微服务K8s部署实践

写在前面 在企业级微服务架构的落地过程中,部署往往是最让人头疼的环节之一。特别是当你的客户要求"断网部署"、“一键安装”、“版本可追溯"时,传统的手动部署或CI/CD流水线方案就显得力不从心了。 这篇文章记录了我为某企业级微服务系统设计的一套离线自动化部署脚本——从背景痛点到架构设计,再到核心实现细节。希望能给同样面临类似场景的同行一些参考。 背景:为什么需要离线自动化部署? 痛点分析 我们团队负责的系统是基于一个成熟的企业级微服务框架二次开发的,整套系统包含: 13个核心微服务(注册中心、网关、认证、权限等) 多种中间件(MySQL、MongoDB、Redis、MinIO) ONLYOFFICE文档编辑服务 每次给客户现场部署时,我们都要面对这些问题: 耗时漫长:手动部署整套系统需要数小时,而且容易出错 网络限制:很多客户现场是内网环境,无法访问外网镜像仓库 版本混乱:手动记录版本信息容易遗漏,出问题难以追溯 环境差异:开发、测试、生产环境配置各不相同,切换困难 设计目标 基于这些问题,我确定了设计目标: 离线部署 + 一键执行 + 版本可追溯 + 多环境支持 架构设计:模块化脚本职责划分 整体方案采用Shell脚本实现(约450行核心代码),核心思路是职责分离、配置集中。 目录结构 deploy/ ├── deploy.sh # 主入口:环境准备 + 数据库初始化 ├── service.sh # K8s部署核心逻辑(install/uninstall) ├── initChart.sh # Helm Chart生成 + 版本信息SQL ├── services.sh # 服务列表定义(版本化管理) ├── vars.sh # 环境变量集中管理 ├── func.sh # 公共函数(字符串处理、分组解析) ├── k8s/ # K8s资源文件(PV/PVC/Deployment) ├── values/ # Helm Values配置(多环境支持) ├── mysql/ # 数据库初始化SQL ├── images/ # Docker镜像包(离线部署用) └── charts/ # Helm Chart包(离线部署用) 职责划分 脚本 职责 关键功能 deploy.sh 主编排 依赖检查、流程控制、数据库初始化 service.sh K8s操作 服务部署/卸载、镜像导入、Chart生成 initChart.sh Chart管理 模板渲染、版本SQL生成 services.sh 服务清单 版本化服务列表定义 vars.sh 配置中心 环境变量集中管理 func.sh 工具库 正则解析、日志输出等通用函数 这种设计让每个脚本职责单一,修改某个环节不会牵一发动全身。 ...

August 16, 2023 · 技术 · 3 min · 503 words · map[email:onetick@live.cn name:Hongyu]