V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
llccing
V2EX  ›  程序员

如何快速交付外包小项目

  •  
  •   llccing · 2022-03-21 09:40:20 +08:00 · 4506 次点击
    这是一个创建于 984 天前的主题,其中的信息可能已经有所发展或是发生改变。

    背景:

    客户的项目是商城项目,包含 h5 ,技术栈 [email protected] ,pc 管理端 [email protected] ,server 端 Express ,DB Mongo ,基于客户的代码二次开发,增加了两个功能。

    问题:

    开发完成后如何能够在不给源码的前提下,快速启动项目,让客户能够进行验收,如果没有问题,再完成付款,最后交付代码?

    我试过使用 ngrok ,但是未付费的情况下,只能开一个端口,因为我这个涉及到 h5 和 pc ,h5 是 8080 ,pc 是 8081 ,所以这个方式也不行;如果是让客户一个一个验证,先用一个端口然后再用一个,体验不好。然后我在本地能够正常运行的前提下,通过 ngrok 启动后, 有个 invalid header 的错误,我没有去修复因为时间比较紧,但是感觉应该在 express 中处理一下,比如一个接受所有请求域名的设置。

    所以我想请教一下,有没有更便捷的方式能够完成这个事,或者一劳永逸的事,比如弄个通用 docker 镜像,不知道有没有大佬能够指点一下,给个思路就好,我去实践,最后会形成方案反馈给大家,哈哈哈,如果足够好,可以共享到 GitHub 上,方便其他小伙伴。

    第 1 条附言  ·  2022-03-21 10:31:57 +08:00
    大家情绪有些高涨,哈哈。说明你一下,总计开发费用 1000 块,增加两个功能,改几个 bug 。开发时间周六日两天。
    48 条回复    2022-03-22 15:43:51 +08:00
    kidult
        1
    kidult  
       2022-03-21 09:44:40 +08:00
    你自己没服务器吗?部署在自己服务器上咯
    tomczhen
        2
    tomczhen  
       2022-03-21 09:45:21 +08:00 via Android   ❤️ 2
    都收费服务了,付费一下不就完了。
    白嫖就白嫖,看你的意思,还“如果足够好”,再由你把关共享到 github ,这不是缺大佬,是缺工具人。
    3dwelcome
        3
    3dwelcome  
       2022-03-21 09:47:41 +08:00
    都说了是二次开发,那源代码是否泄漏都是次要的。

    代码发布前混淆一下,加个在线验证就可以了,确保不会被私用。

    你有 mongo db ,再怎么也是需要搭公网服务器的。内网穿透感觉完全不靠谱的样子,找个便宜的 VPS ,搭个正经服务器演示吧。
    renmu123
        4
    renmu123  
       2022-03-21 09:47:50 +08:00 via Android
    你找个服务器部署一下就行了
    yiqiao
        5
    yiqiao  
       2022-03-21 09:49:00 +08:00
    你买个 vps 不就得了。按时间收费也行啊。及时关了收不了多少钱
    llccing
        6
    llccing  
    OP
       2022-03-21 09:57:01 +08:00
    @kidult 有啊,只是觉得操作比较繁琐,流程可能是这样:
    1 、客户的源码给我,本地初始化一个 git repo ,GitHub 再初始化一个 private repo 。将本地推到远程。
    2 、debug 、push 、debug 。。。。。push 。
    3 、ssh 到服务器,git 拉取代码,使用 pm2 启动 server ,使用 nginx 启动 h5 和 pc ,可能还需要配置 nginx 。
    4 、然后 阿里云配置域名。

    这样一堆操作完成后,好像比如将源码直接给客户,哈哈哈,过于繁琐,也许我可以考虑将上面这个流程自动化是吧……
    llccing
        7
    llccing  
    OP
       2022-03-21 09:59:17 +08:00
    @tomczhen 哈哈哈,大佬别激动。我的项目太 low ,还没动付费买方案的级别,就是纯小白请教
    zhangleshiye
        8
    zhangleshiye  
       2022-03-21 10:03:22 +08:00
    @llccing 花生壳直接映射个外网就好啊 简单粗暴 emmmm..
    llccing
        9
    llccing  
    OP
       2022-03-21 10:04:04 +08:00
    @3dwelcome 嗯,可能我这个人比较消极,凡是考虑的会比较多,比如会想到如果我把代码给过去,对方把我微信拉黑,我好像也没有什么办法。害人之心不可有,防人之心不可无。所以还是希望在流程上能够避免这种考验人性的情况出现。

    嗯,vps 看来是大家都比较推荐的
    llccing
        10
    llccing  
    OP
       2022-03-21 10:06:06 +08:00
    @zhangleshiye 嗯,听过这个产品。免费的服务是能够 OK 的是吧,我去试试,谢谢哈
    llccing
        11
    llccing  
    OP
       2022-03-21 10:07:09 +08:00
    @yiqiao 嗯,就是搭建的过程如果是手动的,这个成本还是挺高的
    llccing
        12
    llccing  
    OP
       2022-03-21 10:07:38 +08:00
    @renmu123 嗯,是这个道理
    3dwelcome
        13
    3dwelcome  
       2022-03-21 10:13:40 +08:00
    单纯从演示角度出发,如果把真实数据库给去掉,用 mockjs api 之类的虚拟数据来替代。

    个人感觉给客户做一个 electron 纯客户端演示版本也可以。

    把浏览器,nodejs ,演示数据全部打包了。
    llccing
        14
    llccing  
    OP
       2022-03-21 10:16:42 +08:00
    @3dwelcome 嗯嗯,electron 是个方案,数据库在开发的时候如果就直接用远程的,那么打包 electron 时也方便了
    Chase2E
        15
    Chase2E  
       2022-03-21 10:20:36 +08:00
    你直接弄一个阿里云 /腾讯云的服务, 交钱了再给密码把云服务的账户转移给他不就行了...
    hfpp2012
        16
    hfpp2012  
       2022-03-21 10:27:01 +08:00
    你这是抠得不行,自己买个服务器,要多少钱?赚人家钱,还要一毛不拔?
    wobuhuicode
        17
    wobuhuicode  
       2022-03-21 10:27:41 +08:00
    全栈项目啊,买个服务器部署,再修个维护费多好。
    llccing
        18
    llccing  
    OP
       2022-03-21 10:28:56 +08:00
    @Chase2E 哈哈哈,总计 1000 块的项目,弄个服务有些大材小用了。不过有一点没明白,是什么服务呢,vps 这种吗,如果是的话,弄个干净的 vps ,然后装上 node.js mongo nginx, 再配置一堆,时间成本还是挺高的。
    llccing
        19
    llccing  
    OP
       2022-03-21 10:30:26 +08:00
    @hfpp2012 哈哈哈,别激动,是纯技术讨论
    yufeng0681
        20
    yufeng0681  
       2022-03-21 10:33:09 +08:00
    让客户出一个 可部署的网络,他和你都可以访问的
    1 、客户的局域网内,服务器, 你远程登录去部署
    2 、客户买公有云服务器,你登录上去部署
    ersic
        21
    ersic  
       2022-03-21 10:35:35 +08:00
    要赚钱,付出适当的成本是必须的。
    dq19871123
        22
    dq19871123  
       2022-03-21 10:36:43 +08:00 via Android
    其实短时间免费试用的 vps 也有不少
    jucelin
        23
    jucelin  
       2022-03-21 10:45:33 +08:00
    低价收个闲置服务器,我就收过,看我发的帖子。我也是部署演示用的
    MrTLJH
        24
    MrTLJH  
       2022-03-21 10:48:59 +08:00
    如果是自己个人接外包的话,确实有不少限制,建议去注册个有限公司,然后买个服务器域名之类的,这些准备做好,以免出现你说的上述问题。
    不然就去白嫖个免费试用 vps ,然后部署,不过可能有些功能会被限制,比如说微信支付无法开通。
    要不然你就给客户说需要他们提供部署环境,毕竟才收这点钱
    Vindroid
        25
    Vindroid  
       2022-03-21 10:49:24 +08:00
    不怕代码泄露的话,可以淘宝 5 块、10 块一个月买个对应环境的虚拟机,也可以自己租个云啊,1C512MB20G 这种的,外网也就 10 刀一年啊
    llccing
        26
    llccing  
    OP
       2022-03-21 10:52:27 +08:00
    嗯,我有腾讯云的服务器,2C4G 的,只是在考虑是否有个省时省力的方案能够去掉一些手动的事情,尽量自动化
    C603H6r18Q1mSP9N
        27
    C603H6r18Q1mSP9N  
       2022-03-21 11:01:46 +08:00
    你订一个截至时间,比如 3/30 号,for 循环 直接 alert('系统未授权,请联系开发人员')
    这样就行了,不用特别折腾
    llccing
        28
    llccing  
    OP
       2022-03-21 11:05:28 +08:00
    @shanghai1998 哈哈哈,大哥是个段子高手啊
    llccing
        29
    llccing  
    OP
       2022-03-21 11:19:15 +08:00
    @MrTLJH 主要是我太懒,域名、服务器,都有的,就是在想有没有一种适合懒人的方式。比如本地弄个 docker 镜像,能够直接推到远程,然后远程直接启动,域名啥的是根据某种规则自动匹配到。如果这个有了,那真是方便了
    scr
        30
    scr  
       2022-03-21 11:21:43 +08:00
    @llccing 试试 jenkins ?弄一次熟练之后,后面就方便了
    llccing
        31
    llccing  
    OP
       2022-03-21 11:23:34 +08:00
    @scr 嗯嗯,可以啊,是不是 GitHub action 也行。这种工具应该要学一下的
    scr
        32
    scr  
       2022-03-21 11:35:16 +08:00
    @llccing github action 到推到国内服务器的话,比较慢。
    hlwjia
        33
    hlwjia  
       2022-03-21 11:36:18 +08:00
    我觉得光熟悉已有的代码就得超这个预算
    yigecaiji
        34
    yigecaiji  
       2022-03-21 11:40:42 +08:00 via Android
    开个虚拟机,虚拟机装个 qq ,主机开服务让虚拟机访问,让客户用 qq 远程虚拟机?
    llccing
        35
    llccing  
    OP
       2022-03-21 13:14:22 +08:00
    @scr jekins 是要在本地跑是吧,否则单独在服务器上跑个 Jenkins ,2G 内存的 vps 估计就要跑满了
    llccing
        36
    llccing  
    OP
       2022-03-21 13:15:05 +08:00
    @yigecaiji 哈哈哈,这个有意思,是不是也可以直接远程我本地……
    llccing
        37
    llccing  
    OP
       2022-03-21 13:15:32 +08:00
    @hlwjia 嗯,确实项目比较简单,否则也不能接
    jerrodpoole
        38
    jerrodpoole  
       2022-03-21 13:25:43 +08:00 via Android
    看了下楼主的需求,安利下这个项目: https://github.com/localtunnel/localtunnel
    相关命令:
    npm install -g localtunnel
    lt --port 8000
    命令运行后会分配一个临时域名给你,这个域名会把请求转发到你本地 http(s)服务,好用的话回来谢我😉


    Thats it! It will connect to the tunnel server, setup the tunnel, and tell you what url to use for your testing. This url will remain active for the duration of your session; so feel free to share it with others for happy fun time!

    You can restart your local server all you want, lt is smart enough to detect this and reconnect once it is back.
    llccing
        39
    llccing  
    OP
       2022-03-21 13:55:55 +08:00
    @jerrodpoole 哇,这个工具挺好的,有点类似开源版的 ngrok ,可以支持多个域名,比如同时转 8080 和 8081 。我是本地同时以调试模式起 8080 和 8081 ,然后再用 localtunnel 转发,就是速度有些慢,可能我用 nginx 直接托管静态资源速度应该比访问调试模式快。或者我就是应该把他放到 vps 上……
    indo
        40
    indo  
       2022-03-22 03:51:52 +08:00 via iPhone
    gcp 、aws 都有免费服务器。
    弄好了自己不是一次 nps ,把域名*解析到服务器上,把 80 、443 端口镜像回家。本地用 nignxproxymanager 做二级域名解析。

    我的习惯是不穿透,服务器上 docker 部署 npm 用 host 模式接管服务器的 80 、443 端口。代码 pm2 部署到服务器上去。
    kkocdko
        41
    kkocdko  
       2022-03-22 08:37:49 +08:00 via Android
    请搜索关键词:“内网穿透”。有一大堆免费方案,localhost.run 等等。
    kiritoxf
        42
    kiritoxf  
       2022-03-22 09:41:41 +08:00
    感觉最简单的是,本机开发环境启动,然后让客户用 qq 之类的远程连接到你电脑上操作。
    sunorg
        43
    sunorg  
       2022-03-22 10:27:23 +08:00
    问题是 1k ,不先收了再做?????
    llccing
        44
    llccing  
    OP
       2022-03-22 11:35:45 +08:00
    @indo gcp aws 免费服务器是说的,第一次免费 半年或者一年是吧,我应该是要过了免费额度了。不过你说的这个模式可以尝试,“端口镜像回家”是啥意思啊,没太理解
    llccing
        45
    llccing  
    OP
       2022-03-22 11:36:04 +08:00
    @kkocdko 嗯嗯
    llccing
        46
    llccing  
    OP
       2022-03-22 11:36:55 +08:00
    @kiritoxf 嗯嗯,这个挺好,非常简单。toDesk 这个软件可以用,比 teamviewer 好用
    llccing
        47
    llccing  
    OP
       2022-03-22 11:37:19 +08:00
    @sunorg 哈哈,先收了 30%。验收完付其余的
    sunorg
        48
    sunorg  
       2022-03-22 15:43:51 +08:00
    @llccing 小 case ,以后全收了,
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2105 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 00:27 · PVG 08:27 · LAX 16:27 · JFK 19:27
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.