在VPS上部署Go应用程序:从A到Z的逐步指南

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

引言:为什么Go是VPS的理想选择,以及我们将要做的事情



Go(Golang)是一种专为可扩展和高性能服务器应用程序设计的语言。编译成单个静态二进制文件使其成为部署在VPS(虚拟专用服务器)上的理想选择。您无需在服务器上安装解释器或依赖项——只需复制文件并运行即可。



在本文中,我们将走完完整的流程:从编写一个简单的Go HTTP服务器,到在VPS上使用systemd实现自动启动、Nginx作为反向代理以及Let's Encrypt实现HTTPS,将其投入生产环境。



您将学习:

  • 为Linux编译Go应用程序
  • 通过SSH将二进制文件上传到VPS
  • 配置systemd实现自动启动
  • 安装和配置Nginx
  • 获取免费的SSL证书


步骤1:准备Go应用程序并编译



创建一个简单的Web应用程序



作为示例,我们将编写一个最小的HTTP服务器,响应"Hello, VPS!"。创建文件main.go:



package main

import ( "fmt" "net/http")

func main() { http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { fmt.Fprintf(w, "Hello, VPS!") })

fmt.Println("Server started on :8080") http.ListenAndServe(":8080", nil)}


为Linux编译



如果您在Windows或macOS上开发,则需要为目标VPS架构(通常是linux/amd64)编译二进制文件。在项目文件夹中打开终端并执行:



set GOOS=linuxset GOARCH=amd64go build -o myapp


对于Linux/macOS,使用export:



export GOOS=linuxexport GOARCH=amd64go build -o myapp


结果将生成一个名为myapp的二进制文件。检查其大小——它应该很小(约7-10 MB),因为Go会静态编译所有内容。



步骤2:上传到VPS并配置systemd



连接到服务器并上传文件



通过SSH连接到您的VPS:



ssh root@您的服务器IP


为应用程序创建目录:



mkdir -p /opt/myappcd /opt/myapp


在本地机器上,通过SCP上传二进制文件(在另一个终端中执行):



scp myapp root@您的服务器IP:/opt/myapp/


返回服务器并赋予执行权限:



chmod +x /opt/myapp/myapp


创建systemd服务



为了使应用程序在系统启动时自动运行并在崩溃时重启,我们将创建一个systemd单元。创建文件:



nano /etc/systemd/system/myapp.service


粘贴以下内容:



[Unit]Description=My Go ApplicationAfter=network.target

[Service]Type=simpleUser=www-dataGroup=www-dataWorkingDirectory=/opt/myappExecStart=/opt/myapp/myappRestart=on-failureRestartSec=5

[Install]WantedBy=multi-user.target


参数说明:

  • User和Group——运行应用程序的用户(建议不要使用root)。
  • Restart=on-failure——崩溃时自动重启。
  • RestartSec=5——重启前的等待时间。


现在激活并启动服务:



systemctl daemon-reloadsystemctl enable myappsystemctl start myappsystemctl status myapp


如果一切正确,您将看到状态active (running)。检查应用程序是否在本地响应:



curl http://localhost:8080


步骤3:配置Nginx作为反向代理



直接通过端口8

博客

书籍推荐