golang 项目打包部署环境变量设置

最近将 golang 项目打包部署在不同环境,总结一下自己的心得体会,供大家参考。
1、首先要明确自己目标服务器的系统类型(例如 windows 或者Linux) ,如果是Linux 还需要注意目标服务器的CPU架构(amd或者arm)
目标服务器的CPU架构可执行命令:cat /proc/cpuinfo 查看

[root@KylinV10SP3 ~]# cat /proc/cpuinfo
processor       : 0
model name      : ARMv8 CPU
BogoMIPS        : 200.00
Features        : fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp cpuid asimdrdm jscvt fcma dcpop asimddp asimdfhm
CPU implementer : 0x48
CPU architecture: 8
CPU variant     : 0x1
CPU part        : 0xd01
CPU revision    : 0

查看输出信息中的 Processor 字段,或者 Model name 字段,或者 Architecture 字段。如果看到 x86_64 或 i686,则表明是AMD64或Intel x86架构。如果看到 armv7l、armv8 等,则表明是ARM架构。

# 查看Processor字段
grep -i 'processor' /proc/cpuinfo
# 查看Model name字段
grep -i 'model name' /proc/cpuinfo
# 查看Architecture字段
grep -i 'architecture' /proc/cpuinfo

根据上述命令的输出结果,可以判断您的Linux系统使用的是AMD还是ARM架构。
2、查看本地的go环境
使用goland在Terminal中输入命令:go env

PS D:\workspace\dhcc-go-leishi-api\src> go env
set GO111MODULE=on
set GOARCH=amd64                                 
set GOBIN=                                       
set GOCACHE=C:\Users\libao\AppData\Local\go-build
set GOENV=C:\Users\libao\AppData\Roaming\go\env  
set GOEXE=.exe                                   
set GOEXPERIMENT=                                
set GOFLAGS=                                     
set GOHOSTARCH=amd64                             
set GOHOSTOS=windows
set GOINSECURE=
set GOMODCACHE=D:\go_workspace\pkg\mod
set GONOPROXY=
set GONOSUMDB=
set GOOS=windows
set GOPATH=D:\go_workspace
set GOPRIVATE=
set GOPROXY=https://goproxy.cn,direct
set GOROOT=D:\Program Files\Go
set GOSUMDB=sum.golang.org
set GOTMPDIR=
set GOTOOLDIR=D:\Program Files\Go\pkg\tool\windows_amd64
set GOVCS=
set GOVERSION=go1.19.3
set GCCGO=gccgo
set GOAMD64=v1
set AR=ar
set CC=gcc
set CXX=g++
set CGO_ENABLED=1
set GOMOD=D:\workspace\dhcc-go-leishi-api\go.mod
set GOWORK=
set CGO_CFLAGS=-g -O2
set CGO_CPPFLAGS=
set CGO_CXXFLAGS=-g -O2
set CGO_FFLAGS=-g -O2
set CGO_LDFLAGS=-g -O2
set PKG_CONFIG=pkg-config
set GOGCCFLAGS=-m64 -mthreads -fno-caret-diagnostics -Qunused-arguments -Wl,--no-gc-sections -fmessage-length=0 -fdebug-prefix-map=C:\Users\libao\AppData\Local\Te
mp\go-build1857876918=/tmp/go-build -gno-record-gcc-switches

以上 GOOS=windows,GOARCH=amd64,如果服务器是windows 系统,直接编译就可以,执行命令 go build -o leishi-linux main.go,需要在main文件的同级目录下执行。
3、根据不同的目标服务器环境设置的本地环境变量
(1) 在window下打包成Linux系统adm包:
在项目main.go同级目录下,逐条执行以下命令
set CGO_ENABLED=0
go env -w GOOS=linux
go env -w GOARCH=amd64
go build -o leishi-linux main.go
此时会生成一个没有后缀的二进制文件
在这里插入图片描述
将leishi-linux文件放入linux系统任何文件夹下,执行以下命令:
chmod 777 leishi-linux
./leishi-linux

[root@KylinV10SP3 ~]# cd /usr/local/leishi
[root@KylinV10SP3 leishi]# chmod 777 leishi-linux 
[root@KylinV10SP3 leishi]#  ./leishi-linux
2024/07/08 16:58:07 连接数据库...
2024/07/08 16:58:07 连接数据库完成...
2024/07/08 16:58:07 初始化数据库完成...
2024/07/08 16:58:07 Starting server on port :5100...

当然也可以设置后台运行,执行:nohup ./leishi-linux > leishi-linux.log 2>&1 &
(2) 在window下打包成Linux系统arm包:
在项目main.go同级目录下,逐条执行以下命令
set CGO_ENABLED=0
go env -w GOOS=linux
go env -w GOARCH=arm64
go build -o leishi-linux main.go
此时会生成一个没有后缀的二进制文件
运行方法同上

(2) 在window下打包成Linux系统arm包:
在项目main.go同级目录下,逐条执行以下命令
set CGO_ENABLED=1
go env -w GOOS=windows
go env -w GOARCH=amd64
go build -o leishi main.go
此时会生成一个exe后缀的程序文件
在这里插入图片描述
将文件移动到目标位置,直接点击就以运行。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/375829.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Vue.js学习笔记(五)抽奖组件封装——转盘抽奖

基于VUE2转盘组件的开发 文章目录 基于VUE2转盘组件的开发前言一、开发步骤1.组件布局2.布局样式3.数据准备 二、最后效果总结 前言 因为之前的转盘功能是图片做的,每次活动更新都要重做UI和前端,为了解决这一问题进行动态配置转盘组件开发,…

如何更好地理解递归算法?Python实例详解

递归确实是一种较为抽象的数学逻辑,可以简单的理解为程序调用自身的算法。 维基百科对递归的解释是: 递归(英语:Recursion),又译为递回,在数学与计算机科学中,是指在函数的定义中使…

pbootCMS 数据库sqlite转mysql数据库

前言 pbootCMS默认使用 sqlite数据库 ,那么什么是sqlite数据库呢? SQLite,是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它包含在一个相对小的C库中。它是D.RichardHipp建立的公有领域项目。它的设计目标是嵌…

【大模型LLM面试合集】大语言模型架构_MoE论文

1.MoE论文 参考文章: Mixture of Experts-IntroductionUnderstanding the Mixture-of-Experts Model in Deep Learning 论文相关: 论文名称:Outrageously Large Neural Networks: The Sparsely-Gated Mixture-of-Experts Layer论文地址&a…

Kafka(三)Producer第二篇

一,生产者架构 生产者客户端由两个线程协调运行,分别为主线程和Sender线程(发送线程)。 主线程:KafkaProducer创建消息,通过拦截器、序列化器和分区器之后缓存到消息收集器RecordAccumulator中;…

jmeter-beanshell学习6-beanshell生成测试报告

前面写了各种准备工作,内容组合用起来,应该能做自动化了,最后一步,生成一个报告,报告格式还是csv 报告生成的路径和文件,在用户参数写好,防止以后改路径或者名字,要去代码里面改。以…

批量提取PDF指定区域内容到 Excel , 根据PDF文件第一行文字来自动重命名v1.3-附思路和代码实现

本次文章更新内容,图片以及扫描的PDF也可以支持批量提取指定区域内容了,主要是通过截图指定区域,然后使用OCR来识别该区域的文字来实现的,所以精度可能会有点不够,但是如果是数字的话,问题不大;…

Java高频面试基础知识点整理9

干货分享,感谢您的阅读!背景​​​​​​高频面试题基本总结回顾(含笔试高频算法整理) 最全文章见:Java高频面试基础知识点整理 (一)Java基础高频知识考点 针对人员: 1.全部人员都…

农牧行业CRM洞察:打造营、销、服一体化数字营销平台

01、行业应用背景 保持企业活力,支撑业务单元协调发展,稳定核心产品竞争力,将成为农牧行业企业数字化、数智化建设的指导方向。 积极发挥数据在生产、流通、消费各个环节的决策支撑,为农牧企业特别是多业态集团型企业&#xff0…

Cisco 命令速查表(非常详细)零基础入门到精通,收藏这一篇就够了

Cisco IOS(Internetwork Operating System)是 Cisco 系统公司开发的专有操作系统,用于其路由器和交换机。它提供了一个稳健的、可扩展的、以命令行接口(CLI)为基础的网络操作环境。通过掌握 Cisco IOS 命令&#xff0c…

conda install问题记录

最近想用代码处理sar数据,解放双手。 看重了isce这个处理平台,在安装包的时候遇到了一些问题。 这一步持续了非常久,然后我就果断ctrlc了 后面再次进行尝试,出现一大串报错,不知道是不是依赖项的问题 后面看到说mam…

通用详情页的打造

背景介绍 大家都知道,详情页承载了站内的核心流量。它的量级到底有多大呢? 我们来看一下,日均播放次数数亿次,这么大的流量,其重要程度可想而知。 在这样一个页面,每一个功能都是大量业务的汇总点。 作为…

Django 删除单行数据

1,添加模型 from django.db import modelsclass Post(models.Model):title models.CharField(max_length200)content models.TextField()pub_date models.DateTimeField(date published)class Book(models.Model):title models.CharField(max_length100)author…

苹果电脑压缩软件哪个好用一些? mac电脑用什么压缩软件 mac电脑压缩文件怎么设置密码

压缩软件是Mac电脑必不可少的工具,虽然Mac系统自带了一款“归档实用工具”,但是其功能实在匮乏,若你需要加密压缩文件或者把文件压缩成指定格式,那么该工具无法满足你的需求。Mac用户应该怎么选择压缩软件呢?本文就来告…

自动驾驶算法———车道检测(一)

“ 在本章中,我将指导您构建一个简单但有效的车道检测管道,并将其应用于Carla 模拟器中捕获的图像。管道将图像作为输入,并产生车道边界的数学模型作为输出。图像由行车记录仪(固定在车辆挡风玻璃后面的摄像头)捕获。…

一图展示免费开源的分布式版本控制系统​Git

文章目录 前言一、安装Git二、Git配置三、git命令 前言 Git是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。也是Linus Torvalds为了帮助管理Linux内核开发而开发的一个开放源码的版本控制软件。 一、安装Git Windows操作系统…

MFC扩展库BCGControlBar Pro v35.0 - 可视化管理主题等全新升级

BCGControlBar库拥有500多个经过全面设计、测试和充分记录的MFC扩展类。 我们的组件可以轻松地集成到您的应用程序中,并为您节省数百个开发和调试时间。 BCGControlBar专业版 v35.0已全新发布了,这个版本改进类Visual Studio 2022的视觉主题、增强对多个…

大模型时代的目标检测

https://zhuanlan.zhihu.com/p/663703934https://zhuanlan.zhihu.com/p/6637039341.open set/open word/ood 这个任务是指在实际应用上可以检测任何前景物体,但是有些不需要预测类别,只要检测出框就行。在很多场合也有应用场景,有点像类无关…

ASP.NET MVC Lock锁的测试

思路:我们让后台Thread.Sleep一段时间,来模拟一个耗时操作,而这个时间可以由前台提供。 我们开启两个或以上的页面,第一个耗时5秒(提交5000),第二个耗时1秒(提交1000)。 期望的测试结果: 不加Lock锁&…

短视频矩阵搭建,用云微客获客更方便

你的同行都爆单了,你还在问什么是矩阵?让我来告诉你。短视频矩阵是短视频获客的一种全新玩法,是以品牌宣传、产品推广为核心的一个高端布局手段,也是非常省钱的一种方式。 1.0时代,一部手机一个账号;2.0时代…