Go项目从零部署到服务器

一、生成操作系统可执行文件

通过命令:go build ,生成可执行文件

windows下可执行的文件尾缀名为.exe

linux下的可执行文件没有尾缀名

注意:如果生成的是exe文件,想切换成linux下可执行文件,需要修改配置,这个网上有很多资料。

go env -w GOOS=linux (win10系统出现用set命令失效的可尝试这个命令)

二、通过Systemd集成Golang程序

把文件上传到服务器上

1、ftp方式     2、或者rz -y命令

上传完后,需要这个程序常驻在服务器上,不随着Terminal的退出而关闭,这时可以使用docker, nohup,supervisor这些工具来实现。

(本人一开始使用的就是nohup,但是发现一旦更新了代码,上传新版本的时候无法重启,只能关掉进程再开启,这会影响到用户操作。于是通过查找资料发现可以使用Linux中的Systemd来实现把Golang程序当成一个系统服务。)

配置Service文件

可执行文件放在/server_dir/user-manager/下

首先新建个Service文件,名称根据项目来取

命令:touch /lib/systemd/system/go-project-name.service

vi go-project-name.service 进入编辑该文件


[Unit]
Description=go project api
 
[Service]
Type=simple
Restart=always
RestartSec=5s
ExecStart=/service_dir/user-manager/main
WorkingDirectory=/service_dir/user-manager/
 
[Install]
WantedBy=multi-user.target

ExecStart是go可执行文件的路径

WorkingDirectory要注意,如果程序中使用了相对路径来加载一些配置文件,如果在Service中没有配置WorkingDirectory,默认是根路径,所以配置文件就从根路径来寻找,会造成一些意向不到的情况

PS:如果遇到启动不起来,报错原因为:Main process exited, code=exited, status=200/CHDIR

这种情况下,一般就是ExecStart和WorkingDirectory这两个的路径设置有问题

运行Service

启动

service go-project-name start

停止

service go-project-name stop

查看状态

service go-project-name status

重启

service go-project-name restart

输出结果


如果想要开机启动

service glass-api enable

(该命令本人执行失败了,需要使用systemctl命令。

systemd是Linux系统最新的初始化系统(init),作用是提高系统的启动速度,尽可能启动较少的进程,尽可能更多进程并发启动。
systemd对应的进程管理命令是systemctl,systemctl命令兼容了service)

三、访问接口-测试

参考

https://blog.csdn.net/weixin_30933531/article/details/99657586

(PS:菜鸟日记-记录一下部署过程,如有说错的地方,请多多指出)

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Bo_b

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值