当前位置:首页>Linux>Linux 部署安装go

Linux 部署安装go

  • 2026-08-27 19:05:40
Linux 部署安装go

1. 环境准备

1.1 更新系统

sudo apt update && sudo apt upgrade -y# Ubuntu/Debian
# 或
sudo yum update -y# CentOS/RHEL

1.2 安装必要工具

sudo apt install -ycurlwgetgit build-essential  # Ubuntu/Debian
sudo yum install -ycurlwgetgitgcc# CentOS/RHEL

2. Go 环境安装

2.1 下载 Go

# 查看最新版本:https://golang.org/dl/
cd /tmp
wget https://golang.org/dl/go1.21.6.linux-amd64.tar.gz

# 或者指定版本(推荐)
GO_VERSION="1.21.6"
wget https://golang.org/dl/go${GO_VERSION}.linux-amd64.tar.gz

2.2 安装 Go

# 删除旧版本(如果存在)
sudorm-rf /usr/local/go

# 解压到 /usr/local
sudo tar -C /usr/local -xzf go${GO_VERSION}.linux-amd64.tar.gz

# 清理安装包
rm go${GO_VERSION}.linux-amd64.tar.gz

2.3 配置环境变量

# 编辑 ~/.bashrc 或 ~/.zshrc
echo'export PATH=$PATH:/usr/local/go/bin' >> ~/.bashrc
echo'export GOPATH=$HOME/go' >> ~/.bashrc
echo'export PATH=$PATH:$GOPATH/bin' >> ~/.bashrc

# 立即生效
source ~/.bashrc

# 验证安装
go version

3. 部署 Go 应用

3.1 从源码部署

# 克隆项目(示例)
cd /opt
git clone https://github.com/yourusername/your-app.git
cd your-app

# 安装依赖
go mod tidy

# 编译
go build -o app .

# 直接运行
./app

4. 使用 Systemd 管理服务

4.1 创建 service 文件

sudovi /etc/systemd/system/go-app.service

4.2 Service 文件内容

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

[Service]
Type=simple
User=www-data  # 根据实际情况修改
Group=www-data
WorkingDirectory=/opt/your-app
ExecStart=/opt/your-app/app
Restart=always
RestartSec=10
Environment="PORT=8080"
Environment="DATABASE_URL=postgres://user:pass@localhost/db"
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=go-app

[Install]
WantedBy=multi-user.target

4.3 启动服务

# 重载 systemd
sudo systemctl daemon-reload

# 启用服务(开机自启)
sudo systemctl enable go-app.service

# 启动服务
sudo systemctl start go-app.service

# 查看状态
sudo systemctl status go-app.service

# 查看日志
sudo journalctl -u go-app.service -f

5. 使用 Nginx 反向代理(推荐)

5.1 安装 Nginx

sudo apt install -y nginx  # Ubuntu/Debian
sudo yum install -y nginx  # CentOS/RHEL

5.2 配置 Nginx

sudovi /etc/nginx/sites-available/go-app
server {
    listen 80;
    server_name your-domain.com;

    location / {
        proxy_pass http://localhost:8080;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        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;
        proxy_cache_bypass $http_upgrade;
    }
}

5.3 启用配置

# Ubuntu/Debian
sudoln-s /etc/nginx/sites-available/go-app /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx

# CentOS/RHEL
sudocp go-app.conf /etc/nginx/conf.d/
sudo nginx -t
sudo systemctl reload nginx

6. 常用命令总结

# 查看 Go 环境
go env
go version

# 模块管理
go mod init [module-name]
go mod tidy
go mod vendor

# 运行测试
go test ./...
go test -v ./...

# 性能分析
go tool pprof [options]

# 构建优化
# 减少二进制大小
go build -ldflags="-s -w"-o app .

# 禁用 CGO
CGO_ENABLED=0 go build -o app .

7. 监控和维护

# 查看应用运行状态
ps aux | grep app
netstat -tlnp | grep :8080

# 查看资源使用
top-p$(pgrep app)
htop

# 查看日志
tail -f /var/log/go-app/out.log
journalctl -u go-app -f--lines=50

# 健康检查(假设应用有 /health 端点)
curl http://localhost:8080/health

注意事项

  1. 权限管理:生产环境避免使用 root 运行应用

  2. 防火墙:确保端口开放

  3. 日志轮转:配置 logrotate 防止日志过大

  4. 备份:定期备份重要数据和配置文件

  5. 监控:设置监控告警(如使用 Prometheus + Grafana)

最新文章

随机文章