首页主机资讯centos golang项目部署配置要点

centos golang项目部署配置要点

时间2025-10-09 15:34:04发布访客分类主机资讯浏览917
导读:CentOS Golang项目部署配置要点 1. 环境准备:安装Go及依赖 安装Go环境:通过YUM或手动下载安装包部署。例如,使用YUM命令sudo yum install golang快速安装;或从官网下载对应版本(如go1.18.l...

CentOS Golang项目部署配置要点

1. 环境准备:安装Go及依赖

  • 安装Go环境:通过YUM或手动下载安装包部署。例如,使用YUM命令sudo yum install golang快速安装;或从官网下载对应版本(如go1.18.linux-amd64.tar.gz),解压至/usr/local,并配置环境变量(GOROOT=/usr/local/goGOPATH=$HOME/goPATH=$PATH:$GOROOT/bin:$GOPATH/bin),通过source ~/.bashrc生效。
  • 安装编译依赖:若项目包含C代码(未禁用CGO),需安装编译工具链和库:sudo yum install -y gcc gcc-c++ autoconf automake make zlib zlib-devel openssl openssl-devel pcre pcre-devel,确保交叉编译时能正确链接依赖。

2. 项目编译:生成可执行文件

  • 初始化模块(若使用Go Modules):在项目根目录执行go mod init < module-name> (如example.com/myapp),生成go.mod文件管理依赖。
  • 交叉编译(推荐):针对CentOS(Linux amd64架构)编译,关闭CGO以提升可移植性:CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o myapp-linux-amd64 main.go。使用-ldflags="-s -w"去除调试信息和符号表,减小文件体积(如-ldflags="-s -w" CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o myapp)。

3. 部署与运行:基础执行配置

  • 上传与授权:使用scp将编译后的可执行文件上传至服务器(如scp myapp-linux-amd64 user@server_ip:/opt/myapp),并通过chmod +x /opt/myapp/myapp-linux-amd64赋予执行权限。
  • 后台运行:通过nohup命令让程序在后台持续运行,并将日志输出至文件:nohup /opt/myapp/myapp-linux-amd64 > /opt/myapp/log.log 2> & 1 & 。但此方式缺乏进程管理,仅适用于测试环境。

4. 进程管理:使用systemd实现守护进程

  • 创建服务文件:在/etc/systemd/system/下创建.service文件(如myapp.service),内容示例:
    [Unit]
    Description=My Golang Application
    After=network.target
    
    [Service]
    User=www  # 建议使用非root用户(如www)
    Group=www
    WorkingDirectory=/opt/myapp  # 项目工作目录
    ExecStart=/opt/myapp/myapp-linux-amd64  # 可执行文件路径
    Restart=always  # 失败时自动重启
    Environment="APP_ENV=production" "DATABASE_URL=mysql://user:pass@localhost/db"  # 环境变量
    
    [Install]
    WantedBy=multi-user.target
    
  • 启动与设置开机自启:执行sudo systemctl daemon-reload重新加载配置,sudo systemctl start myapp.service启动服务,sudo systemctl enable myapp.service设置开机自启。通过systemctl status myapp.service查看状态。

5. 网络配置:防火墙与反向代理

  • 开放防火墙端口:若项目监听8080端口,允许HTTP/HTTPS流量:sudo firewall-cmd --permanent --add-service=http --add-service=httpssudo firewall-cmd --reload。若使用自定义端口(如8080),需添加--add-port=8080/tcp
  • 配置Nginx反向代理(可选):安装Nginx(sudo yum install nginx),编辑配置文件(如/etc/nginx/conf.d/myapp.conf),添加反向代理规则:
    server {
        
        listen 80;
        
        server_name your_domain_or_ip;
    
        
        location / {
        
            proxy_pass http://localhost:8080;
          # 转发至Go应用端口
            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;
    
        }
    
    }
        
    
    重启Nginx(sudo systemctl restart nginx)后,可通过域名或IP访问应用。

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

  • 编写Dockerfile:在项目根目录创建Dockerfile,内容示例:
    FROM golang:1.18 AS builder
    WORKDIR /app
    COPY . .
    RUN CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o myapp .
    
    FROM alpine:latest
    WORKDIR /app
    COPY --from=builder /app/myapp .
    EXPOSE 8080
    CMD ["./myapp"]
    
  • 构建与运行:执行docker build -t myapp .构建镜像,docker run -d -p 8080:8080 --name myapp-container myapp运行容器。通过Docker Compose可管理多容器(如Nginx+Go应用)。

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


若转载请注明出处: centos golang项目部署配置要点
本文地址: https://pptw.com/jishu/721439.html
centos里laravel依赖如何管理 如何在centos上配置golang并发模式

游客 回复需填写必要信息