首页主机资讯CentOS Golang部署怎样进行

CentOS Golang部署怎样进行

时间2025-11-06 01:27:04发布访客分类主机资讯浏览1176
导读:CentOS上部署Golang应用的完整流程 1. 安装Golang环境 1.1 手动安装(推荐特定版本) 下载安装包:通过wget获取Go官方压缩包(以1.20.5为例): wget https://golang.org/dl/go1....

CentOS上部署Golang应用的完整流程

1. 安装Golang环境

1.1 手动安装(推荐特定版本)

  • 下载安装包:通过wget获取Go官方压缩包(以1.20.5为例):
    wget https://golang.org/dl/go1.20.5.linux-amd64.tar.gz
  • 解压到系统目录:将压缩包解压至/usr/local(系统级安装路径):
    sudo tar -C /usr/local -xzf go1.20.5.linux-amd64.tar.gz
  • 配置环境变量:编辑用户级配置文件(如~/.bashrc),添加以下内容:
    export GOROOT=/usr/local/go  # Go安装路径
    export GOPATH=$HOME/go       # 工作目录(存放项目及依赖)
    export PATH=$PATH:$GOROOT/bin:$GOPATH/bin  # 将Go命令加入全局路径
    export GO111MODULE=on        # 启用Go Modules(依赖管理)
    
    执行source ~/.bashrc使配置生效。

1.2 使用Yum快速安装(默认版本)

  • CentOS 8及以上版本使用dnf:
    sudo dnf install golang -y
  • CentOS 7及以下版本使用yum:
    sudo yum install golang -y
  • 验证安装:go version(显示版本号则成功)。

2. 编译Golang项目

  • 本地开发与交叉编译:在项目根目录(含main.go)下,使用以下命令生成Linux系统的可执行文件(避免依赖目标服务器的Go环境):
    GOOS=linux GOARCH=amd64 go build -o myapp
    GOOS指定操作系统,GOARCH指定架构,-o指定输出文件名)。

  • 使用Go Modules管理依赖:若项目需第三方库,进入项目目录初始化模块:
    go mod init < 项目名> (如go mod init myproject
    安装依赖:go get < 依赖包路径> (如go get github.com/gin-gonic/gin)。

3. 部署到CentOS服务器

3.1 上传可执行文件

  • 使用scp命令将编译好的myapp上传至服务器(替换userserver_ip/deploy为实际值):
    scp myapp user@server_ip:/deploy

3.2 设置运行权限

  • 登录服务器,为可执行文件添加运行权限:
    chmod +x /deploy/myapp
  • 后台运行应用(输出日志至app.log):
    nohup /deploy/myapp > /deploy/app.log 2> & 1 &
    nohup防止进程因终端关闭终止,2> & 1将标准错误合并至标准输出)。

4. 使用Systemd管理服务(推荐)

  • 创建服务文件:在/etc/systemd/system/下新建myapp.service(替换/deploy/myappuser为实际路径和用户):
    [Unit]
    Description=My Golang Application
    After=network.target  # 确保网络就绪后启动
    
    [Service]
    Type=simple           # 简单服务类型(适用于前台运行的应用)
    User=user             # 运行服务的用户(避免使用root)
    WorkingDirectory=/deploy  # 应用工作目录
    ExecStart=/deploy/myapp  # 启动命令
    Restart=always        # 进程退出时自动重启
    Environment=GO_ENV=production  # 设置环境变量(如生产环境)
    
    [Install]
    WantedBy=multi-user.target  # 多用户模式下启动
    
  • 加载并启动服务
    sudo systemctl daemon-reload  # 重新加载systemd配置
    sudo systemctl start myapp    # 启动服务
    sudo systemctl status myapp   # 查看服务状态(确认是否运行)
    
  • 设置开机自启
    sudo systemctl enable myapp

5. 配置防火墙(允许外部访问)

  • 若应用监听8080端口(或其他端口),需放行该端口:
    sudo firewall-cmd --permanent --zone=public --add-port=8080/tcp  # 永久添加端口规则
    sudo firewall-cmd --reload  # 重新加载防火墙配置
    
  • 验证端口是否开放:sudo firewall-cmd --zone=public --query-port=8080/tcp(返回yes则成功)。

6. 可选优化:Docker容器化部署

  • 编写Dockerfile:在项目根目录创建Dockerfile(简化部署流程):
    FROM golang:1.20-alpine  # 使用轻量级Alpine镜像
    WORKDIR /app
    COPY . .                 # 复制项目文件至容器
    RUN go build -o myapp .  # 编译项目
    EXPOSE 8080              # 暴露端口
    CMD ["./myapp"]          # 启动命令
    
  • 构建与运行镜像
    docker build -t myapp .  # 构建镜像(标签为myapp)
    docker run -d -p 8080:8080 --name myapp_container myapp  # 运行容器(映射端口)
    
  • 验证容器状态docker ps(查看容器是否运行)。

关键注意事项

  • 环境变量一致性:确保服务器上的GOROOTGOPATH与开发环境一致,避免依赖问题。
  • 日志管理:通过nohup输出的日志文件(如app.log)需定期清理,或使用logrotate工具管理。
  • 端口冲突:若端口已被占用,可通过netstat -tulnp | grep < 端口> 查找占用进程,或更换端口。
  • 安全性:生产环境建议使用HTTPS(通过Nginx反向代理配置SSL证书),并限制应用用户权限(避免使用root)。

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


若转载请注明出处: CentOS Golang部署怎样进行
本文地址: https://pptw.com/jishu/743579.html
CentOS Golang监控如何实现 CentOS Golang日志处理怎么做

游客 回复需填写必要信息