Go项目在linux服务器的部署详细步骤

 更新时间:2023年09月06日 10:18:06   作者:paterl  
在今天的软件开发中,使用Linux作为操作系统的比例越来越高,而Golang语言则因为其高效、简洁和并发性能等特点,也被越来越多的开发者所青睐,这篇文章主要给大家介绍了关于Go项目在linux服务器的部署详细步骤,需要的朋友可以参考下

大致步骤

以阿里云服务器为例

1.拥有一台阿里云服务器

2.使用阿里云控制台打开要使用的端口

3.在Linux上安装MySQL数据库

4.安装Go的运行环境

5.部署项目到服务器,并启动

6.使用git管理服务器上的代码,保证实时更新

1.使用阿里云控制台打开要使用的端口

找到阿里云实例,打开安全组

新建入方向的端口信息,我们这里手动添加,这里操作是要让别人访问你服务器的时候,所用到的端口开放

2.在Linux上安装MySQL数据库

这里我们使用docker镜像的方法安装数据库

docker pull mysql:8.0.29解释 docker pull 要安装什么东西:安装的版本

安装的版本不写会默认是最新版

下载好之后就可以查看镜像了

docker images

可以看到这里面有我们要下载的镜像

下一步就是要运行镜像

-v /mydata/mysql/log:/var/log/mysql \
-v /mydata/mysql/data:/var/lib/mysql \
-v /mydata/mysql/conf:/etc/mysql \
-e MYSQL_ROOT_PASSWORD=123456\
-d mysql:8.0.29

参数解读

docker run 3306:3306 --name mysql\      #将容器3306端口映射到主机的3306端口 
-v /mydata/mysql/log:/var/log/mysql\    #将配置文件挂载到/mydata/mysql该文件夹下
-v /mydata/mysql/data:/var/lib/mysql\   #将日志文件挂载到/mydata/mysql该文件夹下
-v /mydata/mysql/conf:/etc/mysql\       #将配置文件挂载到/mydata/mysql该文件夹下
-e MYSQL_ROOT_PASSWORD=123456\          #初始化root用户的密码为123456
-d mysql:8.0.29                         #开机启动mysql

创建成功后,查看实例

启动实例

docker start mysql  #这里的mysql可以使用别名,也可以使用所创建出实例的id

运行MySQL后可以使用Datagrip、navicat等客户端工具尝试连接MySQL,如果连接不上可以查看自己的服务器的安全组,是否开放了3306端口。连接后就可以创建自己的数据库,跟在本地操作数据库方法相同。

3.安装Go的运行环境

使用xftp工具将Go的SDK压缩包上传到服务器,建议上传到home目录下这里注意Go的SDK千万不要下载错了

上传后进行解压

tar -zxvf 你的压缩包文件名

解压完成后去配置环境变量

vim /etc/profile

打开etc下的profile文件

export GOROOT=/usr/local/go
export GOPATH=/usr/local/gopath
export PATH=$PATH:$GOROOT/bin

/usr/local是你Go的SDK解压到的文件夹路径保存后执行profile文件,使之生效,使用source命令(source命令:依次执行文件所有语句)

source /etc/profile

使用go version测试是否配置完成

4.将Go项目部署到服务器

首先使用Goland将main文件打包,打包成适合在服务器上运行的文件

可以先在控制台执行下面这个命令

修改命令为
go env -w GOOS=linux

将main文件打包成二进制文件

在项目根目录下输入
go build main.go

将你的main二进制文件和config.conf文件上传到你的项目目录下,就是说你的main.go文件再哪个目录,你的main就要在哪个目录

切换到main所在的目录

设置文件权限

chmod 777 main //我这里直接给最高权限
这个就是给main文件权限 然后你的main会变成绿色

运行并制定运行环境和创建日志文件

nohup ./main -c config.dev.yaml > start.log 2>&1 &

查看进程

ps -ef|grep main

正常启动

查看日志文件有没有报错

tail -f start.log

总结 

到此这篇关于Go项目在linux服务器的部署详细步骤的文章就介绍到这了,更多相关Go在linux服务器的部署内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Go语言中的Struct结构体

    Go语言中的Struct结构体

    这篇文章介绍了Go语言中的Struct结构体,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-07-07
  • Golang实现单元测试中的接口层

    Golang实现单元测试中的接口层

    接口层主要负责的就是请求的处理,最常见的就是 HTTP 请求的处理。这篇文章主要为大家介绍了Golang如何实现单元测试中的接口层,需要的可以参考一下
    2023-03-03
  • 详解golang各种类型是如何进行比较的

    详解golang各种类型是如何进行比较的

    在日常开发中,比较操作是最常用的基本操作之一,可以用来判断变量之间是否相等或者对应的大小关系,比较操作对于排序、查找和集合数据结构的实现至关重要,本文将深入解析golang各种类型是如何进行比较的,需要的朋友可以参考下
    2024-01-01
  • Go语言实现运算符重载的方法详解

    Go语言实现运算符重载的方法详解

    这篇文章主要为大家详细介绍了如何利用Go语言实现运算符重载的方法,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2022-09-09
  • 一文带你深入了解Go语言中切片的奥秘

    一文带你深入了解Go语言中切片的奥秘

    切片是数组的一个引用,因此切片是引用类型。但自身是结构体,值拷贝传递。本文将通过示例带大家一起探索一下Go语言中切片的奥秘,感兴趣的可以了解一下
    2022-11-11
  • Go如何实现HTTP请求限流示例

    Go如何实现HTTP请求限流示例

    本篇文章主要介绍了Go如何实现HTTP请求限流示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-04-04
  • Go语言 init函数的具体使用

    Go语言 init函数的具体使用

    init()函数是Go语言中一种特殊的函数,用于在包被导入时执行一次性的初始化操作,本文就来介绍一下Go语言 init函数的具体使用,感兴趣的可以了解一下
    2024-09-09
  • GO日志打印如何添加goroutineid

    GO日志打印如何添加goroutineid

    今天想给日志添加一个前缀,以区分不同goroutine的日志,方便做并发问题的排查,做日志跟踪,下面给大家分享GO日志打印如何添加goroutineid,感兴趣的朋友跟随小编一起看看吧
    2024-05-05
  • go time.After优化后性能提升34%内存减少67%

    go time.After优化后性能提升34%内存减少67%

    这篇文章主要介绍了go语言time.After优化后性能提升34%内存减少67%实例分析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-02-02
  • go语言中切片Slice与数组Array对比以及panic: runtime error: index out of range问题解决

    go语言中切片Slice与数组Array对比以及panic: runtime error: index out 

    go语言中数组与其他语言有在显著的不同,包括其不能够进行添加,以及值拷贝的特性,下面这篇文章主要给大家介绍了关于go语言中切片Slice与数组Array对比以及panic: runtime error: index out of range问题解决的相关资料,需要的朋友可以参考下
    2022-07-07

最新评论