首页主机资讯Golang在CentOS打包步骤

Golang在CentOS打包步骤

时间2025-10-28 20:22:03发布访客分类主机资讯浏览1120
导读:Golang在CentOS上的打包步骤 1. 安装Golang环境 在CentOS上打包Golang项目前,需先安装Golang。可通过以下两种方式安装: Yum快速安装(默认版本可能较旧):sudo yum install -y gol...

Golang在CentOS上的打包步骤

1. 安装Golang环境

在CentOS上打包Golang项目前,需先安装Golang。可通过以下两种方式安装:

  • Yum快速安装(默认版本可能较旧):
    sudo yum install -y golang
    
  • 手动下载安装(推荐最新稳定版):
    wget https://golang.org/dl/go1.23.0.linux-amd64.tar.gz  # 替换为最新版本
    sudo tar -C /usr/local -xzf go1.23.0.linux-amd64.tar.gz
    
  • 配置环境变量
    编辑~/.bashrc(或/etc/profile),添加以下内容:
    export GOROOT=/usr/local/go
    export GOPATH=$HOME/go
    export PATH=$PATH:$GOROOT/bin:$GOPATH/bin
    
    生效配置:
    source ~/.bashrc
    
  • 验证安装
    go version  # 应输出类似"go1.23.0 linux/amd64"
    

2. 编写或准备Go项目

$GOPATH/src目录下创建项目文件夹(如myapp),编写main.go文件:

mkdir -p $GOPATH/src/myapp
cd $GOPATH/src/myapp
vim main.go  # 示例代码:package main;
     import "fmt";
 func main() {
 fmt.Println("Hello, CentOS!") }
    
  • 使用Go Modules管理依赖(推荐):
    若项目依赖第三方库,初始化模块并下载依赖:
    go mod init example.com/myapp
    go get -u github.com/gin-gonic/gin  # 示例:添加Gin框架依赖
    

3. 编译项目(生成可执行文件)

  • 本地编译(仅适用于CentOS环境)
    直接运行go build生成可执行文件:
    cd $GOPATH/src/myapp
    go build -o myapp  # 生成名为"myapp"的可执行文件
    
  • 交叉编译(适用于其他环境,如Windows)
    若需为其他平台编译,设置GOOS(目标系统)和GOARCH(目标架构):
    GOOS=windows GOARCH=amd64 go build -o myapp.exe  # 编译为Windows 64位可执行文件
    
  • 静态编译(避免依赖外部库)
    若需生成自包含的二进制文件(无需安装Glibc等依赖),添加-ldflagsCGO_ENABLED=0
    CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -ldflags="-s -w" -o myapp
    
    其中:
    • -ldflags="-s -w":去除调试信息和符号表,减小文件体积;
    • CGO_ENABLED=0:禁用CGO,强制静态编译。

4. 打包项目文件

将可执行文件与配置文件(如config.yaml)、脚本(如run.sh)等一起打包成压缩文件:

cd $GOPATH/src/myapp
tar -czvf myapp.tar.gz myapp config/ scripts/run.sh  # 打包myapp及config、scripts目录
  • 示例run.sh脚本(用于启动程序):
    #!/bin/bash
    nohup ./myapp >
         app.log 2>
        &
        1 &
          # 后台运行并输出日志到app.log
    chmod +x run.sh  # 赋予执行权限
    

5. 可选:创建RPM包(便于分发)

若需将项目打包为RPM格式(适用于CentOS的软件包管理),需完成以下步骤:

  • 安装rpmbuild工具
    sudo yum install -y rpm-build
    
  • 创建RPM宏文件
    在用户主目录创建.rpmmacros,定义构建路径:
    echo '%_topdir %(echo $HOME)/rpmbuild' >
        >
     ~/.rpmmacros
    mkdir -p ~/rpmbuild/{
    BUILD,RPMS,SOURCES,SPECS,SRPMS}
    
    
  • 准备SPEC文件
    ~/rpmbuild/SPECS下创建myapp.spec,内容如下:
    Name:           myapp
    Version:        1.0
    Release:        1%{
    ?dist}
    
    Summary:        A simple Golang application for CentOS
    License:        MIT
    URL:            http://example.com/myapp
    Source0:        %{
    name}
    -%{
    version}
        .tar.gz  # 需将项目打包为tar.gz并放入SOURCES目录
    
    BuildRequires:  golang >
        = 1.16
    Requires:       golang >
    = 1.16
    
    %description
    This is a Golang application packaged for CentOS.
    
    %prep
    %setup -q
    
    %build
    go build -o %{
    buildroot}
    /usr/bin/myapp .
    
    %install
    rm -rf %{
    buildroot}
    
    mkdir -p %{
    buildroot}
    /usr/bin
    cp myapp %{
    buildroot}
        /usr/bin/
    
    %files
    /usr/bin/myapp
    
    %changelog
    * Tue Oct 28 2025 Your Name <
        your@email.com>
         - 1.0-1
    - Initial package
    
  • 构建RPM包
    将项目打包为tar.gz并放入~/rpmbuild/SOURCES
    tar -czvf ~/rpmbuild/SOURCES/myapp-1.0.tar.gz -C $GOPATH/src/myapp .
    
    运行rpmbuild命令:
    rpmbuild -ba ~/rpmbuild/SPECS/myapp.spec
    
    生成的RPM包位于~/rpmbuild/RPMS/x86_64/目录下(如myapp-1.0-1.el7.x86_64.rpm)。

6. 部署与运行

  • 上传并解压
    使用scp将打包文件上传到CentOS服务器:
    scp myapp.tar.gz user@your_server_ip:/opt
    ssh user@your_server_ip
    cd /opt
    tar -xzvf myapp.tar.gz
    
  • 运行程序
    赋予执行权限并启动:
    cd /opt/myapp
    chmod +x myapp
    ./myapp  # 前台运行
    
  • 后台运行(推荐)
    使用nohupsystemd服务:
    nohup ./myapp >
         app.log 2>
        &
        1 &
          # 日志输出到app.log
    
  • 设置开机自启动(systemd)
    创建服务文件/etc/systemd/system/myapp.service
    [Unit]
    Description=My Golang Application
    After=network.target
    
    [Service]
    User=root
    ExecStart=/opt/myapp/myapp
    Restart=always
    
    [Install]
    WantedBy=multi-user.target
    
    启用并启动服务:
    sudo systemctl daemon-reload
    sudo systemctl enable myapp
    sudo systemctl start myapp
    

以上步骤覆盖了Golang在CentOS上的完整打包、部署流程,可根据实际需求选择静态编译、RPM打包或Docker容器化等方式优化部署效率。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: Golang在CentOS打包步骤
本文地址: https://pptw.com/jishu/737128.html
CentOS中如何打包Golang 如何在CentOS进行Golang打包

游客 回复需填写必要信息