[hplayer] [Music server="netease" id="26629683" type="song"/] [/hplayer] # 将Go程序打包成二进制文件 [scode type="red"]必须要使用mod模块,才能打包文件[/scode] **需要执行go mod tidy 来将项目的所有依赖在mod里写上** *为了避免拿给其他用户源码时缺少依赖和下载问题,建议再执行一遍 go mod vendor 将依赖储存在项目的vendor目录* [scode type="red"] 如果发现go mod tidy 爆出问题 可以尝试清除模块缓存,有奇效哦 清除模块缓存命令: **go clean --modcache** [/scode] 打包二进制需要执行的命令: ``` set CGO_ENABLED=0 set GOOS=linux set GOARCH=amd64 go build ``` ## 当上面的命令不能打包二进制文件时 我遇见过这样的问题,我的解决方案是在Goland里面的环境变量写入设置语句,叫Golnad帮我生成的二进制文件。  [scode type="blue"]其中环境变量需要输入:GOARCH=amd64;GOOS=linux [/scode] 为了更方便的看见文件,我们也需要在Golnad的运行配置的输出目录选择自己的当前项目 如我的输出和项目目录是:**D:\GO_demo\FK_API**  --- # 在linux上选择后台运行办法 ## linux运行程序挂掉了解决方法 倘若在远程连接linux服务器中运行程序后,一旦终端关闭程序也就关闭了 [scode type="blue"]我们理应知道:linux远程连接终端只能算一次会话,当他结束时,程序会跟着结束运行[/scode] **为了防止这样的情况发生,Go可以使用一个软件模块** ``` 下载命令: go get github.com/CodyGuo/godaemon 使用方法:_ "github.com/codyguo/godaemon" ``` 导入这个包后在linux 运行二进制文件 **./example -d true** 这样运行程序时,会自动进入后台任务,同时会打印PID这个进程编号。 加入我程序的PID是6512,想要终止这个进程可以用下面的教程: [scode type="blue"] ps aux | less 获取linux的所有进程 然后查看自己要终止的pid kill 6512 结束这个pid进程 lsof -i:8100 查看占用这个端口的进程 [/scode] --- # 如何让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") } } ``` [scode type="blue"]我之所以采用init函数,是因为他的权重最优先,初始化需要这样设置日志。[/scode] 这样就可以在服务器上的日志文件查看到日志了。 --- # 须使用root权限来操作程序 由于我的程序是包含着两个http服务,所以需要一个端口,而开启端口必须使用root账号才能开启。 --- # MYSQL 数据库和架构在Linux上的使用问题 [scode type="green"]这里我强力建议大家将数据库和数据表全部命名为小写昂。[/scode] 只能说懂得都懂,不懂得以后也会懂。 --- 总结:这次的后端项目难度很小,基本上5小时就能做完,1200到手美滋滋。 Loading... <div class='handsome_aplayer player-content' data-preload="auto" data-autoplay="false" data-listMaxHeight="340px" data-order="list"> <div class="handsomePlayer-tip-loading"><span></span> <span></span> <span></span> <span></span><span></span></div><div class="handsome_aplayer_music" data-id="26629683" data-server="netease" data-type="song" data-auth="cb2be2ccd7fcbf48381c9efb3a310713"></div> </div> # 将Go程序打包成二进制文件 <div class="tip inlineBlock error"> 必须要使用mod模块,才能打包文件 </div> **需要执行go mod tidy 来将项目的所有依赖在mod里写上** *为了避免拿给其他用户源码时缺少依赖和下载问题,建议再执行一遍 go mod vendor 将依赖储存在项目的vendor目录* <div class="tip inlineBlock error"> 如果发现go mod tidy 爆出问题 可以尝试清除模块缓存,有奇效哦 清除模块缓存命令: **go clean --modcache** </div> 打包二进制需要执行的命令: ``` set CGO_ENABLED=0 set GOOS=linux set GOARCH=amd64 go build ``` ## 当上面的命令不能打包二进制文件时 我遇见过这样的问题,我的解决方案是在Goland里面的环境变量写入设置语句,叫Golnad帮我生成的二进制文件。  <div class="tip inlineBlock info"> 其中环境变量需要输入:GOARCH=amd64;GOOS=linux </div> 为了更方便的看见文件,我们也需要在Golnad的运行配置的输出目录选择自己的当前项目 如我的输出和项目目录是:**D:\GO_demo\FK_API**  --- # 在linux上选择后台运行办法 ## linux运行程序挂掉了解决方法 倘若在远程连接linux服务器中运行程序后,一旦终端关闭程序也就关闭了 <div class="tip inlineBlock info"> 我们理应知道:linux远程连接终端只能算一次会话,当他结束时,程序会跟着结束运行 </div> **为了防止这样的情况发生,Go可以使用一个软件模块** ``` 下载命令: go get github.com/CodyGuo/godaemon 使用方法:_ "github.com/codyguo/godaemon" ``` 导入这个包后在linux 运行二进制文件 **./example -d true** 这样运行程序时,会自动进入后台任务,同时会打印PID这个进程编号。 加入我程序的PID是6512,想要终止这个进程可以用下面的教程: <div class="tip inlineBlock info"> ps aux | less 获取linux的所有进程 然后查看自己要终止的pid kill 6512 结束这个pid进程 lsof -i:8100 查看占用这个端口的进程 </div> --- # 如何让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") } } ``` <div class="tip inlineBlock info"> 我之所以采用init函数,是因为他的权重最优先,初始化需要这样设置日志。 </div> 这样就可以在服务器上的日志文件查看到日志了。 --- # 须使用root权限来操作程序 由于我的程序是包含着两个http服务,所以需要一个端口,而开启端口必须使用root账号才能开启。 --- # MYSQL 数据库和架构在Linux上的使用问题 <div class="tip inlineBlock success"> 这里我强力建议大家将数据库和数据表全部命名为小写昂。 </div> 只能说懂得都懂,不懂得以后也会懂。 --- 总结:这次的后端项目难度很小,基本上5小时就能做完,1200到手美滋滋。 最后修改:2021 年 10 月 15 日 © 允许规范转载 打赏 赞赏作者 支付宝微信 赞 如果觉得我的文章对你有用,请随意赞赏