当前位置 : 主页 > 操作系统 > centos >

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

来源:互联网 收集:自由互联 发布时间:2023-07-29
当我们完成了一个golang项目的开发之后,需要将它部署到服务器上才能正常运行。本文主要介绍golang项目如何上线部署到Linux服务器的方法。 1. 编译和打包golang项目 首先我们需要将go

当我们完成了一个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镜像:

自由互联热门推荐:PDF电子发票识别软件,一键识别电子发票并导入到Excel中!10大顶级数据挖掘软件!人工智能的十大作用!

docker build -t myapp .

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

  1. 运行Docker容器

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

docker run -p 8080:80 myapp

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

【本文由:香港云服务器 http://www.558idc.com/ne.html 复制请保留原URL】
网友评论