gin项目部署到服务器并后台启动

文章目录

  • 一、安装go语言环境的方式
    • 1.下载go安装包,解压,配置环境变量
    • 2.压缩项目上传到服务器并解压
    • 3.来到项目的根目录
    • 3.开放端口,运行项目
  • 二、打包的方式
    • 1.在项目的根目录下输入以下命令
    • 2.把打包好的文件上传到服务器
    • 3.部署网站
    • 4.ssl证书


本着能跑就行的原则,这个博文主要是教你部署到linux服务器上面的几种方式,go语言的项目是打包后不需要go环境也能跑的。

本人主机用的win10,操作系统用的是centos7.9,远程连接主机软件用的xsell,文件上传下载工具用的是xftp,服务器是在阿里云买的。
国内的GPT用的是kimi和通义千问。如果你用的是乌班图操作系统,你就可以复制粘贴命令问gpt,这个命令在乌班图是什么。

一、安装go语言环境的方式

1.下载go安装包,解压,配置环境变量

在这里要注意,我们的项目都是本地开发好的,你要选择的安装包要适应你的go.mod的文件,言外之意,选择合适的安装包你不需要改go.mod了。我们下载到/user/local/src里面
(有可能你下载不下来,如果下载不下来,请直接去官网下载安装包到本地之后,使用文件上传工具上传到服务器)

wget https://golang.google.cn/dl/go1.21.5.linux-amd64.tar.gz -P /usr/local/src

解压到/user/local里面

tar -C /usr/local -xzf go1.18.3.linux-amd64.tar.gz

配置环境变量

vim etc/profile
# 输入以下信息并保存
export GOROOT=/usr/local/go
export PATH=$PATH:$GOROOT/bin

重新加载,让环境变量生效

source /etc/profile

验证

go version

2.压缩项目上传到服务器并解压

如果你的项目使用了,MySQL,Redis,请在你的服务器上也安装这些东西,并且在代码中也修改对应的账户和密码以适应你的服务器。

我的建议是,使用宝塔或者1panel直接安装就行了。1panel因为是使用docker来管理这些应用,所以,你需要配置docker的镜像源。

1panel在线安装

记得开放1panel对应的端口。宝塔也是

在这里插入图片描述

在我们本地找到项目的文件夹,进行压缩,我个人习惯压缩成zip,因为方便解压缩。

压缩工具使用WinRAR或者bandzip等等都行,只要能压缩成zip无论用什么都行。(不会用压缩工具的去百度)

使用文件传输工具进行上传到服务器。
你可以使用任何的FTP工具对文件进行上传,如果电脑上有现成的工具,直接上传就行了,下面的内容是写给没有工具的。因为获取工具的安装包还挺麻烦的。

如果你没有类型XFTP之类的工具,我的建议是使用宝塔,或者1panel这样的运维管理工具,里面自带上传功能。因为我用的是1panel,所以这里只写1panel。

下面是他们的安装网站,你只需要打开这个网站。

1panel在线安装

选择你自己的操作系统,点击复制。

可视化界面相信你会操作的.我把项目是上传到了/opt目录。

在这里插入图片描述

在这里插入图片描述

安装解压缩命令

sudo yum install unzip

解压压缩包

unzip 压缩包的名称

3.来到项目的根目录

cd 项目的根目录

这个是我的目录结构,请注意main,go,我项目启动都放在这个文件里面,这个位置很重要,因为我们把项目跑起来需要这个文件.

在这里插入图片描述安装需要的包,输入下面的命令后就需要等待。

go mod tidy

3.开放端口,运行项目

在运行之前,你需要确保几件事情
1.你的gin服务端口开放了吗?端口开放一般直接去你买服务器的官网,里面有控制台,找到安全组,端口公网开放即可。这个要么百度,要么等我再写一篇吧。

2.用到MySQL了吗?用到了的话,服务器的MySQL安装好了吗?代码里面的连接MySQL的代码和密码改成服务器的了吗?MySQL的端口对外开放了吗?如果你使用1panel,应用里面的端口对外开放也要打开。

3.用到Redis了吗?用到Redis的话,服务器的redis安装好了吗?代码里面的连接redis的密码改了吗?端口对外开放了吗?如果你使用1panel,应用里面的端口对外开放也要打开。

4.go真的安装好了吗?验证了吗?跟你的项目适配吗?运行需要的包都安装好了吗?

5.代码有没有bug?项目在本地能不能正常的运行?

如果以上都OK的话,继续进行下面的东西。

nohup go main.go&

二、打包的方式

1.在项目的根目录下输入以下命令

set GOOS=linux
set GOARCH=amd64
go build

需要注意的是,配置文件是不会被打包的,所以在使用viper加载配置文件的时候,注意好路径问题。

2.把打包好的文件上传到服务器

步骤跟上面一样,这里就不写了

3.部署网站

这里使用的宝塔部署,因为方便,能顺便解决后面ssl证书问题
(怎么安装宝塔就不说了,百度,然后安装完后记得开放对应的端口以及把面板账户登录信息给保存下来方便使用)

点击网站
在这里插入图片描述

点击go项目,点击添加go项目
在这里插入图片描述

在这里插入图片描述

4.ssl证书

上面添加完后,就有这个设置,点击设置

在这里插入图片描述

点击ssl,点击 let’s Encrypt,点击我们的域名,点击申请证书,就能解决ssl证书的问题了
在这里插入图片描述

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

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

相关文章

C++字体库开发之字体回退三

代码片段 class FontCoverage { public: using SP std::shared_ptr<FontCoverage>; virtual ~FontCoverage() default; virtual void set(int index, FontTypes::CoverageLevel level) 0; virtual FontTypes::Coverag…

004 线程的状态

文章目录 Java线程可能的状态&#xff1a; 状态名称说明NEW初始状态&#xff0c;线程被构建&#xff0c;但是还没有调用start()方法RUNNABLE运行状态&#xff0c;Java线程将操作系统中的就绪和运行两种状态笼统地称作"运行中"BLOCKED阻塞状态&#xff0c;表示线程阻…

职场办公受欢迎的电脑桌面便签,手机电脑同步的备忘录

在快节奏的职场生活中&#xff0c;有效的时间管理和信息记录变得尤为重要。为了帮助大家更好地应对工作挑战&#xff0c;好用的电脑桌面便签和手机电脑同步的备忘录&#xff0c;好用便签应运而生&#xff0c;成为了当前职场办公中的得力助手。 好用便签是一款备受青睐的电脑桌…

阿里云物联网应用层开发:第三部分,微信小程序和web客户端实现

文章目录 哔哩哔哩视频教程1、阿里云物联网平台对接微信小程序2、阿里云物联网平台对接web客户端2-1MQTT服务器编写2-2 web端Servlet部分编写备注哔哩哔哩视频教程 【阿里云物联网综合开发,STM32+ESP8266+微信小程序+web客户端一篇教程详细讲解】 https://www.bilibili.com/v…

.NET下的开源OCR项目:解锁图片文字识别的新篇章

在数字化时代&#xff0c;从图片中高效准确地提取文字信息已成为众多应用场景的迫切需求。OCR&#xff08;Optical Character Recognition&#xff0c;光学字符识别&#xff09;技术正是满足这一需求的关键技术。对于.NET开发者而言&#xff0c;幸运的是&#xff0c;存在多个开…

c# 的 goto

搞循环感觉没什么必要 int number 0; Console.WriteLine("请输入一个数字&#xff08;输入-1结束&#xff09;:"); start: // 标签 number int.Parse(Console.ReadLine()); if (number -1) { Console.WriteLine("程序结束。"); } else { Cons…

接私活儿神器,一款功能强大的 SaaS 快速开发平台

今天&#xff0c;推荐一个微服务 SaaS 快速开发平台系统项目&#xff0c;笔者第一次使用就有点上头&#xff0c;爱不释手&#xff0c;必须要推荐给大家。 这是我目前见过最好的微服务 SaaS 快速开发平台系统项目。功能完整&#xff0c;代码结构清晰。值得推荐。 项目介绍 本…

nginx部署多个项目;vue打包项目部署设置子路径访问;一个根域名(端口)配置多个子项目

本文解决&#xff1a; vue打包项目部署设置子路径访问&#xff1b;nginx部署多个子项目&#xff1b;一个ip/域名 端口 配置多个子项目&#xff1b;配置后&#xff0c;项目能访问&#xff0c;但是刷新页面就丢失的问题 注&#xff1a;本文需要nginx配置基础。基础不牢的可见文…

昇思学习打卡-6-基于MindSpore的GPT2文本摘要

第一次近距离接触GPT&#xff0c;了解了tokenizers这个分词库&#xff0c;感觉NLP和CV对比起来&#xff0c;处理流程基本一致&#xff0c;都是数据集加载和处理&#xff0c;模型构建、选择学习率、模型训练&#xff0c;进而可以使用模型进行推理。 不同的是&#xff0c;NLP可能…

致力于打造一个操作最简单、功能最全面、创意最丰富的聊天记录管理工具

管理您的聊天数据 下载&#xff1a;https://download.csdn.net/download/mo3408/89497474 提供数据获取、导出、分析全栈式解决方案 获取信息 一键式操作&#xff0c;数据信手拈来 导出聊天记录 批量导出、自定义时间、消息类型任意选、Word、Excel、HTML、TXT想要哪个勾哪个…

在地图上根据经纬度,画一个矩型围栏,设置每个点的经纬度

在做一个需求时有一个小点就是添加一个配送区域(5公里直径内的)矩形围栏 我做的比较简单 大家看看有没有帮助, 也是精简代码。测试效果上相对是精准的 //谷歌&#xff0c;根据经纬度获取以它为中心半径为5公里内的矩形的四个点经纬度getDefalutPoints (lng: number, lat: num…

np.argsort

函数解释 np.argsort是NumPy库中的一个函数&#xff0c;用于对数组进行排序并返回排序后的索引。它不会直接对数组进行排序&#xff0c;而是返回一个数组&#xff0c;这个数组中的元素是原数组中元素按升序排序后的索引。 numpy.argsort(a, axis-1, kindNone, orderNone) 参…

adb push 报错 ...error: failed to copy...

一、现象&#xff1a; 原因&#xff1a;没有权限导致的 二、解决方法&#xff1a; adb root adb remount #重新加载文件系统三、再次尝试&#xff1a;adb push xxx.apk /system/app 结果&#xff1a;成功

猫咖老板教你一招解决猫浮毛问题,质量好的猫用空气净化器分享

作为一名猫咖店老板&#xff0c;我经常被朋友问到关于宠物空气净化器的各种问题。有人认为这是个神器&#xff0c;而有人则认为这完全是花钱买智商税。其实我刚开始对购买宠物空气净化器也持怀疑态度&#xff0c;心想这么多钱花下去真的有效吗&#xff1f;但使用后&#xff0c;…

如何在Java项目中实现领域驱动设计(DDD)

如何在Java项目中实现领域驱动设计&#xff08;DDD&#xff09; 大家好&#xff0c;我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01; 领域驱动设计概述 领域驱动设计&#xff08;…

Axure教程:App侧边抽屉菜单交互制作

今天给大家示范一下抽屉菜单在Axure中的做法。在抽屉式菜单中&#xff0c;要实现两个交互效果&#xff0c;分别是&#xff1a; 交互一 抽屉菜单中1、2级菜单项的伸缩效果 实现逻辑&#xff1a;设置动态面板的切换状态及“推动/拉动原件”实现 交互二 菜单项的选中状态切换 …

Python使用总结之为什么列表生成式的内存开销比生成器表达式大?

Python使用总结之为什么列表生成式的内存开销比生成器表达式大&#xff1f; 列表生成式 ([x*3 for x in gen_AB()]): 列表生成式会立即生成整个列表并将所有元素存储在内存中。这意味着它需要的内存量取决于生成的列表中元素的数量。例如&#xff0c;如果 gen_AB() 生成了 1000…

前端面试题2(vue3)

1. Vue 3 中的 Composition API 是什么&#xff1f;与 Options API 的区别是什么&#xff1f; 答案&#xff1a; Composition API 是 Vue 3 引入的一种新的编程模型&#xff0c;它允许开发者以更灵活和模块化的方式组织代码。与传统的 Options API 相比&#xff0c;Compositio…

vue的$nextTick是什么是干什么用的?

为什么需要使用$nextTick&#xff1f;他的使用场景 1.你在接口返回之后在获取高度 正常等页面加载在mounted这个钩子函数里 这时候就需要找到接口赋值的地方 这样就可以获取到数据操作以后的dom元素了 $nextTick是什么是干什么用的&#xff1f; $nextTick() 是 Vue.js 框…

iPad卡在白苹果开不了机怎么办?3种解决办法!

iPad开机卡在白苹果&#xff1f;iPad Air 黑屏重启白苹果&#xff1f;iPad Pro 莫名关机&#xff0c;开机白苹果无法启动&#xff1f;iPad mini 摔落、泡水等&#xff0c;开机一直显示白苹果&#xff0c;iPad出现这些情况怎么办&#xff1f; 无论是使用iPad、iPad Air、iPad P…