商城首页欢迎来到中国正版软件门户

您的位置: 首页 > 文章列表 > 编程开发 > golang打包centos服务的方法

golang打包centos服务的方法

  发布于2026-07-16 阅读(0)

扫一扫,手机访问

把 Go 程序部署成 CentOS 系统服务,这件事本身并不复杂,但步骤里有些细节如果不注意,很容易踩坑。下面这份流程是经过多次验证的,跟着走基本不会出问题。

golang打包centos服务的方法

  1. 写好你的 Go 程序。假设你已经有一个 HTTP 服务器,就像下面这样:

    // main.go
    package main
    
    import (
    	"fmt"
    	"net/http"
    )
    
    func main() {
    	http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
    		fmt.Fprintf(w, "Hello, World!")
    	})
    	fmt.Println("Server is running at http://localhost:8080")
    	http.ListenAndServe(":8080", nil)
    }
    
  2. 确认 CGO 状态。如果你的程序没有用到 CGO,直接编译就好。如果用了 CGO,需要额外配置环境变量确保兼容。这一步容易忽略,建议先检查代码里是否有 import "C" 或依赖 cgo 的库。

  3. 交叉编译。在本地开发机器上,用 GOOSGOARCH 指定目标平台。比如 CentOS 7 通常是 linux amd64

    GOOS=linux GOARCH=amd64 go build -o myservice main.go
    

    执行后当前目录就会生成一个叫 myservice 的二进制文件。

  4. 传到 CentOS 服务器。用 scp 或者你习惯的文件传输工具都行:

    scp myservice user@centos_server:/path/to/destination
    
  5. 给执行权限。到了服务器上,别忘了:

    chmod +x /path/to/destination/myservice
    
  6. 创建 systemd 服务文件。这是整个流程的关键——让程序能开机自启、崩溃自动恢复。用 vi 或者其他编辑器新建一个文件:

    sudo vi /etc/systemd/system/myservice.service
    

    内容如下(记得替换用户和组):

    [Unit]
    Description=My Go Service
    After=network.target
    
    [Service]
    ExecStart=/path/to/destination/myservice
    Restart=always
    User=
    Group=
    Environment=GO_ENV=production
    
    [Install]
    WantedBy=multi-user.target
    
  7. 启动并设置开机自启

    sudo systemctl start myservice
    sudo systemctl enable myservice
    
  8. 检查状态,确认一切正常:

    sudo systemctl status myservice
    

如果你的 Go 程序没有依赖特殊系统库或者 CGO,这八步走完,服务就已经跑起来了。需要说明的是,上面假设你的程序是纯 Go 写的,不依赖特定操作系统特性。如果涉及 CGO 或系统级依赖,那编译阶段还需要额外配置,比如设置 CGO_ENABLED=1 或指定 CC 编译器。那种情况虽然不常见,但提前了解可以避免临时抓瞎。

本文转载于:https://www.yisu.com/ask/32197803.html 如有侵犯,请联系zhengruancom@outlook.com删除。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。

热门关注