V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
The Go Programming Language
http://golang.org/
Go Playground
Go Projects
Revel Web Framework
fox0001
V2EX  ›  Go 编程语言

golang 写的 Web 服务,大家是如何部署的?

  •  
  •   fox0001 · 2019-11-02 14:17:36 +08:00 via Android · 8613 次点击
    这是一个创建于 1848 天前的主题,其中的信息可能已经有所发展或是发生改变。
    这周初学 golang,写了个小小的 Web 服务,用来给其他朋友更新二级域名与 IP 绑定。在 Debian 上,跑是能跑起来,但是没找到比较好的部署方式。就想请教大家一般是怎么部署的?
    第 1 条附言  ·  2019-11-02 16:21:31 +08:00
    感谢各位回复,应该选择 systemd 部署了。只是以前一直用 init 那套,需要学习一下
    第 2 条附言  ·  2019-11-13 10:33:56 +08:00
    用 systemd 跑了几天,效果不错,再次感谢各位
    30 条回复    2019-11-04 09:45:37 +08:00
    Leigg
        1
    Leigg  
       2019-11-02 14:21:27 +08:00 via Android
    你把和其他的 web 应用看作一样不就行了,需要负载均衡高并发就加个 nginx,小服务就裸奔完事。
    fox0001
        2
    fox0001  
    OP
       2019-11-02 14:26:36 +08:00 via Android
    @Leigg #1 我是想做成服务,可以 start、stop、restart,还会崩溃后自动重启的那种
    ke1e
        3
    ke1e  
       2019-11-02 14:27:31 +08:00 via Android
    docker 化
    yumumu
        4
    yumumu  
       2019-11-02 14:28:56 +08:00 via iPhone
    @fox0001 supervisor 似乎可以
    fox0001
        5
    fox0001  
    OP
       2019-11-02 14:35:44 +08:00 via Android
    @yumumu #4 找过资料,有说过用这个的。但这个是为了抛弃 Python3 而用 go 写的小功能,用 supervisor 的话,又要装上 Python3 了…
    fox0001
        6
    fox0001  
    OP
       2019-11-02 14:36:32 +08:00 via Android
    @ke1e #3 小功能就没必要上 docker 了
    fox0001
        7
    fox0001  
    OP
       2019-11-02 14:37:15 +08:00 via Android
    @ke1e #3 我的应用场景,用 screen 可代替 docker
    lance86
        8
    lance86  
       2019-11-02 14:38:04 +08:00 via Android   ❤️ 1
    @fox0001 什么版本的 Debian,用系统自带的进程管理 systemd 就能满足你,不过你要是换操作系统什么的可能默认的进程管理就不是 systemd 了,你还要重新折腾。楼上说的 supervisor 也不错,python 写的工具,倒是可以做到不同系统统一的配置管理模式,额外附送一个 web 端页面。
    lance86
        9
    lance86  
       2019-11-02 14:40:41 +08:00 via Android   ❤️ 1
    @fox0001 不用额外装 python 3,supervisor 支持 python2,这只是一个进程管理工具,和你用什么语言开发没关系,你 apt install 就直接装了,还不用操心 supervisor 的开机自启。
    fox0001
        10
    fox0001  
    OP
       2019-11-02 14:43:14 +08:00 via Android
    @lance86 #8 非常感谢!系统是 Debian9。本来一开始用 init 那套东西的,但是脚本没写好。我去了解一下 systemd
    lxml
        11
    lxml  
       2019-11-02 14:48:38 +08:00 via Android
    stop 接收处理 signal 信号即可,star 就直接跑
    creating2000
        12
    creating2000  
       2019-11-02 14:53:19 +08:00 via iPhone
    k8s,docker 太重,supervisor 用着不理想,systemd 好像不通用吧,pm2 还得装 node,nohup 太简陋,我也不知道应该用哪个😂
    loading
        13
    loading  
       2019-11-02 14:54:14 +08:00 via Android
    加到开机启动 systemd,然后重启,doge.
    rimutuyuan
        14
    rimutuyuan  
       2019-11-02 15:04:56 +08:00
    nohup ./
    seers
        15
    seers  
       2019-11-02 15:06:00 +08:00
    screen
    zjsxwc
        16
    zjsxwc  
       2019-11-02 15:07:19 +08:00
    直接编译后运行呗,
    要进程保活,可以用这个 golang 写的 supervisord
    https://github.com/ochinchina/supervisord
    darknoll
        17
    darknoll  
       2019-11-02 15:18:52 +08:00 via Android
    systemd 满足不了你?
    abcbuzhiming
        18
    abcbuzhiming  
       2019-11-02 15:19:31 +08:00
    golang 生成的程序就一个文件,还需要 docker ?直接丢到目标机器上部署呗,golang 程序变成 linux service 我记得有教程的
    p1gd0g
        19
    p1gd0g  
       2019-11-02 15:23:08 +08:00
    我司是打包环境打包后交给运维,运维脚本部署。
    服务挂掉自动重启可以用 zabbix。
    zjyl1994
        20
    zjyl1994  
       2019-11-02 15:39:55 +08:00
    systemd 写一套 service 文件应该够用了?
    ClericPy
        21
    ClericPy  
       2019-11-02 15:52:02 +08:00
    如果是我自己我肯定就是 systemd 了, 目前用着没任何问题, 套上 nginx 随便跑, 至于说你 debian 太老默认不是 systemd...小服务直接 tmux 丢后台跑着吧, & nohub 什么的, 手写个守护进程也不太费劲
    至少我现在已经不是后台守护进程工具的拥趸了, 没意义...
    PS: 看楼上提的第一次知道有 golang 的 supervisord, 不知道有 web 么, 以及 web 会有中文乱码问题么
    keepeye
        22
    keepeye  
       2019-11-02 15:58:38 +08:00
    用啥 supervisord,直接 systemd 简单稳定 journalctl 看日志
    RubyJack
        23
    RubyJack  
       2019-11-02 16:18:50 +08:00
    systemd
    GTim
        24
    GTim  
       2019-11-02 18:55:32 +08:00   ❤️ 1
    systemd 就能解决所有问题了,不要给自己累加技术栈
    learningman
        25
    learningman  
       2019-11-02 19:09:33 +08:00 via Android
    说实话,docker 真的好用
    BlBana
        26
    BlBana  
       2019-11-02 19:25:14 +08:00 via Android
    emmm,突然想到我之前是 supervisord 启项目,systemd 启 supervisord ... 我好像傻了
    reus
        27
    reus  
       2019-11-03 01:44:22 +08:00
    不支持 systemd 的环境都是垃圾。
    xmge
        28
    xmge  
       2019-11-03 14:02:05 +08:00
    nohup 不行吗?
    awhane
        29
    awhane  
       2019-11-03 21:52:39 +08:00
    systemd,supervisor,docker,都能满足你的需求,一般推荐 docker,然后 docker-compose 了解下。
    qq1340691923
        30
    qq1340691923  
       2019-11-04 09:45:37 +08:00
    写一个重启脚本,加入开机自启
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1710 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 16:47 · PVG 00:47 · LAX 08:47 · JFK 11:47
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.