发布于2026-07-13 阅读(0)
扫一扫,手机访问
在 Linux 系统上部署 Go 语言写的 Web 服务,说起来其实就几个关键步骤,从本地写代码到服务器上跑起来,再到用 Systemd 把它变成开机自启的守护进程。下面直接上干货,手把手走一遍。

在动手之前,先确保本地能跑起来。一个最简单的 HTTP 服务器长这样:
package mainimport ("fmt""net/http")func main() {http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {fmt.Fprintf(w, "Hello, World!")})fmt.Println("Server is running on port 8080")http.ListenAndServe(":8080", nil)}
在项目目录里跑一条命令就能编译出可执行文件:
go build -o myapp
生成一个叫 myapp 的二进制文件,注意这文件是静态链接的,扔到目标服务器上直接就能跑,省心。
用 scp 或 rsync 把文件传上去。举个例子:
scp myapp user@your-server:/path/to/deploy
路径随你定,后面 Systemd 配置里保持一致就行。
登录服务器,切到刚才的目录,直接运行试试:
cd /path/to/deploy./myapp
终端会输出一行“Server is running on port 8080”,这说明程序能正常启动。不过这样跑的话,关闭终端程序就停了,所以下一步才是重点。
系统服务化之后,既能开机自启,又能崩溃自动重启。创建一个 Systemd 服务单元文件:
sudo nano /etc/systemd/system/myapp.service
填入以下内容:
[Unit]Description=My Go Web ServiceAfter=network.target[Service]ExecStart=/path/to/deploy/myappRestart=alwaysUser=your-userGroup=your-groupEnvironment=PORT=8080[Install]WantedBy=multi-user.target
注意把 ExecStart 路径改成你实际的位置,User 和 Group 也换成服务器上的用户。
先让 Systemd 重新加载配置:
sudo systemctl daemon-reload
然后启动服务:
sudo systemctl start myapp
最后设置开机自启:
sudo systemctl enable myapp
用这条命令看一眼有没有跑起来:
sudo systemctl status myapp
输出里应该能看到 active (running) 字样,如果挂了也会显示 restarting 状态(因为我们设了 Restart=always)。
端口 8080 得对外放开,否则外部访问不到。用 ufw 的话很简单:
sudo ufw allow 8080
如果用 iptables 或者其他防火墙,也是同样的意思——放行这个端口。
打开浏览器,输入服务器 IP 加端口:
http://192.168.1.100:8080
能看到“Hello, World!”就说明部署成功了。整个流程下来,从编译到服务化,其实就这几步。后续如果有环境变量、日志轮转之类的高级需求,也可以在这个基础上继续加配置。
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
7
8