14.4. 三种部署方式

本教程最新版为 1.22,当前版本已放弃维护,请阅读最新版本!

说明

本节我们来讲解下 Go 应用部署的几种方式:

  • 独立部署
  • 代理部署
  • 容器部署

1. 独立部署

独立部署有以下几个步骤:

1). 将编译好的应用程序上传到服务器上(SCP/SFTP/FTP);
2). 设置监听端口为 80 (HTTP) 或者 443(HTTPS);
3). 将应用程序作为后台守护进程运行即可。

在我们的 goblog 中,设置端口只需要通过修改 .env 文件里的 APP_PORT 即可。

关于守护进程

一般命令行运行 ./goblog 程序会持续运行,但是当退出命令行会话窗口时,程序会停止运行。所以在生产服务器上,我们不能使用这种方式。

要将命令作为守护进程运行,需要使用工具,通常会有以下几个可选:

  • nohup —— Linux 系统内置,直接使用 nohup ./goblog & 命令即可;
  • systemctl —— Linux 系统内置,很多常见的服务都有使用 systemctl 管理,比如 MySQL、Nginx;
  • supervisor —— 是用 Python 实现的一套通用进程管理程序,能将一个普通的命令行进程变为后台 daemon,并监控进程状态,异常退出时能自动重启。(推荐)
  • go-supervisor —— Go 语言实现的 supervisor,好处是不需要安装 Python 环境。(推荐)

独立部署适合简单的项目,服务器只有一个站点的情况。

2. 代理部署

代理部署即前置一层第三方的 Web 服务器来处理所有的请求,将部分请求(往往是动态处理请求)交给后端的 Golang 应用程序执行。

推荐使用 Nginx 作为反向代理的前端接入层,目前来讲 Nginx 市场占有率非常高,性能也不错。

相对于独立部署,使用代理部署要灵活的多。

使用 Nginx 有以下优点:

  1. 一台服务器可运行多个站点;
  2. 可以做负载均衡;
  3. 静态文件直接加载,做到动静分离;
  4. 前端和后端分开部署,各自开发;
  5. 自动处理 gzip 、ssl 等。

代理部署因为其灵活性,尤其是单机部署的情况下。本课程我们将讲解这种部署方式。

3. 容器部署

容器部署即使用 Docker 化部署 Golang 应用程序,这是在云服务时代最流行的部署方式。

Docker 是一个开源的轻量级容器技术,允许我们打包应用以所需运行的环境到一个可移植的镜像中,然后发布到任何支持 Docker 的系统上运行。

在 Linux 系统里,通过容器技术,在几乎没有性能开销的情况下,Docker 为应用提供了一个隔离运行环境。

使用 Docker 有以下好处:

  • 简化配置
  • 代码流水线管理
  • 隔离应用
  • 快速、持续部署
  • 配合 K8S ,可以很轻松实现集群部署

Docker 部署和集群部署,我们会在后面的系列课程中讲到,G01 是入门课,先不做讲解。

本文章首发在 LearnKu.com 网站上。

上一篇 下一篇
讨论数量: 0
发起讨论 只看当前版本


暂无话题~