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

如何把一个开源项目的发布做好,让用户能快速无障碍的部署?

  •  
  •   jamiesun · 2015-03-02 16:19:50 +08:00 · 2078 次点击
    这是一个创建于 3547 天前的主题,其中的信息可能已经有所发展或是发生改变。
    在开发项目ToughRADIUS的过程中,这个问题坑了我不少时间。

    因为以前长时间做企业项目,实施部署运维都是专业技术人员进行,我只要按规范给他们文档和培训就可以,很少存在这个问题。

    但是当我直接对用户做版本发布时,完全不一样了。

    这是个AAA项目,用户群体一般就是宽带运营,虚拟专用网运营等,不得不说,咱们国家的民营是当着老板,操着心运营商的心,跑着业务员的路,最后还要干技术网管的活。

    最初,我直接提供源码包,在源码包下提供一些启动脚本,linux下提供sh,windows下提供bat或exe,这是比较简单的模式。用户下载,安装数据库,建库建表,配置,启动。不过除了懂技术的能搞定外,数据库,建表建库难道一大部分人。还不说需要安装各种依赖,比如要命的MySQLdb依赖。

    然后我尝试着提供Linux在线一键安装脚本,并简化配置,并把建库建表过程通过内置程序解决,用户都不需要知道sql的存在。这个一键安装脚本是一堆流程化的linux指令,这个带来了巨大的工作量,我在vps上用docker容器最多一天测试20次以上,跑10几个G的流量,虽然在一个干净的centos里运行无误,但是用户的环境难料,经常还是莫名其妙的问题,当然最大的问题还是mysql。

    接着我又尝试了docker+自动脚本来提供,但是docker本身是个普通用户难以理解的东西,很快我就放弃了。

    很多人希望提供iso的安装版,不过难的是我现在还搞不定iso,参考了不少文章,按照有些针对centos mini版做iso定制的流程试了下,没搞定。ubuntu下好像有个将整个系统直接转iso得模式,还没有来得及试试。

    最终我也想明白,linux本身对普通用户就是一个难以驾驭的东西,加上各种不同发行版操作的差异要人命。试图去解决这样的问题还不如提供商业模式的有偿服务。

    最后,我对项目结构进行了极大简化,移除那些用户难以理解和操作的东西,将项目作为一个python标准模块发布,并提供sqlite配置支持开箱即用的模式,在windows下通过py2exe进行打包,对配置文件支持默认查找路径。

    window下可以实现只要会安装360软件就会用的程度。真正开箱双机鼠标就能用。linux以python标准模块方式,依靠pip强大的功能,让有点技术能力的人操作。以后有机会可以做做有偿技术支持。


    @phuslu 感谢https://github.com/phuslu/pybuild这个项目给我带来的帮助,解决了我在py2exe打包时碰到的难题。

    如果有朋友对linux可引导iso镜像定制比较在行的希望可以交流交流。

    最近看了下openwrt的资料,对python支持不错,连twisted这样的模块都有完整支持,集成进去应该没有太大问题。

    https://github.com/talkincode/ToughRADIUS

    这是项目的地址,项目采用BSD许可协议,欢迎各路朋友 star,fork。还有不少后期开发计划,最近正在准备和一些国内厂商做对接支持,个人有点独力难支,有兴趣的朋友欢迎加入。
    8 条回复    2015-03-03 08:33:54 +08:00
    kslr
        1
    kslr  
       2015-03-02 16:57:46 +08:00
    菜鸟管他呢
    icedx
        2
    icedx  
       2015-03-02 16:59:54 +08:00
    不需要 开源免费 部署服务收费 妥妥的
    learnshare
        3
    learnshare  
       2015-03-02 17:02:59 +08:00
    基本上每个平台都有应用商店/包管理工具,这个是最简单的发布和安装渠道。

    对于非大众用途的东西,本来门槛就高,让他下代码、编译、配数据库,也是很难简化的工作。
    ksc010
        4
    ksc010  
       2015-03-02 17:03:55 +08:00
    尝试打包可执行文件(不过这样也遇到过不能执行的问题)
    python的话 是不是可以使用 virtualenv
    jamiesun
        5
    jamiesun  
    OP
       2015-03-02 18:07:13 +08:00
    @ksc010 你是说virtualenv做二进制打包,这个应该可以,不过也需要目标系统统一。
    ipconfiger
        6
    ipconfiger  
       2015-03-02 18:16:39 +08:00
    再开一个快速部署第一个项目的开源项目
    msg7086
        7
    msg7086  
       2015-03-03 04:15:33 +08:00 via iPhone   ❤️ 1
    为什么要用户去部署呢?难道不能部署在你自己的服务器上然后卖订阅?
    jamiesun
        8
    jamiesun  
    OP
       2015-03-03 08:33:54 +08:00
    @msg7086 好提议,时机成熟可以这么搞
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2688 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 11:44 · PVG 19:44 · LAX 03:44 · JFK 06:44
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.