V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
plqws
V2EX  ›  问与答

大家是怎么利用 Windows 写代码,并快速部署到 Linux 服务器上进行调试的?

  •  
  •   plqws · 2015-07-24 16:08:08 +08:00 · 14859 次点击
    这是一个创建于 3409 天前的主题,其中的信息可能已经有所发展或是发生改变。
    我在 Windows 上写一个 Node 程序,但是调试的时候依赖一个 Linux 服务器上的 nginx,所以每次都要把编辑过的文件通过 FTP 上传到服务器上,感觉效率极低。

    想过 Git,但是 Git 提交的流程太繁琐。
    想过 SVN,但是 SVN 服务端需要安装 httpd,太鸡肋。
    想过 rSync,但是配置起来太繁琐,遂放弃。

    想问问各位有没有什么更妙的方法?
    58 条回复    2015-07-25 14:19:59 +08:00
    n37r06u3
        1
    n37r06u3  
       2015-07-24 16:11:26 +08:00
    目前用git ...
    townboy
        2
    townboy  
       2015-07-24 16:13:21 +08:00
    这个问题也困扰我很久了
    learnshare
        3
    learnshare  
       2015-07-24 16:13:28 +08:00
    写代码肯定是 Git,服务器上同步一下就好了
    whtsky
        4
    whtsky  
       2015-07-24 16:13:40 +08:00 via iPad
    用 git 呀,写好钩子 add&commit&push 不就好了
    KentY
        5
    KentY  
       2015-07-24 16:14:18 +08:00
    我们是java, 同事挺多用windows的, 通过build server, continuous integration server自动部署。 我们用的是teamcity, jenkins 也行。
    tini28
        6
    tini28  
       2015-07-24 16:16:36 +08:00
    写个脚本自动通过git提交
    tobyxdd
        7
    tobyxdd  
       2015-07-24 16:17:07 +08:00
    git繁琐?LOL
    linkiosk
        8
    linkiosk  
       2015-07-24 16:18:18 +08:00
    dropbox能干这事吧
    lissome
        9
    lissome  
       2015-07-24 16:18:40 +08:00
    git
    xylophone21
        10
    xylophone21  
       2015-07-24 16:18:42 +08:00   ❤️ 1
    直接smb到Linux上写或者Sublime+SFTP插件

    谁说SVN服务端一定要装httpd?
    qw7692336
        11
    qw7692336  
       2015-07-24 16:22:09 +08:00
    @townboy


    这就是传说中的DevOps


    手动的方式就是用git提交,在服务端设置git hook,写一个部署脚本,最好是热部署。
    有很多云服务都支持git上传代码,自动部署,比如说openshift。
    为什么你需要在本地写好代码部署到服务器?如果使用外网IP进行调试,可以用ssh把服务器端的80端口映射到本地。或许你可以用sshfs把服务器端的文件映射到本地。
    plqws
        12
    plqws  
    OP
       2015-07-24 16:37:45 +08:00
    @xylophone21 CentOS 直接 yum 安装会出现依赖 httpd 的情况然后就给安装了…… 编译安装的话依赖配置太麻烦了。

    Sublime Text + SFTP 插件的方案很不错,刚刚试了下,很方便。谢谢,问题解决了。
    tonghuashuai
        13
    tonghuashuai  
       2015-07-24 16:38:58 +08:00
    git 还繁琐?那 lz 应该刚从 svn 转过来

    如果还是觉得繁琐的话,就配置一下自动部署吧,google 持续集成
    plqws
        14
    plqws  
    OP
       2015-07-24 16:49:52 +08:00
    @tonghuashuai 我写代码比较菜,经常是一分钟要改好多东西并且调试很多次,要是在图形界面把 Pull、Sync 等操作都进行实在是太麻烦了。
    我本来想写个轮子用 fs.watchFile 来轮流监控文件,然后再 exec git 来提交,感觉会很不错,不过 Sublime 的 SFTP 已经能够满足我的需求了。
    echo1937
        15
    echo1937  
       2015-07-24 16:53:29 +08:00
    IDE里面不都有一个"Tools" ---> "Deployment"的功能吗?
    belin520
        16
    belin520  
       2015-07-24 16:54:55 +08:00
    git hook
    tonghuashuai
        17
    tonghuashuai  
       2015-07-24 16:56:58 +08:00
    @plqws 我明白你的意思了

    这种情况下貌似靠版本控制工具不能根本解决,只有将运行环境和开发统一到一个地方才可以

    我之前遇到过一种情况有人这么干:
    代码在服务器上,然后本地用 IDE 打开服务器上的代码直接修改(ftp),不过还是不推荐这种方式
    yahoo21cn
        18
    yahoo21cn  
       2015-07-24 16:57:14 +08:00
    买两只仓鼠,教会他们编码,就全解决了
    zmj1316
        19
    zmj1316  
       2015-07-24 16:59:25 +08:00
    @yahoo21cn 两只估计不够,但是一只神奇的哥哥就可以解决了23333
    shenxgan
        20
    shenxgan  
       2015-07-24 17:00:26 +08:00
    你觉得开samba怎么样?
    ceyes
        21
    ceyes  
       2015-07-24 17:12:55 +08:00
    装个 Cygwin 然后 scp 多简单
    或者 rsync 也很方便啊 `rsync -azh /local/path/file [email protected]:/remote/path/file`
    akira
        22
    akira  
       2015-07-24 17:18:04 +08:00
    本地搭建开发环境。。@@
    itfanr
        23
    itfanr  
       2015-07-24 17:28:01 +08:00 via Android
    nfs或者samba
    choury
        24
    choury  
       2015-07-24 17:58:37 +08:00
    既然在linux上面部署,为什么不直接在linux下面开发呢
    wkdhf233
        25
    wkdhf233  
       2015-07-24 18:04:22 +08:00
    ExpanDrive直接把服务器的目录挂载成本地一个盘。。
    vibbow
        26
    vibbow  
       2015-07-24 18:04:50 +08:00
    Goodsync...
    kungfuchicken
        27
    kungfuchicken  
       2015-07-24 18:08:57 +08:00
    我用的phpstorm + nodejs 插件, phpstorm 支持自动部署,配置好服务器连接信息(支持FTP,SFTP)和对应目录(本机和服务器目录映射)之后,你只要保存代码,phpstorm就会把自动上传到服务器上,在项目目录里面添加删除文件phpstorm也会自动同步,非常方便
    zonghua
        28
    zonghua  
       2015-07-24 18:22:05 +08:00 via iPhone
    @kungfuchicken 脚本语言的好处
    yakczh
        29
    yakczh  
       2015-07-24 18:26:59 +08:00
    从这点上看,php果然是最好的语言
    ttph1oc
        30
    ttph1oc  
       2015-07-24 18:33:13 +08:00
    你可以本地使用winSCP,开启同步模式,自动上传修改。服务器上则用supervisor或PM2自动重启。
    tabris17
        31
    tabris17  
       2015-07-24 18:40:39 +08:00
    vagrant + VirtualBox
    hyt7212
        32
    hyt7212  
       2015-07-24 20:07:09 +08:00 via iPhone
    @tabris17 我也在尝试用这个,看起来不错
    charlie21
        33
    charlie21  
       2015-07-24 20:07:29 +08:00
    Vagrant 试过吗?
    P.S. 貌似你说的这个开发环境统一的问题,这个问题是 Vagrant 的典型应用场景? (我没用过)
    woodrat
        34
    woodrat  
       2015-07-24 20:34:51 +08:00
    Emacs + TRAMP
    DaCong
        35
    DaCong  
       2015-07-24 21:16:31 +08:00
    说实话,如果说git繁琐,那么,估计就没有不繁琐的了
    pubby
        36
    pubby  
       2015-07-24 21:19:47 +08:00
    putty 连上测试机 emacs 干活

    同事也用phpstrom 配置sftp之类的,save的时候自动同步到测试机
    jb的IDE应该都有这样的功能。
    ksupertu
        37
    ksupertu  
       2015-07-24 21:24:55 +08:00
    古老的ftp软件上上有一个自动比对同步文件夹的功能……
    js2854
        38
    js2854  
       2015-07-24 21:26:55 +08:00
    1.SftpDrive免配置,通过sftp可以直接把服务器的目录挂载成本地一个盘
    2.winscp自动同步本地文件修改到linux服务器
    XadillaX
        39
    XadillaX  
       2015-07-24 21:40:58 +08:00
    用 Mac 开发吧,如果不买的话也用 Linux 吧。
    ipconfiger
        40
    ipconfiger  
       2015-07-24 21:41:50 +08:00
    Docker 啊!
    pheyer
        41
    pheyer  
       2015-07-24 21:56:18 +08:00
    觉得Git繁琐难道就不会用客户端吗?
    Raidal
        42
    Raidal  
       2015-07-24 22:13:03 +08:00
    搭车问下:如何同步还未提交到公司svn上的代码到公司和家里的两台电脑上而不会冲突?

    为了解决公司和家里的电脑上都能实时同步代码,遂将代码存放在dropbox目录中,而这些项目已纳入公司svn库。实际使用中发现如下情况会发生冲突:

    在公司将文件a做过编辑,然后提及到svn,回到家中未先从svn中update最新的代码,而此时使用dropbox同步会出现文件a冲突。

    不知道大家是如何解决这类同步问题?
    takashiki
        43
    takashiki  
       2015-07-24 22:14:15 +08:00 via Android
    jetbrains的
    ide都是自带deployment的
    nisnaker
        44
    nisnaker  
       2015-07-24 22:17:32 +08:00
    我做web开发,本地用Virtualbox装的Centos7,然后通过共享目录连接主机和虚拟机,主机上只有sublime,做开发用。其他所有环境都在虚拟机里,浏览器直接输虚拟机的ip,或者配置主机的host,配一些假的域名指向虚拟机ip。
    nisnaker
        45
    nisnaker  
       2015-07-24 22:18:03 +08:00
    @Raidal 我直接把本背回家。。。
    zhyq132
        46
    zhyq132  
       2015-07-24 22:21:12 +08:00
    vagrant+vbox
    yuankui
        47
    yuankui  
       2015-07-24 22:43:09 +08:00
    你可以试试samba...

    把linux的目录映射到 windows的一个目录,你像是在windows编辑代码,但是实际上操作的事linux目录..
    clino
        48
    clino  
       2015-07-24 22:55:10 +08:00
    git的提交过程复杂吗?
    msg7086
        49
    msg7086  
       2015-07-25 00:27:05 +08:00
    virtualbox的共享目录功能,直接把本机的目录映射到linux内,即可。

    @pheyer 用客户端一小时提交推送几十次就不繁琐了?
    xiaobu
        50
    xiaobu  
       2015-07-25 00:39:18 +08:00
    终端vim呢
    tcsky
        51
    tcsky  
       2015-07-25 00:43:22 +08:00
    virtualbox 的目录挂载(vagrant最好), Samba卡的没法用.
    wangjie
        52
    wangjie  
       2015-07-25 07:07:24 +08:00
    git不是比ftp快多了?如果还嫌麻烦可以写一个程序自动传嘛
    no13bus
        53
    no13bus  
       2015-07-25 07:41:25 +08:00 via iPhone
    文件夹同步。
    loading
        54
    loading  
       2015-07-25 08:38:54 +08:00
    如果楼主是说代码调试,你需要跑个虚拟机在本机,然后用virtualbox共享目录这一类工具。
    你每次都传到远端的服务器,这是错误的开发方式!网速再快,也没本地快的。
    zongwan
        55
    zongwan  
       2015-07-25 10:10:55 +08:00
    docker + 1
    vagrant 也经常会用(本地调试)

    sublime text 在win 和 mac上的版本最好用
    coolicer
        56
    coolicer  
       2015-07-25 13:56:17 +08:00
    今天看到这个http://4front-slides.aerobatic.io/#/
    qianlifeng
        57
    qianlifeng  
       2015-07-25 14:14:01 +08:00
    最近发现一个上传文件的利器:szrz+xshell 实现拖拽上传,不过话说用git应该不算麻烦
    blue7wings
        58
    blue7wings  
       2015-07-25 14:19:59 +08:00
    sshfs
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1124 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 23:32 · PVG 07:32 · LAX 15:32 · JFK 18:32
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.