设为首页收藏本站
网站公告 | 这是第一条公告
     

 找回密码
 立即注册
缓存时间10 现在时间10 缓存数据 只要你的心是晴的,人生就没有雨天。就像好事情总是发生在那些微笑着的人身上。调整心情,保持微笑。早安!

只要你的心是晴的,人生就没有雨天。就像好事情总是发生在那些微笑着的人身上。调整心情,保持微笑。早安!

查看: 1211|回复: 2

GO项目部署Linux服务器的实现示例

[复制链接]

  离线 

TA的专栏

  • 打卡等级:即来则安
  • 打卡总天数:15
  • 打卡月天数:0
  • 打卡总奖励:166
  • 最近打卡:2024-01-31 00:21:47
等级头衔

等級:晓枫资讯-列兵

在线时间
0 小时

积分成就
威望
0
贡献
35
主题
29
精华
0
金钱
276
积分
78
注册时间
2023-8-12
最后登录
2025-3-13

发表于 2024-6-20 01:25:31 | 显示全部楼层 |阅读模式
目录


  • Golang项目和Java项目部署的不同
  • 部署流程
最近在学习golang,和前端小伙伴一起写了个H5小游戏,游戏数据采用websocket进行通信。由于是第一次部署go语言项目,在部署过程中遇到很多问题,写下这篇文章进行总结,希望可以帮助到部署遇到问题的朋友。

Golang项目和Java项目部署的不同

Golang项目相比于Java项目部署流程更加的简单,不需要在服务器上下载语言环境,我们可以直接在服务器上运行编译好的二进制文件
go语言能够做到这一点的原因如下:

  • 静态链接:Go 语言的编译器会将程序的所有依赖包括在最终的可执行文件中,这种方式称为静态链接。因此,生成的可执行文件不需要依赖外部的动态链接库或其他运行时环境,可以在没有 Go 语言环境的服务器上直接运行。
  • 跨平台支持:Go 语言的编译器可以生成不同操作系统和架构的可执行文件,比如 Windows、Linux 和 macOS 等。这意味着你可以在开发机器上编译生成 Linux 下运行的可执行文件,然后将其拷贝到 Linux 服务器上直接运行,而无需关心服务器上是否安装了 Go 语言环境。
  • 内置运行时环境:Go 语言的可执行文件中内置了运行时环境,包括垃圾回收、调度器等,因此它们可以独立运行,不需要额外的运行时支持。
对于Java来说,Java 语言在编译时生成的是字节码文件(以 .class 格式存储),而不是直接生成可执行的二进制文件。这些字节码文件需要在 Java 虚拟机(JVM)上执行,因此在服务器上运行 Java 程序仍然需要安装 Java 运行时环境(JRE)或者 Java 开发工具包(JDK)。

部署流程

1.确保自己的项目在本地可以正常运行和访问;
2.查看自己的项目监听的端口号,本项目监听的是服务器私网IP的8090端口
1.png

3.之后开始我们的编译,设置编译时候的环境变量,依次执行下面命令
  1. D:\SoftwareDevelop\GoFamily\GoWorks\klotski>set CGO_ENABLED=0
  2. D:\SoftwareDevelop\GoFamily\GoWorks\klotski>set GOOS=linux
  3. D:\SoftwareDevelop\GoFamily\GoWorks\klotski>set GOARCH=amd64
  4. D:\SoftwareDevelop\GoFamily\GoWorks\klotski>go build
复制代码
  1. set CGO_ENABLED=0
复制代码


  • 这个命令是在 Windows 系统下设置一个环境变量
    1. CGO_ENABLED
    复制代码
    的值为
    1. 0
    复制代码
    1. CGO_ENABLED
    复制代码
    是 Go 语言中用来控制是否启用 C 语言的交互能力的环境变量,
    1. 0
    复制代码
    表示禁用了 CGO(Cgo 是一个 Go 包,用于调用 C 代码)。
  1. set GOOS=linux
复制代码


  • 这个命令是设置一个环境变量
    1. GOOS
    复制代码
    的值为
    1. linux
    复制代码
    1. GOOS
    复制代码
    是 Go 语言中用来指定目标操作系统的环境变量,这里将目标操作系统设置为 Linux。
  1. set GOARCH=amd64
复制代码


  • 这个命令是设置一个环境变量
    1. GOARCH
    复制代码
    的值为
    1. amd64
    复制代码
    1. GOARCH
    复制代码
    是 Go 语言中用来指定目标体系结构的环境变量,这里将目标体系结构设置为 AMD64 架构。
  1. go build
复制代码


  • 这个命令是使用 Go 工具编译当前目录下的 Go 源代码文件,生成一个可执行文件。根据前面设置的环境变量,编译时会将目标操作系统和体系结构设置为 Linux 和 AMD64。
编译完成之后我们得到一个文件名为项目名无文件后缀的文件,我们将这一个文件传输到Linux系统上,在Linux中,我们找到上传的文件目录。
4.通过ls命令查看文件权限是否可执行,如果文件为绿色,代码可直接执行。
2.png

如果不可执行,使用chmod 755 ./klotski 更新文件权限
5.通过./文件名或者nohup命令执行文件
  1. #在当前路径下执行文件
  2. ./klotski
  3. #通过绝对路径执行文件,只要能够找到文件就可以
  4. /opt/klotski/klotski

  5. #通过上述方式虽然可以执行文件,并且通过公网访问项目,但是我们一旦关闭了当前连接,程序就会终止。通过让当前程序在后台运行的方式,可以解决这一问题
  6. nohup ./klotski
复制代码
程序运行成功会使服务器界面处于任务的状态,显示访问程序时的输出,如果不是此状态,说明程序运行失败,请检查自己的程序和更改监听的端口IP
3.png

6.查询程序运行时占用的端口
  1. # 查询我们的go语言二进制文件是否被执行
  2. # 注意我们程序运行的线程是随机分配的,并不是8090端口,我们的程序仅仅建成8090端口的访问情况
  3. [root@wuqiong klotski]# ps aux | grep klotski
  4. root     29218  1.4  0.1 1230132 2512 ?        Sl   19:39   0:50 ./klotski
  5. root     32492  0.0  0.0 112812   976 pts/0    S+   20:35   0:00 grep --color=auto klotski

  6. # 关闭运行程序 后面的参数跟PID
  7. kill 29218
复制代码
7.别忘记放开服务器的安全组,开放我们程序监听的端口
4.png

到此这篇关于GO项目部署Linux服务器的实现示例的文章就介绍到这了,更多相关GO部署Linux内容请搜索晓枫资讯以前的文章或继续浏览下面的相关文章希望大家以后多多支持晓枫资讯!

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
晓枫资讯-科技资讯社区-免责声明
免责声明:以上内容为本网站转自其它媒体,相关信息仅为传递更多信息之目的,不代表本网观点,亦不代表本网站赞同其观点或证实其内容的真实性。
      1、注册用户在本社区发表、转载的任何作品仅代表其个人观点,不代表本社区认同其观点。
      2、管理员及版主有权在不事先通知或不经作者准许的情况下删除其在本社区所发表的文章。
      3、本社区的文章部分内容可能来源于网络,仅供大家学习与参考,如有侵权,举报反馈:点击这里给我发消息进行删除处理。
      4、本社区一切资源不代表本站立场,并不代表本站赞同其观点和对其真实性负责。
      5、以上声明内容的最终解释权归《晓枫资讯-科技资讯社区》所有。
http://bbs.yzwlo.com 晓枫资讯--游戏IT新闻资讯~~~

  离线 

TA的专栏

等级头衔

等級:晓枫资讯-列兵

在线时间
0 小时

积分成就
威望
0
贡献
0
主题
0
精华
0
金钱
15
积分
10
注册时间
2022-12-28
最后登录
2022-12-28

发表于 2024-9-9 05:12:52 | 显示全部楼层
感谢楼主,顶。
http://bbs.yzwlo.com 晓枫资讯--游戏IT新闻资讯~~~

  离线 

TA的专栏

等级头衔

等級:晓枫资讯-列兵

在线时间
0 小时

积分成就
威望
0
贡献
0
主题
0
精华
0
金钱
16
积分
12
注册时间
2022-12-26
最后登录
2022-12-26

发表于 2025-3-21 15:38:28 | 显示全部楼层
感谢楼主分享。
http://bbs.yzwlo.com 晓枫资讯--游戏IT新闻资讯~~~
严禁发布广告,淫秽、色情、赌博、暴力、凶杀、恐怖、间谍及其他违反国家法律法规的内容。!晓枫资讯-社区
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

1楼
2楼
3楼

手机版|晓枫资讯--科技资讯社区 本站已运行

CopyRight © 2022-2025 晓枫资讯--科技资讯社区 ( BBS.yzwlo.com ) . All Rights Reserved .

晓枫资讯--科技资讯社区

本站内容由用户自主分享和转载自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。

如有侵权、违反国家法律政策行为,请联系我们,我们会第一时间及时清除和处理! 举报反馈邮箱:点击这里给我发消息

Powered by Discuz! X3.5

快速回复 返回顶部 返回列表