返回首页
当前位置: 主页 > 精通Office > 其他教程 >

如何能够把Mac上写的代码同步到dev virt上去

时间:2018-02-25 23:00来源:知行网www.zhixing123.cn 编辑:麦田守望者

搭建开发环境,大致的布局是这样的:一个专门的数据库VM,一个用于编译和代码执行的VM(dev virt,装的RedHat),还有用来写代码和运行这两个虚拟环境的Mac(local)。这里我需要一个工具,可以满这样的需求:

  • 能够把Mac上写的代码同步到dev virt上去。
  • 不需要手动触发,每当有修改,应该能够自动同步。

我把我的解决办法简单记录在这里。在接下去记录之前,需要回答这样两个问题:

  • 为什么需要把编译和执行环境放到VM里面去?因为尽量使得代码的编译执行环境接近于生产线。
  • 为什么要在Mac上写代码,而不在dev virt那个VM上写代码?因为在Mac上使用第三方的工具,做一些操作系统上面的改变,编码环境的改变都比较方便,而且虚拟机中写代码有时候明显感到IDE不流畅。

下面一步一步来解决这个问题。

第一步,配置VM在NAT下的端口映射,允许从Mac上可以SSH(默认是22号端口)到dev virt上:

开发环境上的代码同步

为什么上面选择了2222号端口,主要是考虑避免和常规的SSH冲突。这样配置以后,连接localhost的2222端口,就可以映射到VM上的22号端口去了。

第二步,创建SSH keys。Mac上运行ssh-keygen,创建公钥和私钥。把公钥从~/.ssh/id_rsa.pub拷贝到dev virt,放在~/.ssh下面,并重命名成authorized_keys。注意.ssh权限必须是700,而authorized_keys必须是600。

第三步,配置dev virt上面的/etc/ssh/sshd_config,具体参数根据情况调整,完成以后需要重启SSH服务:service sshd restart。

第四步,尝试连接,在Mac上执行SSH命令,比如ssh ray@127.0.0.1 -p 2222,如果不能访问,考虑修改/etc/ssh/sshd_config,把日志改成verbose:LogLevel VERBOSE,再重启SSH服务,这样就可以通过tail -f /var/log/secure查看无法连接的错误信息。

第五步,创建一个同步脚本,比如叫做rsync.sh,里面就只有一行rsync的命令,比如:rsync -avz -e “ssh -p 2222″ ~/Projects ray@127.0.0.1:~,其中的~/Projects是Mac上的代码环境,要同步到dev virt的~上去。

第六步,安装fswatch,它可以监视文件夹下面的变动。brew install fswatch。

第六步,把fswatch和rsync串起来,比如:fswatch -v -0 ~/Projects/ | xargs -0 -n1 ~/rsync.sh,第一次执行比较慢,花了几分钟。但之后有修改的时候,因为是增量同步,几秒钟就自动同步过去了。rsync因为支持压缩,所以性能还不错。

------分隔线----------------------------
标签(Tag):代码同步
------分隔线----------------------------
推荐内容
猜你感兴趣