引言:为什么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