插件窝 干货文章 linux golang如何部署

linux golang如何部署

myapp 使用 部署 sudo 228    来源:    2025-04-24

Linux 下 Go 语言应用部署指南

1. 准备工作

1.1 安装 Go 环境

# 下载最新版 Go (请替换为最新版本号)
wget https://golang.org/dl/go1.21.0.linux-amd64.tar.gz

# 解压到 /usr/local
sudo tar -C /usr/local -xzf go1.21.0.linux-amd64.tar.gz

# 设置环境变量
echo 'export PATH=$PATH:/usr/local/go/bin' >> ~/.bashrc
echo 'export GOPATH=$HOME/go' >> ~/.bashrc
source ~/.bashrc

# 验证安装
go version

1.2 项目构建

# 在项目目录下构建 (可选参数)
go build -o myapp  # 生成名为 myapp 的可执行文件

# 或者构建为静态链接的可执行文件 (适合容器化部署)
CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -o myapp .

2. 部署方式

2.1 直接运行

# 简单运行
./myapp

# 后台运行
nohup ./myapp > app.log 2>&1 &

2.2 使用 Systemd 管理 (推荐)

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

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

[Service]
User=appuser
Group=appgroup
WorkingDirectory=/path/to/app
ExecStart=/path/to/app/myapp
Restart=always
RestartSec=10
KillSignal=SIGINT
SyslogIdentifier=myapp
Environment=ENV_VAR1=value1 ENV_VAR2=value2

[Install]
WantedBy=multi-user.target

然后启用并启动服务:

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

# 查看状态
sudo systemctl status myapp

2.3 使用 Supervisor 管理

安装 Supervisor:

sudo apt-get install supervisor  # Debian/Ubuntu
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_VAR1="value1",ENV_VAR2="value2"

然后更新并启动:

sudo supervisorctl reread
sudo supervisorctl update
sudo supervisorctl start myapp

3. 高级部署选项

3.1 使用 Docker 容器化部署

创建 Dockerfile:

FROM golang:1.21-alpine AS builder
WORKDIR /app
COPY . .
RUN CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -o myapp .

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

构建并运行:

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

3.2 使用 Nginx 反向代理

安装 Nginx 并配置 /etc/nginx/conf.d/myapp.conf:

server {
    listen 80;
    server_name example.com;

    location / {
        proxy_pass http://localhost:8080;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

4. 监控与维护

4.1 日志管理

  • 使用 logrotate 管理日志文件
  • 考虑集成 ELK 或 Loki 等日志系统

4.2 性能监控

  • 使用 pprof 内置性能分析
  • 集成 Prometheus 监控
  • 使用 htoptop 监控资源使用

4.3 自动更新

  • 使用 CI/CD 流水线 (GitHub Actions, GitLab CI 等)
  • 配置 Webhook 自动部署

5. 安全建议

  1. 不要使用 root 用户运行应用
  2. 定期更新 Go 版本和安全补丁
  3. 使用 HTTPS 加密通信
  4. 限制应用的文件系统访问权限
  5. 使用防火墙限制访问端口

希望这个指南对您有所帮助!根据您的具体需求选择合适的部署方式。