前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何优雅的把Go项目部署到Linux服务器?

如何优雅的把Go项目部署到Linux服务器?

作者头像
王中阳Go
发布2022-10-26 15:10:15
2.6K0
发布2022-10-26 15:10:15
举报
文章被收录于专栏:Go语言学习专栏

注意问题

  1. go项目运行之后,修改.env文件不会立即生效,需要重启go服务才会生效
  2. go项目运行之后,修改config.ini配置文件会立即生效,无需重启go服务

重新部署项目

  • 开发环境重新build项目(Mac环境的打包语法)
代码语言:javascript
复制
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build
  • 查找指定端口的进程 博主的端口号9001
代码语言:javascript
复制
netstat -tunlp|grep 9001

注意:生产环境 ‘kill -9’ 太暴力,可能导致问题:进程在运行时突然终止,进程在结束后不能自我清理。

所以生产环境建议大家使用:

kill 命令,而不是kill -9 命令

kill命令默认的信号就是15,也就是 kill -15 ,被称为优雅的退出。当使用kill -15时,系统会发送一个SIGTERM的信号给对应的程序。当程序接收到该信号后,具体要如何处理是自己可以决定的。

代码语言:javascript
复制
kill 进程号 && nohup ./二进制文件名 > nohup.log 2>&1 &
  • 使用&&同时执行2条命令,避免服务中断

开发环境

我们在开发环境如果要马上看到效果,并且不用考虑进程中断的问题,可以使用kill -9强制结束进程,

示例

代码语言:javascript
复制
kill -9 4543 && nohup ./singo > nohup.log 2>&1 &
  • 4543是要结束的进程pid
  • singo是二进制文件名
  • 使用&&同时执行2条命令,避免服务中断

附录Windows平台的打包语法

windows

代码语言:javascript
复制
set CGO_ENABLED=0 //禁用CGO
set GOOS=linux //目标平台为linux
set GOARCH=amd64 //目标处理器架构是amd64
go build -o name //编译可执行文件到当前目录 (-o:自定义文件名)

Mac

代码语言:javascript
复制
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-10-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 程序员升级打怪之旅 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 注意问题
  • 重新部署项目
  • 所以生产环境建议大家使用:
  • 开发环境
    • 示例
    • 附录Windows平台的打包语法
      • windows
        • Mac
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档