golang项目如何上线部署到Linu服务器(方法详解)

当我们完成了一个golang项目的开发之后,需要将它部署到服务器上才能正常运行。本文主要介绍golang项目如何上线部署到Linux服务器的方法。

1. 编译和打包golang项目

首先我们需要将golang项目编译成可执行文件,这需要使用go build命令,如下所示:

go build -o main main.go

这个命令会将main.go文件编译成可执行文件main。我们可以运行这个文件来启动Web应用程序。

接下来,我们需要将编译好的可执行文件和相关资源文件打包成一个压缩包,这里我们使用tar命令:

tar -czvf app.tar.gz main static templates

这个命令将main可执行文件和static、templates目录下的文件全部打包成一个名为app.tar.gz的压缩包。

2. 将压缩包上传到Linux服务器

将打包好的压缩包上传到Linux服务器的过程可以使用FTP、SCP、rsync等工具,这里介绍使用SCP命令的方法:

scp app.tar.gz root@xxx.xxx.xxx.xxx:/root/app/

这个命令将压缩包上传到Linux服务器的/root/app/目录下。

3. 解压和启动golang项目

上传完毕后我们需要登录到Linux服务器,解压并启动golang项目。以下是解压和启动过程的详细步骤:

cd /root/app/
tar -xzvf app.tar.gz
nohup ./main &

这几行命令将压缩包解压到当前目录下,运行可执行文件main,并使用nohup命令在后台启动程序。

注意:如果main程序需要监听某个端口进行服务,则需要使用screen或tmux等命令来保持进程的后台运行。

示例1:将golang项目部署为systemd服务

以下是将golang项目部署为systemd服务的详细步骤:

  1. 创建systemd service配置文件

在Linux服务器上创建systemd service配置文件,如下所示:

sudo vim /etc/systemd/system/myapp.service

其中myapp是自定义的服务名,下面是配置文件的内容:

[Unit]
Description=Myapp Service

[Service]
ExecStart=/root/app/main
WorkingDirectory=/root/app
Restart=always
User=root

[Install]
WantedBy=multi-user.target
  1. 加载和启动服务

执行以下命令加载并启动服务:

sudo systemctl daemon-reload
sudo systemctl enable myapp
sudo systemctl start myapp

这几行命令的作用依次是:重新载入systemd配置文件、将myapp服务加入开机启动列表、启动myapp服务。

示例2:将golang项目部署为Docker容器

以下是将golang项目部署为Docker容器的详细步骤:

  1. 编写Dockerfile文件

在项目根目录下创建Dockerfile文件,其中会包含项目的构建和运行指令,如下所示:

FROM golang:latest

WORKDIR /go/src/app
COPY . .

RUN go build -o main .

EXPOSE 80

CMD ["./main"]
  1. 构建Docker镜像

执行以下命令在项目根目录下构建Docker镜像:

docker build -t myapp .

其中myapp是自定义的镜像名称。

  1. 运行Docker容器

执行以下命令运行Docker容器:

docker run -p 8080:80 myapp

这个命令会将Docker容器的80端口映射到本地机器的8080端口上,可以通过访问http://localhost:8080来访问应用程序。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:golang项目如何上线部署到Linu服务器(方法详解) - Python技术站

(0)
上一篇 2023年5月14日
下一篇 2023年5月14日

相关文章

  • Linux uptime命令

    Linux的uptime命令用于显示系统的运行时间和平均负载情况。uptime命令可以显示从开机以来多长时间,系统处于运行状态,以及平均负载。系统负载是指在特定时间内,正在运行或等待运行的进程数量。 Linux哲学告诉我们要提供有用的信息,uptime命令就是一个很好的例子。使用uptime命令,你可以了解系统是否忙碌,是否需要进行优化。 命令语法 upti…

    Linux 2023年3月28日
    00
  • Centos 8.2 升级内核通过elrepo源的方法

    以下是CentOS 8.2升级内核通过elrepo源的方法的完整攻略: 1. 添加elrepo源 要升级CentOS 8.2内核,需要先添加elrepo源。在终端中执行以下命令: sudo rpm –import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org sudo rpm -Uvh https://www.…

    Linux 2023年5月14日
    00
  • JSP安全性初探

    JSP安全性初探 JSP是JavaWeb应用程序中重要的组成部分,与Java代码共同构建Web应用程序。JSP的优势在于可以集成Java代码和HTML标记语言,具有强大的灵活性和可扩展性。然而,正是因为JSP具有这些灵活性和可扩展性,安全问题成为JSP开发人员不可忽视的警示。 JSP安全性问题 JSP的安全问题与其他Web技术的安全问题类似,主要包括以下几个…

    Linux 2023年5月14日
    00
  • Python的Web框架Django介绍与安装方法

    下面是“Python的Web框架Django介绍与安装方法”的完整攻略。 一、Django介绍 Django是一个基于Python编程语言的开源Web框架,它的目的是帮助开发者快速、方便地构建复杂的Web应用程序。Django框架自带了许多功能强大的工具,可以快速构建出具有高可用性、高可扩展性和高安全性的Web应用程序。Django的特点包括: 高度集成化:…

    Linux 2023年5月14日
    00
  • linux系统怎么更新?linux更新系统的方法

    针对Linux系统的更新,我为您提供以下完整攻略: 1. 更新包管理器 在Linux系统中,更新包管理器是更新系统的第一步。不同的Linux发行版有不同的包管理器,因此更新流程也有所不同。 1.1 Debian/Ubuntu的APT包管理器更新 Debian和Ubuntu等系统使用APT包管理器,可以使用以下命令更新: sudo apt update 该命令…

    Linux 2023年5月14日
    00
  • cmd与linux使用curl差异

    其中在用windows下的cmd 进行curl命令,出现415报错,见下,请求头使用json形式,但报错却依然提示使用的是form表单形式: 一直以为问题出在springboot的转换器做stringtojson时出现问题,不想,在windows下,需要将-H ” “消息头用引号,在-d 中最外面使用“” {}中的数据都需要\进行转义 如下:  对body部…

    Linux 2023年4月13日
    00
  • linux下查看yum/rpm/dpkg某软件是否已安装的方法

    Linux系统下有三种软件包管理工具,分别是yum、rpm和dpkg,每种软件包管理工具都有自己的安装和卸载方式。为了保证系统的稳定和安全性,我们必须保证每个软件的安装是准确无误的。接下来,我将详细讲解如何查看yum/rpm/dpkg某软件是否已安装的方法。 查看yum软件包是否已安装 在Linux系统中,yum作为一种基于RPM的软件包管理工具,可以很方便…

    Linux 2023年5月14日
    00
  • linux上定时任务crontab命令的详细用法

    crontab文件的含义 minute:表示分钟,可以是从0到59之间的任何整数。 hour:表示小时,可以是从0到23之间的任何整数。 day:表示日期,可以是从1到31之间的任何整数。 month:表示月份,可以是从1到12之间的任何整数。 week:表示星期几,可以是从0到7之间的任何整数,这里的0或7代表星期日。 备注:最小单位就是分钟了,如果全是*…

    Linux 2023年4月13日
    00
合作推广
合作推广
分享本页
返回顶部