当我们完成了一个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服务的详细步骤:
- 创建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
- 加载和启动服务
执行以下命令加载并启动服务:
sudo systemctl daemon-reload
sudo systemctl enable myapp
sudo systemctl start myapp
这几行命令的作用依次是:重新载入systemd配置文件、将myapp服务加入开机启动列表、启动myapp服务。
示例2:将golang项目部署为Docker容器
以下是将golang项目部署为Docker容器的详细步骤:
- 编写Dockerfile文件
在项目根目录下创建Dockerfile文件,其中会包含项目的构建和运行指令,如下所示:
FROM golang:latest
WORKDIR /go/src/app
COPY . .
RUN go build -o main .
EXPOSE 80
CMD ["./main"]
- 构建Docker镜像
执行以下命令在项目根目录下构建Docker镜像:
docker build -t myapp .
其中myapp是自定义的镜像名称。
- 运行Docker容器
执行以下命令运行Docker容器:
docker run -p 8080:80 myapp
这个命令会将Docker容器的80端口映射到本地机器的8080端口上,可以通过访问http://localhost:8080来访问应用程序。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:golang项目如何上线部署到Linu服务器(方法详解) - Python技术站