温馨提示×

Golang在Linux系统上如何部署

小樊
57
2025-06-13 04:38:08
栏目: 编程语言

在Linux系统上部署Golang应用程序通常涉及以下几个步骤:

1. 安装Golang环境

  • 下载并解压Go安装包: 访问Go官方下载页面下载最新版本的Go二进制安装包。使用 wget 命令下载并解压到 /usr/local 目录下。

    wget https://golang.org/dl/go1.22.1.linux-amd64.tar.gz
    sudo tar -C /usr/local -xzf go1.22.1.linux-amd64.tar.gz
    
  • 设置环境变量: 编辑 ~/.bashrc~/.zshrc 文件,添加以下行:

    export PATH=$PATH:/usr/local/go/bin
    export GOPATH=$HOME/go
    export GOBIN=$GOPATH/bin
    

    保存文件并运行以下命令使更改生效:

    source ~/.bashrc
    
  • 验证安装: 运行以下命令来验证Go是否安装成功:

    go version
    

    你应该能看到类似 go version go1.22.1 linux/amd64 的输出。

2. 编写Golang应用程序

创建一个简单的Golang应用程序,例如一个HTTP服务器:

package main

import (
    "fmt"
    "net/http"
)

func main() {
    http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
        fmt.Fprintf(w, "Hello, World!")
    })
    http.ListenAndServe(":8080", nil)
}

3. 构建Golang应用程序

在应用程序目录中,使用以下命令构建程序:

go build

该命令会将程序编译成可执行文件。执行完毕后,会在当前目录下生成一个名为 main 的文件。

4. 部署Golang应用程序

  • 直接运行可执行文件: 使用以下命令运行编译后的二进制文件:

    ./main
    

    这将在本地8080端口启动HTTP服务。

  • 使用systemd进行管理: 为了使应用程序在后台运行并在崩溃时自动重启,可以创建一个 systemd 服务文件。

    创建一个名为 myapp.service 的配置文件,并将以下内容复制到文件中:

    [Unit]
    Description=My Golang App
    After=syslog.target network.target
    
    [Service]
    Type=simple
    User=root
    WorkingDirectory=/path/to/your/app
    ExecStart=/usr/local/go/bin/myapp
    Restart=always
    
    [Install]
    WantedBy=multi-user.target
    

    将该文件保存到 /etc/systemd/system 目录下,并使用以下命令重新加载 systemd 配置:

    sudo systemctl daemon-reload
    

    使用以下命令启动服务:

    sudo systemctl start myapp
    

    使用以下命令检查服务状态:

    sudo systemctl status myapp
    

    使用以下命令使服务开机自启动:

    sudo systemctl enable myapp
    

5. 配置Nginx作为反向代理(可选)

安装Nginx:

sudo apt update
sudo apt install nginx

配置Nginx以反向代理到你的Golang应用:

sudo nano /etc/nginx/sites-available/myapp

添加以下内容:

server {
    listen 80;
    server_name your_domain_or_ip;

    location / {
        proxy_pass http://localhost: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;
    }
}

启用配置:

sudo ln -s /etc/nginx/sites-available/myapp /etc/nginx/sites-enabled
sudo nginx -t
sudo systemctl restart nginx

6. 验证部署

打开浏览器并访问你的域名或IP地址,你应该能看到你的Golang应用正在运行。

0