前言
使用gin开发完毕后,在服务器上运行(ps:也叫部署),相关的资料比较少,因为呢,他实在是太方便了,简简单单啊,因为golang自动会利用多核,所以直接go build之后运行即可,不像python这种部署等于一个小手术了。但是需要注意的是,到时候更改啊或者配置什么,还得去找,分外的麻烦,所以最好统一的利用
linux
的服务去管理。
简略流程如下:
build
出一个可执行文件- 写一个
sh
文件,用来执行这个文件 - 配置
service
- 启动
- 其他配置(反向代理、
ssl
证书等)
1、build 项目
我的项目中,主文件为main.go,服务器主要使用的是linux系统,如果是其他请参考官方文档。
执行:
GOOS=linux GOARCH=amd64 go build
则生成了一个新文件main
对其设置权限,这里用了777,因为有时候使用宝塔面板的时候,它的用户是www,正常情况下可以使用+x
chmod 777 main
2、写执行脚本 run.sh
新建一个文件
vim run.sh
内容:
#!/bin/bash
# 设置为 release 生产模式
export GIN_MODE=release
# 切换到路径下,这样才能够使用和开发时候一样的相对路径
cd main文件所在的绝对路径
# 启动 build 后的可执行文件
./main
如果项目内设置过生产模式就删掉GIN_MODE即可。
里面路径自行替换。
这里有三点需要注意的地方:
- 顶部的
#!/bin/bash
必不可少,如果少了这个,服务会无法启动。 - 使用先
cd
后执行的方式,可以让程序能够找到相对路径下的文件。 - run.sh也是需要权限的,可以
chmod +x run.sh
3、创建一个 service 配置文件
vim /lib/systemd/system/mpgo.service
其中salmon
为服务名称,以后启动都是这个名称。
[Unit]
Description=salmon
[Service]
Type=simple
Restart=always
RestartSec=3s
ExecStart=run.sh文件的完整路径
[Install]
WantedBy=multi-user.target
Description
是对这个服务的描述Restart=always
服务异常退出时会重启RestartSec=3s
设置重启间隔为3
秒ExecStart=run.sh文件的完整路径
这个服务会执行这个文件WantedBy=multi-user.target
所有用户都可以执行
4、相关命令
service salmon start
service salmon restart
service salmon stop
service salmon status
当然也可以使用systemctl
systemctl start salmon
systemctl restart salmon
systemctl stop salmon
systemctl status salmon
5、配置反向代理和ssl证书
这里推荐直接安装宝塔,里面有图形化界面操作。也可以手动操作nginx,效果一样了。
- 反向代理:
新建静态网站 –> 绑定域名 –> 网站设置中的反向代理 –> 代理80
端口到golang
的端口 ssl
证书
宝塔面板中可以一键申请。
- Post link: https://www.godhearing.cn/gin-bu-shu/
- Copyright Notice: All articles in this blog are licensed under unless otherwise stated.