将Go程序打包成二进制文件

必须要使用mod模块,才能打包文件

需要执行go mod tidy 来将项目的所有依赖在mod里写上

为了避免拿给其他用户源码时缺少依赖和下载问题,建议再执行一遍 go mod vendor 将依赖储存在项目的vendor目录


如果发现go mod tidy 爆出问题 可以尝试清除模块缓存,有奇效哦
清除模块缓存命令:
go clean --modcache

打包二进制需要执行的命令:

set CGO_ENABLED=0
set GOOS=linux
set GOARCH=amd64
go build

当上面的命令不能打包二进制文件时

我遇见过这样的问题,我的解决方案是在Goland里面的环境变量写入设置语句,叫Golnad帮我生成的二进制文件。

Golnad配置图片

其中环境变量需要输入:GOARCH=amd64;GOOS=linux

为了更方便的看见文件,我们也需要在Golnad的运行配置的输出目录选择自己的当前项目

如我的输出和项目目录是:D:\GO_demo\FK_API

输出目录


在linux上选择后台运行办法

linux运行程序挂掉了解决方法

倘若在远程连接linux服务器中运行程序后,一旦终端关闭程序也就关闭了

我们理应知道:linux远程连接终端只能算一次会话,当他结束时,程序会跟着结束运行

为了防止这样的情况发生,Go可以使用一个软件模块

下载命令:  go get github.com/CodyGuo/godaemon
使用方法:_ "github.com/codyguo/godaemon"

导入这个包后在linux 运行二进制文件 ./example -d true

这样运行程序时,会自动进入后台任务,同时会打印PID这个进程编号。

加入我程序的PID是6512,想要终止这个进程可以用下面的教程:


ps aux | less 获取linux的所有进程 然后查看自己要终止的pid
kill 6512 结束这个pid进程
lsof -i:8100 查看占用这个端口的进程


如何让Go的logrus日志包来保存日志

将其写入日志文件

当我普通的将程序运行时,发现日志一直在控制台,并不会写入文件,没有日志文件无法精确追踪报错,于是需要将日志写入文件。

代码如下:

func init() {
    // 初始化后默认将日志写入文件,而不是控制台
    file, err := os.OpenFile("logrus.log", os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0666)
    if err == nil {
        // 设置将日志输出到文件 setOutput 设置输出地址 os.Stdout 设置在控制台
        logrus.SetOutput(file)
    } else {
        logrus.Info("打开日志文件失败,默认输出到stderr")
    }
}

我之所以采用init函数,是因为他的权重最优先,初始化需要这样设置日志。

这样就可以在服务器上的日志文件查看到日志了。


须使用root权限来操作程序

由于我的程序是包含着两个http服务,所以需要一个端口,而开启端口必须使用root账号才能开启。


MYSQL 数据库和架构在Linux上的使用问题

这里我强力建议大家将数据库和数据表全部命名为小写昂。

只能说懂得都懂,不懂得以后也会懂。


总结:这次的后端项目难度很小,基本上5小时就能做完,1200到手美滋滋。

最后修改:2021 年 10 月 15 日
如果觉得我的文章对你有用,请随意赞赏