首页主机资讯Golang在CentOS上如何部署

Golang在CentOS上如何部署

时间2025-12-19 21:45:05发布访客分类主机资讯浏览1441
导读:在 CentOS 上部署 Golang 的完整流程 一 安装 Go 环境 方式一 YUM 安装(快速、版本可能较旧) 执行:sudo yum install -y golang 验证:go version 方式二 二进制安装(指定版...

在 CentOS 上部署 Golang 的完整流程

一 安装 Go 环境

  • 方式一 YUM 安装(快速、版本可能较旧)
    • 执行:sudo yum install -y golang
    • 验证:go version
  • 方式二 二进制安装(指定版本、推荐)
    • 安装工具:sudo yum -y install wget git
    • 下载(示例为 go1.21.6,可按需替换版本):wget https://golang.org/dl/go1.21.6.linux-amd64.tar.gz -P /usr/local/src
    • 解压:sudo tar -C /usr/local -xzf /usr/local/src/go1.21.6.linux-amd64.tar.gz
    • 配置环境变量(全局生效):
      echo 'export GOROOT=/usr/local/go' | sudo tee -a /etc/profile
      echo 'export PATH=$PATH:$GOROOT/bin' | sudo tee -a /etc/profile
      source /etc/profile
      
    • 验证:go version(应输出版本号)

二 配置模块与国内代理

  • 启用 Go Modules(Go 1.11+ 默认开启,建议保持):go env -w GO111MODULE=on
  • 设置国内模块代理(提升拉取依赖速度):go env -w GOPROXY=https://goproxy.cn,direct
  • 可选:设置常用全局变量(写入 ~/.bashrc/etc/profile
    echo 'export GOPATH=$HOME/go' >
        >
         ~/.bashrc
    echo 'export PATH=$PATH:$GOPATH/bin' >
        >
         ~/.bashrc
    source ~/.bashrc
    
  • 说明:现代 Go 开发以模块为主,GOPATH 非必需,但设置后可方便使用 go install 等命令。

三 编译与运行示例

  • 本地或服务器上创建测试程序:cat > main.go < < 'EOF'
    package main
    import "fmt"
    func main() {
     fmt.Println("Hello, 世界") }
        
    EOF
    
  • 构建:go build -o myapp main.go
  • 运行:./myapp(预期输出:Hello, 世界)
  • 交叉编译示例(在 macOS/Linux 上为 Linux amd64 构建):GOOS=linux GOARCH=amd64 go build -o dist/app-linux-amd64 main.go

四 部署为系统服务

  • 使用 Systemd 管理(推荐)
    • 创建服务文件:sudo tee /etc/systemd/system/myapp.service < < 'EOF'
      [Unit]
      Description=My Go Application
      After=network.target
      
      [Service]
      User=youruser
      Group=yourgroup
      ExecStart=/opt/myapp/myapp
      Restart=always
      Environment=GO_ENV=production
      
      [Install]
      WantedBy=multi-user.target
      EOF
      
    • 启动与开机自启:
      sudo systemctl daemon-reload
      sudo systemctl start myapp
      sudo systemctl enable myapp
      sudo systemctl status myapp
      sudo journalctl -u myapp -f
      
  • 使用 Supervisor(CentOS 9 常见替代方案)
    • 安装:sudo yum install -y supervisor
    • 配置:sudo tee /etc/supervisord.d/app.ini < < 'EOF'
      [program:app]
      directory=/opt/myapp
      command=/opt/myapp/myapp
      autostart=true
      autorestart=true
      stderr_logfile=/opt/myapp/log/app.err
      stdout_logfile=/opt/myapp/log/app.log
      environment=ENV_VAR1="value1"
      EOF
      
    • 启动:sudo systemctl start supervisord & & sudo systemctl enable supervisord
    • 常用:supervisorctl start|stop|restart app

五 网络与反向代理

  • 防火墙放行端口(示例为 8080):
    sudo firewall-cmd --zone=public --add-port=8080/tcp --permanent
    sudo firewall-cmd --reload
    
  • Nginx 反向代理(可选,端口 80 转发到 8080
    • 安装:sudo yum install -y nginx
    • 配置:sudo tee /etc/nginx/conf.d/myapp.conf < < 'EOF'
      server {
          
        listen 80;
          
        server_name yourdomain.com;
      
        location / {
          
          proxy_pass http://127.0.0.1:8080;
          
          proxy_set_header Host $host;
          
          proxy_set_header X-Real-IP $remote_addr;
          
          proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
          
          proxy_set_header X-Forwarded-Proto $scheme;
      
        }
      
      }
          
      EOF
      
    • 生效:sudo systemctl reload nginx & & sudo systemctl enable nginx

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


若转载请注明出处: Golang在CentOS上如何部署
本文地址: https://pptw.com/jishu/776689.html
Rust在CentOS上的Web开发如何入门 CentOS如何配置Rust的持续集成环境

游客 回复需填写必要信息