插件窝 干货文章 Golang在Linux下如何部署

Golang在Linux下如何部署

myapp 部署 使用 app 600    来源:    2025-05-09

Golang在Linux下的部署指南

1. 基础部署方式

直接运行二进制文件

Golang编译生成的是静态链接的二进制文件,最简单的部署方式就是:

# 编译 (在开发机器上)
GOOS=linux GOARCH=amd64 go build -o myapp

# 上传到服务器
scp myapp user@server:/path/to/app

# 在服务器上运行
chmod +x /path/to/app/myapp
/path/to/app/myapp

使用nohup保持运行

nohup /path/to/app/myapp > /var/log/myapp.log 2>&1 &

2. 使用systemd管理服务

创建服务文件 /etc/systemd/system/myapp.service

[Unit]
Description=My Golang Application
After=network.target

[Service]
Type=simple
User=appuser
WorkingDirectory=/path/to/app
ExecStart=/path/to/app/myapp
Restart=always
RestartSec=5
Environment="ENV_VAR=value"

[Install]
WantedBy=multi-user.target

然后启用并启动服务:

sudo systemctl daemon-reload
sudo systemctl enable myapp
sudo systemctl start myapp

3. 使用Supervisor管理进程

安装Supervisor:

sudo apt-get install supervisor  # Ubuntu/Debian
sudo yum install supervisor     # CentOS/RHEL

创建配置文件 /etc/supervisor/conf.d/myapp.conf

[program:myapp]
command=/path/to/app/myapp
directory=/path/to/app
user=appuser
autostart=true
autorestart=true
stderr_logfile=/var/log/myapp.err.log
stdout_logfile=/var/log/myapp.out.log
environment=ENV_VAR="value"

然后更新并启动:

sudo supervisorctl update
sudo supervisorctl start myapp

4. 容器化部署 (Docker)

创建Dockerfile:

FROM golang:alpine AS builder
WORKDIR /app
COPY . .
RUN go build -o myapp .

FROM alpine
WORKDIR /app
COPY --from=builder /app/myapp .
CMD ["./myapp"]

构建并运行:

docker build -t myapp .
docker run -d -p 8080:8080 --name myapp myapp

5. 优化建议

  1. 交叉编译:在开发机上交叉编译Linux版本

    GOOS=linux GOARCH=amd64 go build -o myapp-linux
    
  2. 静态资源嵌入:使用go:embed或packr将静态资源编译进二进制

  3. 配置管理:使用环境变量或配置文件管理应用配置

  4. 日志处理:配置日志轮转(logrotate)或使用集中式日志系统

  5. 监控:集成Prometheus或其它监控工具

6. 性能调优

  • 设置GOMAXPROCS环境变量匹配CPU核心数
  • 考虑使用pprof进行性能分析
  • 对于高并发应用,调整文件描述符限制

您需要哪种具体的部署方式?或者您有特定的部署环境需求吗?