BEVDet前向投影原理与车规级部署实践
2026/6/23 4:26:04
在家办公、异地协作越来越普遍。
但开发环境不只是写代码,还要连数据库、访问测试服务器、同步代码。这篇分享一下我的远程开发环境搭建经验。
远程开发要解决几个问题:
最简单的方式,代码全靠Git同步。
# 家里gitpull origin develop# 改代码gitpush origin develop# 公司gitpull origin develop问题:
适合:代码改动不频繁的场景
直接连到服务器上开发,代码在服务器上。
// .ssh/configHost dev-server HostName 服务器IPUser yourname IdentityFile~/.ssh/id_rsaVSCode安装Remote-SSH插件,直接连上去写代码。
优点:
缺点:
本地写代码,自动同步到服务器。
# 本地→服务器rsync-avz--exclude'.git'--exclude'node_modules'\~/project/ server:/home/user/project/# 监听文件变化自动同步fswatch-o~/project|xargs-n1-I{}rsync-avz~/project/ server:/home/user/project/或者用lsyncd:
-- /etc/lsyncd/lsyncd.conf.luasync{default.rsync,source="/home/user/project",target="server:/home/user/project",rsync={archive=true,compress=true,_extra={"--exclude",".git","--exclude","node_modules"}}}适合:需要本地IDE + 服务器环境的场景
最常用的安全方式。
# 建立隧道ssh-L3307:localhost:3306 user@server-N# 然后本地连接mysql-h127.0.0.1-P3307-udbuser-p或者写个脚本一键启动:
#!/bin/bash# connect_db.sh# 启动SSH隧道(后台运行)ssh-f-N-L3307:localhost:3306 user@dev-server# 启动Redis隧道ssh-f-N-L6380:localhost:6379 user@dev-serverecho"隧道已建立"echo"MySQL: localhost:3307"echo"Redis: localhost:6380"Navicat/DataGrip配置SSH隧道:
SSH: Host: 服务器IP Port: 22 User: yourname Auth: Private Key MySQL: Host: localhost (注意是localhost) Port: 3306如果经常连多个内部服务,每次建SSH隧道很麻烦。
更好的方式是把你的电脑"加入"公司内网:
你的电脑 ←→ 虚拟网络 ←→ 公司内网 ↓ 直接连内网IP我用的是星空组网,装个客户端就能把不同地方的设备组成一个虚拟局域网。
配置好之后:
# 直接连内网地址mysql-h192.168.1.100-udbuser-p# Redis也是redis-cli-h192.168.1.101# 甚至可以访问内部Web服务curlhttp://192.168.1.102:8080/api/test就像在公司一样。
如果网络不稳定,可以在本地跑一个数据库副本。
# 定期从测试环境导出mysqldump-htest-server-uuser-p--databasestest_db>backup.sql# 导入到本地mysql-uroot-p<backup.sql可以写个脚本定时同步:
#!/bin/bash# sync_db.sh# 导出测试环境数据(脱敏)mysqldump-htest-server-uuser-p\--databasestest_db\--ignore-table=test_db.sensitive_table\>/tmp/sync.sql# 导入本地mysql-uroot-p</tmp/sync.sqlecho"数据同步完成:$(date)"除了数据库,开发中还要访问各种内部服务:
# 一个SSH连接建多个隧道ssh-L3307:db-server:3306\-L6380:redis-server:6379\-L8081:jenkins:8080\-L9090:prometheus:9090\user@jump-server-N# ~/.ssh/config Host work HostName jump-server-ip User yourname IdentityFile ~/.ssh/id_rsa LocalForward 3307 db-server:3306 LocalForward 6380 redis-server:6379 LocalForward 8081 jenkins:8080然后只需要:
sshwork-N组网后所有内部服务都可以直接访问,不用一个个配隧道。
# 上传scplocal_file user@server:/path/# 下载scpuser@server:/path/remote_file ./# 目录同步rsync-avz--progressuser@server:/data/ ./data/# 服务器端压缩tar-czf- /large/dir|sshuser@server"cat > backup.tar.gz"# 或者用rsync的压缩rsync-avz--compress-level=9large_file user@server:/path/# rsync支持断点续传rsync-avz--partial--progresslarge_file user@server:/path/分享一下我的配置:
家里电脑 ←→ 星空组网 ←→ 公司服务器 ←→ 测试环境 ←→ 家里NAS组网后所有设备都在一个虚拟网段(比如10.26.0.x)。
// settings.json{"remote.SSH.remotePlatform":{"dev-server":"linux"},"remote.SSH.useLocalServer":false}# ~/.ssh/config Host dev-server HostName 10.26.0.10 # 组网内网IP User dev IdentityFile ~/.ssh/id_rsa直接连内网IP,不用隧道:
MySQL: 10.26.0.11:3306 Redis: 10.26.0.12:6379 MongoDB: 10.26.0.13:27017# 直接用内网地址gitclone git@10.26.0.20:project/repo.git远程开发要注意安全:
# 禁用SSH密码登录# /etc/ssh/sshd_configPasswordAuthentication no远程开发环境搭建的几个方案:
| 需求 | 简单方案 | 进阶方案 |
|---|---|---|
| 代码同步 | Git | VSCode Remote / rsync |
| 数据库 | SSH隧道 | VPN/组网直连 |
| 内部服务 | SSH多隧道 | VPN/组网 |
| 文件传输 | scp | rsync断点续传 |
选哪个看你的情况:
远程开发已经是常态了,花点时间把环境配好,效率能高很多。
有问题评论区聊。