在Debian系统上,Go环境的安装可通过包管理器(快速)或手动下载(最新版本)完成:
sudo apt update && sudo apt install -y golang-go
wget https://golang.org/dl/go1.22.0.linux-amd64.tar.gz # 替换为最新版本链接
sudo tar -C /usr/local -xzf go1.22.0.linux-amd64.tar.gz
~/.bashrc(或~/.zshrc),添加以下内容:export GOROOT=/usr/local/go
export GOPATH=$HOME/go
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin
生效配置:source ~/.bashrc。go version # 应输出类似"go1.22.0 linux/amd64"
go mod init your_project_name # 生成go.mod文件
go mod tidy # 自动下载并整理依赖
go build -o myapp . # "-"后为输出文件名,"."表示当前目录
优化建议:
CGO_ENABLED=0 go build -ldflags="-s -w" -o myapp .
goproxy.cn):go env -w GOPROXY=https://goproxy.cn,direct
./myapp # 默认监听项目代码中的端口(如8080)
nohup.out,避免终端关闭后进程终止:nohup ./myapp > nohup.out 2>&1 &
/etc/systemd/system/myapp.service:[Unit]
Description=My Go Application
After=network.target
[Service]
User=your_username # 替换为实际用户名(如ubuntu)
Group=your_groupname # 替换为实际组名(如ubuntu)
ExecStart=/path/to/myapp # 替换为可执行文件绝对路径
Restart=always # 崩溃后自动重启
Environment=PORT=8080 # 可选:设置环境变量
[Install]
WantedBy=multi-user.target
生效配置并启动:sudo systemctl daemon-reload
sudo systemctl start myapp
sudo systemctl enable myapp # 开机自启
查看状态:sudo systemctl status myapp。使用Nginx作为反向代理,提升安全性(隐藏端口)、性能(负载均衡)及灵活性(支持HTTPS):
sudo apt install -y nginx
/etc/nginx/sites-available/default,替换server块内容:server {
listen 80;
server_name your_domain_or_ip; # 替换为域名或IP
location / {
proxy_pass http://localhost:8080; # 转发到Go应用的端口
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 ufw allow 'Nginx Full' # 允许HTTP/HTTPS流量
使用Docker容器化Go应用,实现环境一致性、快速部署及扩展:
sudo apt update && sudo apt install -y docker.io
sudo systemctl enable --now docker
Dockerfile:# 基础镜像(选择官方轻量镜像)
FROM golang:1.22-alpine AS builder
WORKDIR /app
COPY . .
RUN go mod tidy && CGO_ENABLED=0 go build -o myapp .
# 最终镜像(基于Alpine,体积小)
FROM alpine:latest
WORKDIR /usr/local/bin
COPY --from=builder /app/myapp .
EXPOSE 8080
CMD ["./myapp"]
docker build -t myapp . # 构建镜像(标签为"myapp")
docker run -d -p 8080:8080 --name myapp_container myapp # 后台运行
优化建议:
debian更轻量,适合生产环境。User需指定有权限访问项目文件的用户(避免使用root)。sudo netstat -tulnp | grep 8080)。journalctl -u myapp查看systemd服务日志,或在代码中集成日志库(如logrus)输出到文件。certbot工具),或使用Docker镜像中的openssl生成自签名证书。