golang如何本地开发然后在远程编译运行

原创 吴就业 148 0 2024-05-31

本文为博主原创文章,未经博主允许不得转载。

本文链接:https://wujiuye.com/article/9cd6817d714145e29703453532b1cbca

作者:吴就业
链接:https://wujiuye.com/article/9cd6817d714145e29703453532b1cbca
来源:吴就业的网络日记
本文为博主原创文章,未经博主允许不得转载。

有时候,我们可能会遇到go项目中依赖一些底层的lib c库,这些库是只有linux环境下才有的,而我们本地开发环境一般是windwos系统或者mac os系统,我们也懒得搞一个Linux虚拟机来专门做开发,而且在虚拟机里面开发体验也确实不好,会影响效率。

那么,有没有可能,本地开发,然后代码在远程服务器上运行呢?并且不需要自己上传代码。

可以!现在的开发工具很强大,本篇介绍如何使用GoLand配置远程编译与debug/run。

首先我们需要有一台Linux虚拟机,可以是在aliyun、aws、google cloud、腾讯云、华为云等各种云上购买。如果是公司的项目,一般是跟公司申请一台开发用的虚拟机。

然后需要在Linux虚拟机安装go,并配置go path。

我的go安装路径和go path是:

GOPATH=/root/goproject
GOROOT=/usr/local/go

接下来,我们使用GoLand打开我们的go项目,配置远程编译运行。

我的GoLand版本为GoLand 2023.1.1。

一、GoLand右上角点击编辑配置。

截屏2024-05-31 19.14.15

二、点击‘+’号,选择Go Build。

截屏2024-05-31 19.14.22

三、Run on选择SSH。

截屏2024-05-31 19.14.32

四、在弹窗中输入Linux虚拟机的IP和ssh端口号、ssh用户名,点击Next。

截屏2024-05-31 19.14.58

五、输入ssh的密码,点击Next。

截屏2024-05-31 19.16.07

六、这一步会尝试使用ssh连接到linux虚拟机,并自动执行命令获取go root和go path、以及go版本等信息。等待完成后点击Next。

截屏2024-05-31 19.17.07

七、勾选Use rsync,Project path on target选择项目源码同步到linux上的根目录,这个配置是共用的,其它go项目选择远程编译运行选择这台虚拟机的时候也是用这个配置。Go Executable为前一步自动获取的go安装路径,如果版本不对,可以自己修改使用其它版本的路径。GOPATH也是上一步自动获取的,也可修改。Additional Settings可以配置项目源码对应服务器上的目录,以及编译后生成二进制文件存放的目录,如果不配置那么GoLand会使用自动生成的目录。

截屏2024-05-31 19.17.29

八、如果要配置Additional Settings。Project sources directory为配置当前项目源码同步在服务器上的路径,会覆盖Project path on target配置。Compiled executables directory为配置编译后二进制可执行文件的存放的路径。

截屏2024-05-31 19.20.14

九、由于我们项目需要在linux上才能编译成功,所以才用到远程编译运行的功能。因此我们需要勾选Use all custom build tags ,然后勾选Build on remote target(必须先勾选Use all custom build tags才会出现这个选项)。

截屏2024-05-31 19.17.59

现在,当我们点击GoLand的RUN或DEBUG图标时,GoLand就会自动同步代码到linux虚拟机上,并自动编译然后运行。

#后端

声明:公众号、CSDN、掘金的曾用名:“Java艺术”,因此您可能看到一些早期的文章的图片有“Java艺术”的水印。

文章推荐

国内docker用不了了怎么办

替换掉Docker的镜像仓库,例如可以使用AWS的ECR公开的镜像仓库,常用的基础镜像都能找到替代。

df命令查看挂盘目录大小是整个文件系统的大小还是挂载的目录的大小

df命令获取的是整个nfs文件系统的磁盘空间使用情况,而不是我们挂盘的目录。统计目录的使用情况可以使用du命令。

阿里云ACK(Serverless)安装APISIX网关及APISIX Ingress Controller

本篇从掘金同步过来,是作者之前将博客部署在阿里云ACK上,尝试使用APISIX网关的经验分享。

Cloudflare CDN请求body被限制问题,以及http Range请求头被移除问题

对于免费用户,单个请求的最大Body大小为100mb,对于付费企业用户,最大也只有500MB。请求经过Cloudflare CDN后,Range请求头被干掉了,Cloudflare CDN请求源站的时候并没有带上Range请求头。

Go语言有前途吗?

做后台开发,不管是java还是go,都只是一门编程语言罢了,不会说做了5年的java后端研发,换成go就不会了吧,顶多花点时间学习一门语言和一些框架,把编码习惯变一变而已,在问题排查方面,需要重新学习一些工具而已。

新人成长路上,技术选型容易犯的错

技术人追求技术是好事,但应该把精力放在精益求精上,而不是追随潮流。没必要一味追求用一项技术,技术选型的目的就是选择各方面对比最适合的,这也包括开发成本、运维成本。