将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帮我生成的二进制文件。
其中环境变量需要输入: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到手美滋滋。