如何在带ISPManager面板的Ubuntu 22.04服务器部署Go Web应用
部署Go Web应用到Ubuntu 22.04服务器的步骤
1. 编译Go应用为可执行二进制文件
生产环境不建议用go run运行,先将代码编译成独立的二进制文件:
- SSH登录服务器,进入你的Go项目目录:
cd /path/to/your/go/project - 执行编译命令:
go build -o myapp(myapp可替换为你自定义的应用名称) - 编译完成后,会得到一个名为
myapp的可执行文件,运行./myapp即可启动应用(先确认应用监听的端口,比如常见的8080)
2. 配置systemd让应用后台运行并开机自启
直接运行./myapp会在关闭SSH连接后停止,用systemd管理服务可解决这个问题:
- 创建服务配置文件:
sudo nano /etc/systemd/system/myapp.service - 粘贴以下内容,替换
your_username为你的服务器用户名,/path/to/your/go/project为项目实际路径:[Unit] Description=My Go Web App After=network.target [Service] User=your_username WorkingDirectory=/path/to/your/go/project ExecStart=/path/to/your/go/project/myapp Restart=always [Install] WantedBy=multi-user.target - 保存退出(按
Ctrl+O回车,再按Ctrl+X) - 重新加载systemd配置:
sudo systemctl daemon-reload - 启动应用服务:
sudo systemctl start myapp - 设置开机自启:
sudo systemctl enable myapp - 查看服务状态:
sudo systemctl status myapp(显示active (running)即为正常运行)
3. 配置Nginx反向代理实现域名访问
通过Nginx将域名请求转发到Go应用的端口,无需再输入IP加端口:
- 安装Nginx:
sudo apt update && sudo apt install nginx - 创建域名配置文件:
sudo nano /etc/nginx/sites-available/yourdomain.com(替换为你的实际域名) - 粘贴以下内容,注意把
8080换成你的Go应用监听的端口:server { listen 80; server_name yourdomain.com www.yourdomain.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; proxy_set_header X-Forwarded-Proto $scheme; } } - 保存退出后,创建软链接启用配置:
sudo ln -s /etc/nginx/sites-available/yourdomain.com /etc/nginx/sites-enabled/ - 测试Nginx配置合法性:
sudo nginx -t - 重启Nginx使配置生效:
sudo systemctl restart nginx
4. 配置域名解析
登录你的域名服务商后台,添加A记录,将域名指向服务器的公网IP地址,等待解析生效(通常需要几分钟到几小时)
5. 可选:配置HTTPS证书(免费)
用Let's Encrypt的certbot给域名配置SSL证书,实现HTTPS访问:
- 安装certbot:
sudo apt install certbot python3-certbot-nginx - 生成并配置证书:
sudo certbot --nginx -d yourdomain.com -d www.yourdomain.com - 按照终端提示完成操作,certbot会自动修改Nginx配置并开启HTTPS
内容的提问来源于stack exchange,提问作者Maksat Rsymbetov
相关产品推荐
相关产品推荐

