VSCode无原生一键部署,需借插件或脚本封装rsync/scp/FTP/SSH;FTP-Sync适合静态站与PHP小项目,但须配对宝塔FTP根目录且禁用uploadOnSave;rsync+tasks.json更适构建型项目,注意--delete风险与路径一致性;Remote-SSH仅限调试,不可用于生产部署。

VSCode 本身没有“一键部署”功能,所谓一键,本质是用插件或脚本把 rsync、scp、FTP 或 SSH 命令封装成可触发动作——选错工具或配错参数,轻则上传失败,重则覆盖线上配置甚至删库。
用 FTP-Sync 插件传文件到宝塔 FTP 服务器
适合静态网站、PHP 小项目、没开 SSH 权限的共享主机。它不依赖命令行,纯图形化操作,但只支持 FTP/SFTP,不走 SSH 通道。
- 必须在宝塔面板里为项目单独建 FTP 账号,并限定根目录(比如
/www/wwwroot/myapp),不能给账号全站权限 - VSCode 中安装插件
FTP-Sync(作者: lukehoban),不是同名的其他插件 -
.vscode/ftpsync.json配置里"remotePath"必须以/开头,且和宝塔里设置的 FTP 根目录完全一致,多一个斜杠或少一个都会上传到错误位置 - 慎用
"uploadOnSave": true:保存即上传,本地改错一行,线上立刻报错;建议关掉,手动右键 → “Sync to Server” 更可控 - 如果上传后页面 500,先检查宝塔里该目录的属主是否为
www,FTP-Sync 不会自动改权限,需进宝塔“文件”页手动修复
用 tasks.json 调用 rsync 实现受控同步
适合 Node.js、Python、Vue 等需要构建后再部署的项目,也是最接近真实发布流程的方式。它把部署逻辑从编辑器里解耦出来,便于加校验、日志、回滚步骤。
- 在项目根目录建
deploy.sh,内容类似:rsync -avz --delete --exclude='.git' --exclude='node_modules' --exclude='.env' ./dist/ user@host:/var/www/myapp/
-
.vscode/tasks.json中定义任务,"command"指向这个脚本,别直接写 rsync 命令——出错难调试,也不方便加npm run build前置步骤 - Windows 用户注意:
rsync在原生 Windows VSCode 里不可用,要么用 WSL2,要么换scp+sshpass(不推荐,密码明文风险) -
--delete是双刃剑:本地删了文件,远程也删。上线前务必确认--exclude列表已包含所有敏感文件(如config.php、database.yml)
用 Remote-SSH 直接编辑远程文件
适合调试阶段快速改配置、查日志,但绝不能当“生产部署工具”用——它绕过所有构建、测试、版本控制环节。
- 装好官方
Remote-SSH插件后,连接成功只是第一步;真正卡住的是权限:编辑/etc/nginx/conf.d/下的文件时,VSCode 会提示Permission denied,这不是插件问题,是 Linux 文件属主限制 - 不要为了省事给 nginx 配置目录加
chmod 777,正确做法是在宝塔里“文件”页右键 → “权限”,把属主设为你的 SSH 用户,或用sudo setfacl加细粒度权限 - 如果项目用 PM2 管理进程,改完代码后得手动 SSH 进去执行
pm2 reload myapp,VSCode 里没法自动触发——它只是编辑器,不是运维平台
真正容易被忽略的点是路径一致性:宝塔里看到的路径、rsync 里的目标路径、Nginx root 配置指向的路径,三者必须严格对齐。差一个字母,就变成 404 或 502。别信“应该差不多”,上线前用 ls -la 手动核对一次。


















