centos

CentOS Golang如何部署应用

小樊
83
2025-02-12 17:33:39
栏目: 编程语言

在CentOS上部署Golang应用可以按照以下步骤进行:

  1. 安装Go语言环境

    • 下载适合CentOS的Go安装包,例如 go1.18.linux-amd64.tar.gz
    • 解压安装包到 /usr/local 目录:
      sudo tar -C /usr/local -xzf go1.18.linux-amd64.tar.gz
      
    • 配置环境变量,编辑 ~/.bashrc~/.zshrc 文件,添加以下行:
      export PATH=$PATH:/usr/local/go/bin
      export GOPATH=$HOME/go
      
    • 使环境变量生效:
      source ~/.bashrc
      
    • 验证安装:
      go version
      
      如果显示Go版本信息,则表示安装成功。
  2. 构建和打包应用

    • 在本地开发环境中,确保项目可以正确编译和运行。
    • 设置交叉编译选项:
      export GOOS=linux
      export GOARCH=amd64
      
    • 编译项目生成可执行文件:
      go build -o main main.go
      
    • 将生成的二进制文件和配置文件上传到服务器。
  3. 直接部署应用

    • 在服务器上创建存放目录:
      mkdir -p /root/project/myproject
      
    • 上传文件到服务器:
      scp main /root/project/myproject/
      scp config.yaml /root/project/myproject/
      
    • 赋予执行权限并运行应用:
      chmod +x /root/project/myproject/main
      nohup /root/project/myproject/main -c /root/project/myproject/config.yaml > start.log 2>&1 &
      
    • 查看进程和日志:
      ps ef | grep main
      tail -f start.log
      
  4. 使用Docker容器化部署

    • 编写 Dockerfile
      FROM golang:alpine
      WORKDIR /app
      COPY . .
      RUN go build -o main .
      EXPOSE 8080
      CMD ["./main"]
      
    • 构建Docker镜像:
      docker build -t myimage .
      
    • 运行Docker容器:
      docker run -d -p 8080:8080 myimage
      
    • 查看容器状态:
      docker ps -a
      
  5. 使用Kubernetes进行容器编排(可选):

    • 编写 Deployment 配置文件:
      apiVersion: apps/v1
      kind: Deployment
      metadata:
        name: myapp
      spec:
        replicas: 3
        selector:
          matchLabels:
            app: myapp
        template:
          metadata:
            labels:
              app: myapp
          spec:
            containers:
            - name: myapp
              image: myimage
              ports:
              - containerPort: 8080
      
    • 创建 DeploymentService
      kubectl apply -f deployment.yaml
      

通过以上步骤,你可以在CentOS系统上成功部署和运行Golang应用。

0
看了该问题的人还看了