怎么在Linux上进行Golang服务部署

来源:3D模型作者:缅甸程序员头衔:程序员
导读:本期聚焦于小伙伴创作的《怎么在Linux上进行Golang服务部署》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《怎么在Linux上进行Golang服务部署》有用,将其分享出去将是对创作者最好的鼓励。

在Linux系统上部署Golang服务,核心流程包含程序编译、文件传输、服务配置三个主要环节,每个环节都有需要注意的细节,才能保证服务稳定运行。

怎么在Linux上进行Golang服务部署

环境准备

首先需要确认本地开发环境和目标Linux服务器的基础环境。本地需要有Golang开发环境用于编译程序,目标Linux服务器建议使用主流的发行版比如Ubuntu、CentOS等,同时需要拥有服务器的SSH登录权限,方便后续传输文件和配置服务。

交叉编译Golang程序

Golang支持交叉编译,不需要在Linux服务器上安装Golang环境,只需要在本地编译出适配Linux系统的二进制文件即可。编译时需要注意设置正确的环境变量,确保生成的程序能在目标Linux架构上运行。

如果是64位Linux系统,在本地终端执行以下命令编译:

# 设置目标系统为Linux,架构为amd64
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o app main.go

编译完成后会生成名为app的二进制文件,这个文件就是可以直接在Linux上运行的程序。如果目标服务器是arm架构,只需要把GOARCH参数改成arm64即可。

传输二进制文件到Linux服务器

编译好的二进制文件需要传输到Linux服务器上,常用的传输方式有两种,一种是使用scp命令,另一种是通过可视化工具比如FileZilla传输。

使用scp命令传输的示例如下,假设本地文件路径是./app,服务器用户是root,服务器IP是192.168.0.1,目标目录是/opt/golang_app:

scp ./app root@192.168.0.1:/opt/golang_app/

传输完成后,需要登录服务器给二进制文件添加可执行权限,执行以下命令:

chmod +x /opt/golang_app/app

此时可以先手动运行程序测试是否正常启动:

/opt/golang_app/app

如果程序启动后输出正常的日志,说明二进制文件可以正常运行,接下来需要配置服务持久化运行。

配置systemd管理服务

手动启动的程序在终端关闭后就会停止运行,也不支持开机自启,因此需要用systemd来管理Golang服务,实现服务的后台运行、开机自启和异常自动重启。

首先在/etc/systemd/system目录下创建服务配置文件,比如命名为golang_app.service:

vim /etc/systemd/system/golang_app.service

在文件中添加以下内容,根据实际情况修改路径和用户信息:

[Unit]
# 服务描述
Description=Golang Application Service
# 服务在网络服务启动后运行
After=network.target

[Service]
# 服务运行用户,建议使用非root用户提高安全性
User=root
# 工作目录
WorkingDirectory=/opt/golang_app
# 启动命令,填写二进制文件的完整路径
ExecStart=/opt/golang_app/app
# 程序异常退出时自动重启
Restart=always
# 重启等待时间
RestartSec=5
# 环境变量配置,比如端口、数据库连接等
Environment="APP_PORT=8080"
Environment="DB_HOST=127.0.0.1"

[Install]
# 多用户模式下开机自启
WantedBy=multi-user.target

配置文件保存后,执行以下命令重新加载systemd配置:

systemctl daemon-reload

然后启动服务并设置开机自启:

# 启动服务
systemctl start golang_app
# 设置开机自启
systemctl enable golang_app

服务状态检查与常用操作

服务启动后可以通过以下命令检查运行状态:

systemctl status golang_app

如果状态显示active (running),说明服务正常运行。常用的服务操作命令如下:

  • 停止服务:systemctl stop golang_app
  • 重启服务:systemctl restart golang_app
  • 查看服务日志:journalctl -u golang_app -f

常见问题排查

如果服务启动失败,首先查看服务日志定位问题,常见的问题有以下几类:

  • 二进制文件没有可执行权限,重新执行chmod +x命令添加权限即可
  • 配置文件中的路径错误,检查ExecStart和WorkingDirectory的路径是否正确
  • 程序依赖的环境变量没有配置,在service文件的Environment字段补充对应的环境变量
  • 端口被占用,修改程序监听的端口或者停止占用端口的进程

按照以上步骤操作,就可以完成Golang服务在Linux上的完整部署,服务会自动在后台运行,出现异常也会自动重启,同时支持服务器重启后自动启动。

GolangLinux部署服务部署systemd修改时间:2026-07-20 10:36:32

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。