Debian Golang项目如何部署上线
导读:Debian Golang项目部署上线实操指南 一 准备与构建 安装 Go(两种常用方式) 使用发行版仓库安装:sudo apt update && sudo apt install -y golang-go,验证:go...
Debian Golang项目部署上线实操指南
一 准备与构建
- 安装 Go(两种常用方式)
- 使用发行版仓库安装:sudo apt update & & sudo apt install -y golang-go,验证:go version。
- 使用官方二进制包安装(推荐,版本可控):wget https://go.dev/dl/go1.22.0.linux-amd64.tar.gz,解压:sudo tar -C /usr/local -xzf go1.22.0.linux-amd64.tar.gz,加入 PATH:echo ‘export PATH=$PATH:/usr/local/go/bin’ > > ~/.bashrc & & source ~/.bashrc。
- 依赖管理
- 使用 Go Modules:在项目根目录执行 go mod init ,编码引入依赖后执行 go mod tidy 自动整理依赖。
- 构建方式
- 服务器编译:git clone 项目后,go mod tidy & & go build -o myapp main.go。
- 本地交叉编译后上传(更轻量):GOOS=linux GOARCH=amd64 go build -o myapp main.go,上传至服务器后 chmod +x myapp。
二 运行与进程管理
- 使用 systemd 托管(生产推荐)
- 创建服务文件:sudo vim /etc/systemd/system/myapp.service,示例:
[Unit] Description=My Go Application After=network.target [Service] Type=simple User=deploy Group=deploy WorkingDirectory=/var/www/myapp ExecStart=/var/www/myapp/myapp Restart=on-failure Environment=PORT=8080 [Install] WantedBy=multi-user.target - 启用与启动:sudo systemctl daemon-reload & & sudo systemctl enable --now myapp & & sudo systemctl status myapp。
- 创建服务文件:sudo vim /etc/systemd/system/myapp.service,示例:
- 其他临时方式(不建议生产)
- nohup:nohup ./myapp > myapp.log 2> & 1 &
- screen/tmux:保持会话后台运行。
三 对外访问与反向代理
- 防火墙放行
- UFW:sudo ufw allow 8080/tcp(若通过 Nginx 暴露 80/443,则放行对应端口)。
- Nginx 反向代理(可选,便于域名与 HTTPS)
- 安装:sudo apt install -y nginx
- 站点配置(/etc/nginx/sites-available/myapp 或 /etc/nginx/conf.d/myapp.conf):
server { listen 80; server_name your-domain.com; location / { proxy_pass http://127.0.0.1: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; proxy_set_header X-Forwarded-Proto $scheme; } } - 校验与生效:sudo nginx -t & & sudo systemctl reload nginx。
四 安全与运维要点
- 最小权限与目录规范
- 创建专用用户:sudo useradd -m -s /bin/bash deploy,二进制与目录归属 deploy:deploy,避免使用 root 运行。
- 日志与排错
- 使用 systemd 日志:sudo journalctl -u myapp -f(实时查看),必要时配合 logrotate 做日志轮转。
- 进程守护与自启
- 确保 Restart=on-failure 或 Restart=always 已配置,异常退出可自动拉起。
- 可选进程管理工具
- 如不使用 systemd,可考虑 Supervisor 托管:sudo apt-get install -y supervisor,配置 program 段后启动。
五 一键部署清单示例
- 本地构建:GOOS=linux GOARCH=amd64 go build -o myapp main.go
- 上传与赋权:scp myapp deploy@your_ip:/var/www/myapp & & ssh deploy@your_ip “chmod +x /var/www/myapp/myapp”
- 重启服务:ssh deploy@your_ip “sudo systemctl daemon-reload & & sudo systemctl restart myapp”
- 放行端口(UFW):ssh deploy@your_ip “sudo ufw allow 8080/tcp”
- Nginx 配置与重载:在 /etc/nginx/conf.d/myapp.conf 放置上文配置,执行 sudo nginx -t & & sudo systemctl reload nginx
- 查看状态与日志:ssh deploy@your_ip “sudo systemctl status myapp” 与 “sudo journalctl -u myapp -f”
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Debian Golang项目如何部署上线
本文地址: https://pptw.com/jishu/771545.html
