这里首先分享下,我觉得学习一个开源项目最快的学习步骤:

  1. 阅读 README,掌握项目的部署方式、功能列表、使用方式等;
  2. 克隆源码,本地编译构建,并启动服务,测试自己关注的功能点;
  3. 阅读并修改源码,实现期望的效果,并重新编译测试。

为了让你最高效地学习本实战项目,本节课,我会给你介绍实战项目的内容,并带你快速编译并部署本实战项目。

实战项目介绍

本课程主要目的是让你快速学习 Go 项目开发中的核心知识,所以重点不在业务本身,而在如何开发 Go 项目上。为了最大化减小你的学习成本,同时又具有足够的业务复杂度来承载课程的核心知识,本课程选择了博客系统,原因如下:

  • 业务逻辑被广泛熟知: 相信每个开发者都写过博客,对博客系统基本流程已经非常熟悉,可以省去项目的业务理解部分;
  • 业务逻辑简单: 只需要创建一个新用户,然后登录博客系统,创建博客(只有标题和内容)即可,减少了业务理解难度。

本博客系统实现了以下 2 类功能:

  • 用户管理: 支持 用户注册用户登录获取用户列表获取用户详情更新用户信息修改用户密码注销用户 7 种用户操作;
  • 博客管理: 支持 创建博客获取博客列表获取博客详情更新博客内容删除博客批量删除博客 6 种博客操作。

具体操作方法可参考:博客系统操作指南

博客系统功能及使用流程如下图所示:

2.实战准备:如何快速部署项目,准备试验环境? - 图1

操作流程如下:

  • 普通用户:注册用户后,登录系统,之后可以执行博客的 CURD 操作。还可以获取注册时的详细信息,再次更新用户信息,包括密码;
  • root 用户:root 用户为博客系统的管理员用户,整个系统只有一个 root 用户。root 用户除了可以执行普通用户的所有操作之外,还可以执行 1 类管理员操作:获取用户列表。

另外,如果你想了解 miniblog 实现的更多功能列表,可以参考:features 列表。

如何部署实战项目?

通过上面介绍本实战项目,我们已经阅读了 README。那么接下来我们就需要执行第 2 步:部署实战项目。

部署一个 Go 开源项目,一般需要以下几步:

  1. 准备好一台部署服务器,这里建议使用 Linux;
  2. 安装 Go 编译环境;
  3. 配置 Go 开发环境;
  4. 克隆项目源码、编译构建、修改配置、部署服务。

因为本课程是基于 Linux 进行部署的,为了避免环境差异带来的问题,建议你也基于 Linux 系统进行部署。Go 的优势之一,是跨平台,所以如果你有 Mac、Windows 操作系统,理论上也可以顺利部署。只不过,你要自己根据理解进行部署。欢迎大家在评论区分享这些平台的部署教程。

如果你刚接触 Linux,建议你最好使用 Linux 进行开发部署,因为在使用 Linux 的同时,也是在学习 Linux,并且是带着需求去学习、实战,学习效率更高。

下面,我会介绍如何从 0 到 1 部署好本实战项目。

Linux 服务器申请和配置

本项目基于 Linux 服务器进行部署,所以首先你需要准备一台 Linux 服务器(优先选择 CentOS 8.x 操作系统)。

准备 Linux 服务器

你有多种方法准备一个 Linux 服务器,最简单、省钱的方法是购买一台 Linux 云服务器,比如登录腾讯云官网,购买一台竞价实例 CVM 服务器,购买链接为 腾讯云 CVM 购买页面。购买时,注意选择以下配置(其它配置可根据需要使用默认配置):

  • 计费模式:竞价实例;
  • 地域:可以选择最靠近访问位置的地域;
  • 类型:可以选择费用最小的实例类型,例如:标准型 SA2SA2.SMALL1:1核1GB);
  • 镜像:选择 公共镜像 -> Cent OS -> 64位 -> CentOS 8.4;
  • 公网 IP:勾选 免费分配独立公网 ****IP(默认已勾选);
  • 带宽计费模式:按使用流量(默认值);
  • 安全组:选择 default,默认放通所有端口。

提示:如果没有 SA2.SMALL1 机型,可以选择其它费用低的机型。如果你能承受费用,也可以购买包年包月 / 按量计费服务器。

购买完成之后,在 CVM 机器列表页面,能够看到所购买的 CVM 服务器及其公网 IP 地址(带 (公) 后缀的 IP 地址),通过公网 IP 地址登录 CVM 服务器,如下图所示:

2.实战准备:如何快速部署项目,准备试验环境? - 图2

提示:为了加快编译,我选择了 标准型S6 机型。

这里分享下我日常的开发环境:

  • 我工作机用的是 Windows:因为 Windows 上有很多可以提高工作效率的工具,例如:Ditto、EveryThing、TotalCommand、Autohotkey、FastStone 等;
  • 开发机用的是腾讯云 CVM (2 核 4G):之所以用云服务器作为开发机,是因为只要有网络,我就可以通过 Xshell 登录到开发机上,进行开发。不需要再进行复杂的开发环境配置,而且开发机上已经保存了开发需要的代码。另外,基于 Linux 进行开发,我也能够使用 Linux 上的各种工具,提高开发效率,例如:findgrepbash 脚本、sedawk 等。

使用 root 用户登录并配置 Linux 服务器

你可以使用 root 用户、root 密码、Linux 服务器 IP 地址,并通过 Xshell 等终端工具登录 Linux 服务器。登录 Linux 服务器后,你需要先对 Linux 服务器进行一些简单的配置,具体步骤如下。

  1. root 用户登录 Linux 系统,并创建普通用户。

创建普通用户方法如下:

  1. # useradd goer # 创建 goer 用户,通过 goer 用户登录开发机进行开发
  2. # passwd goer # 设置 goer 用户的登录密码
  3. Changing password for user goer.
  4. New password:
  5. Retype new password:
  6. passwd: all authentication tokens updated successfully.

创建完普通用户之后,我们就可以使用普通用户 goer 登录系统,并执行各类操作,使用普通用户操作 Linux,因为权限有限,可以最大限度确保 Linux 服务器的安全。

提示:强烈建议使用普通用户进行日常代码开发,因为你永远无法 100% 保证自己不会执行 rm -rf / * 这类操作,你的研发生涯,哪怕只有那么 1 ~ 2 次此类操作,也绝对你够你糟心一段时间的。

  1. 添加 sudoers。

步骤 1 中,我们创建了一个普通用户 goer,有时候普通用户也需要执行一些需要 root 权限的操作,例如使用 yum 安装一个软件包,这时候最好的办法是将普通用户添加到 sudoers 中,这样普通用户就可以通过 sudo 命令来暂时获取 root 权限。具体来说,你可以执行以下命令将 goer 用户添加到 sudoers 中:

  1. # sed -i '/^root.*ALL=(ALL).*ALL/a\goer\tALL=(ALL) \tALL' /etc/sudoers
  1. 替换 CentOS 8.4 系统中自带的 Yum 源。

由于 Red Hat 提前宣布 CentOS 8 于 2021 年 12 月 31 日停止维护,官方的 Yum 源已不可使用,所以需要切换官方的 Yum 源,这里选择阿里提供的 Yum 源。切换命令如下:

  1. # mv /etc/yum.repos.d /etc/yum.repos.d.bak # 先备份原有的 Yum 源
  2. # mkdir /etc/yum.repos.d
  3. # wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo
  4. # yum clean all && yum makecache

提示:在 Linux 系统下,覆盖一个文件时,根据情况先备份被覆盖的文件,是一个好的操作习惯。

使用普通用户登录并配置 Linux 服务器

刚刚我们创建了 goer 普通用户,接下来,我们就可以使用 goer 用户登录并配置 Linux 服务器,具体步骤如下。

  1. 登录 Linux 系统。

假设我们使用 goer 用户作为实战用户,使用 Xshell/SecureCRT 等工具登录 Linux 系统。这里我更推荐 Xshell,功能强大、易用。

  1. 配置 $HOME/.bashrc 文件。

我们登录新服务器后的第一步就是配置 $HOME/.bashrc 文件,以使 Linux 登录 Shell 更加易用,例如:配置 LANG 解决中文乱码;配置 PS1 可以使命令行提示符显示更简洁。配置后的内容如下:

  1. # .bashrc
  2. # User specific aliases and functions
  3. alias rm='rm -i'
  4. alias cp='cp -i'
  5. alias mv='mv -i'
  6. # Source global definitions
  7. if [ -f /etc/bashrc ]; then
  8. . /etc/bashrc
  9. fi
  10. if [ ! -d $HOME/workspace ]; then
  11. mkdir -p $HOME/workspace
  12. fi
  13. # User specific environment
  14. # Basic envs
  15. export LANG="en_US.UTF-8" # 设置系统语言为 en_US.UTF-8,避免终端出现中文乱码
  16. export PS1='[\u@dev \W]$ ' # 默认的 PS1 设置会展示全部的路径,为了防止过长,这里只展示:"用户名@dev 最后的目录名"
  17. export WORKSPACE="$HOME/workspace" # 设置工作目录
  18. export PATH=$HOME/bin:$PATH # 将 $HOME/bin 目录加入到 PATH 变量中
  19. # Default entry folder
  20. cd $WORKSPACE # 登录系统,默认进入 workspace 目录
  21. # User specific aliases and functions

通过 vi 命令打开文件 $HOME/.bashrc 粘贴文件时,因为 vi 默认处在非粘贴模式,粘贴后内容可能被 vi 自动缩进,这些缩进,并不一定是我们需要的。这时候可以在 vi 中键入 :set paste 进入粘贴模式,再粘贴复制的内容。使用 vi 编辑文件时,:set paste 是一个高频使用命令。

配置好 $HOME/.bashrc 文件后,我们就可以执行 bash 命令将配置加载到当前 Shell 中了。

上述 Bash 脚本会自动创建工作目录 workspace,以后所有的工作都可以在这个目录下展开。这样做可以带来以下几点好处:

  • 可以使我们的 $HOME 目录保持整洁,便于以后的文件查找和分类。
  • 如果哪一天 / 分区空间不足,可以将整个 workspace 目录 mv 到另一个分区中,并在 / 分区中保留软连接,例如:/home/goer/workspace -> /data/workspace/
  • 如果哪天想备份所有的工作文件,可以直接备份 workspace

在配置 PATH 变量时,建议将期望使用的命令所在的目录放在 $PATH 之前,这样 Linux 会优先匹配到我们期望的命令。例如:export PATH=$HOME/bin:$PATH,如果有相同的命令 A,Linux 会优先使用 $HOME/bin 目录下的 A

至此,我们就完成了 Linux 开发机的初步配置。

依赖安装和配置

在 Linux 系统上安装 miniblog 应用会依赖一些 RPM 包和工具,有些是直接依赖,有些是间接依赖。为了避免后续的操作出现依赖错误,例如因为包不存在而导致的编译、命令执行错误等,本节会预先安装和配置这些依赖包和工具。依赖安装和配置的具体步骤如下。

  1. 安装依赖。

你可以在 CentOS 系统上通过 yum 命令来安装需要的依赖工具,安装命令如下:

  1. $ sudo yum -y install make autoconf automake cmake perl-CPAN libcurl-devel libtool gcc gcc-c++ glibc-headers zlib-devel git-lfs telnet lrzsz jq expat-devel openssl-devel openssl

如果系统提示 Package xxx is already installed.,说明 xxx 包在系统中已经被安装过,你可以忽略该类报错提示。

  1. 安装 Git。

因为安装 miniblog 应用、执行 go get 命令等都会通过 Git 来下载安装包,所以我们还需要安装 Git。由于低版本的 Git 不支持 --unshallow 参数,而 go get 在安装 Go 包时会用到 git fetch --unshallow 命令,因此我们要确保安装一个高版本的 Git,具体的安装方法如下:

  1. $ cd /tmp
  2. $ wget --no-check-certificate https://mirrors.edge.kernel.org/pub/software/scm/git/git-2.36.1.tar.gz
  3. $ tar -xvzf git-2.36.1.tar.gz
  4. $ cd git-2.36.1/
  5. $ ./configure
  6. $ make
  7. $ sudo make install
  8. $ git --version # 输出 git 版本号,说明安装成功
  9. git version 2.36.1

安装好 Git 后,还需要把 Git 的二进制目录添加到 PATH 路径中,不然 Git 可能会因为找不到一些命令导致 Git 报错。你可以执行以下命令来添加目录:

  1. $ tee -a $HOME/.bashrc <<'EOF'
  2. # Configure for git
  3. export PATH=/usr/local/libexec/git-core:$PATH
  4. EOF
  1. 配置 Git。

你可以直接执行以下命令来配置 Git:

  1. $ git config --global user.name "Lingfei Kong" # 用户名改成自己的
  2. $ git config --global user.email "colin404@qq.com" # 邮箱改成自己的
  3. $ git config --global credential.helper store # 设置 git,保存用户名和密码
  4. $ git config --global core.longpaths true # 解决 Git 中 'Filename too long' 的错误

Go 编译环境安装和配置

安装 Go 的编译环境步骤比较简单,你只需下载源码包、设置相应的环境变量即可。具体步骤如下:

  1. 下载安装包。

可以从 Go 语言官方网站下载对应的 Go 安装包以及源码包,下面的命令会下载 go1.19.4 安装包:

  1. $ wget -P /tmp/ https://go.dev/dl/go1.19.4.linux-amd64.tar.gz
  1. 解压并安装。

执行以下命令解压并安装 Go 编译工具和源码:

  1. $ mkdir -p $HOME/go
  2. $ tar -xvzf /tmp/go1.19.4.linux-amd64.tar.gz -C $HOME/go
  3. $ mv $HOME/go/go $HOME/go/go1.19.4
  1. 配置 $HOME/.bashrc 文件。

你可以执行以下命令,将下列环境变量追加到 $HOME/.bashrc 文件中。

  1. $ tee -a $HOME/.bashrc <<'EOF'
  2. # Go envs
  3. export GOVERSION=go1.19.4 # Go 版本设置
  4. export GO_INSTALL_DIR=$HOME/go # Go 安装目录
  5. export GOROOT=$GO_INSTALL_DIR/$GOVERSION # GOROOT 设置
  6. export GOPATH=$WORKSPACE/golang # GOPATH 设置
  7. export PATH=$GOROOT/bin:$GOPATH/bin:$PATH # 将 Go 语言自带的和通过 go install 安装的二进制文件加入到 PATH 路径中
  8. export GO111MODULE="on" # 开启 Go moudles 特性
  9. export GOPROXY=https://goproxy.cn,direct # 安装 Go 模块时,代理服务器设置
  10. export GOPRIVATE=
  11. export GOSUMDB=off # 关闭校验 Go 依赖包的哈希值
  12. EOF
  1. 测试是否安装成功。

如果你执行 go version 命令可以成功输出 Go 的版本,就说明 Go 编译环境安装成功。具体命令如下:

  1. $ bash # 配置 `$HOME/.bashrc` 后,需要执行 `bash` 命令将配置加载到当前 Shell
  2. $ go version
  3. go version go1.19.4 linux/amd64
  1. 初始化工作区。

本课程使用的 Go 版本为 go1.19.4go1.19.4 支持多模块工作区,所以这里也需要初始化工作区。初始化命令如下:

  1. $ mkdir -p $GOPATH && cd $GOPATH
  2. $ go work init
  3. $ go env GOWORK # 执行此命令,查看 go.work 工作区文件路径
  4. /home/goer/workspace/golang/go.work

Protobuf 编译环境安装

因为本实战项目还实现了一个 gRPC 服务器,gRPC 服务器使用 Protobuf 作为数据交换格式,所以我们还需要安装 Protobuf 文件的编译器 protocprotoc 需要 protoc-gen-go 插件来完成 Go 语言的代码转换,因此我们需要安装 protocprotoc-gen-go 这 2 个工具。它们的安装方法比较简单,具体分为以下两步:

  1. 安装 protoc 命令。

安装命令如下:

  1. $ cd /tmp/
  2. $ wget https://github.com/protocolbuffers/protobuf/releases/download/v21.9/protobuf-cpp-3.21.9.tar.gz
  3. $ tar -xvzf protobuf-cpp-3.21.9.tar.gz
  4. $ cd protobuf-3.21.9/
  5. $ ./autogen.sh
  6. $ ./configure
  7. $ make
  8. $ sudo make install
  9. $ protoc --version # 查看 protoc 版本,成功输出版本号,说明安装成功
  10. libprotoc 3.21.9

提示:这里我们安装的 protoc 版本是 3.21.9。如果你安装了其他版本,后续执行 protoc 命令报错,可能需要你根据所安装的版本进行命令参数适配。

在执行 autogen.sh 脚本时,如果遇到以下错误:

  1. configure.ac:48: installing './install-sh'
  2. configure.ac:109: error: required file './ltmain.sh' not found configure.ac:48: installing './missing'
  3. benchmarks/Makefile.am: installing './depcomp'
  4. conformance/Makefile.am:362: warning: shell python --version 2>&1: non-POSIX variable name
  5. conformance/Makefile.am:362: (probably a GNU make extension)
  6. conformance/Makefile.am:372: warning: shell python --version 2>&1: non-POSIX variable name
  7. conformance/Makefile.am:372: (probably a GNU make extension)
  8. parallel-tests: installing './test-driver'
  9. autoreconf: automake failed with exit status: 1

可以通过以下命令配置 libtoolize,并再次运行 autogen.sh 来解决:

  1. $ libtoolize --automake --copy --debug force
  2. $ ./autogen.sh
  1. 安装 protoc-gen-go 命令。

安装命令如下:

  1. $ go install github.com/golang/protobuf/protoc-gen-go@latest

当你第一次执行 go install 命令的时候,因为本地无缓存,需要下载所有的依赖模块,所以安装速度会比较慢,请你耐心等待。

如果你感觉 go install 卡在那里,可以添加 -x 参数打印具体的安装细节,通过细节你可以发现具体哪个步骤执行时间比较久:

  1. $ go install -x github.com/golang/protobuf/protoc-gen-go@latest

Go 开发 IDE 安装和配置

编译环境准备完之后,你还需要一个代码编辑器才能开始 Go 项目开发。为了提高开发效率,你还需要将这个编辑器配置成 Go IDE。

目前,GoLand、VSCode 这些 IDE 都很优秀,但它们都是 Windows 系统下的 IDE。在 Linux 系统下我们可以选择将 Vim 配置成 Go IDE。熟练 Vim IDE 操作之后,开发效率不输 GoLand 和 VSCode。有多种方法可以配置一个 Vim IDE,这里我选择使用 vim-go 将 Vim 配置成一个 Go IDE。vim-go 是社区比较受欢迎的 Vim Go 开发插件,可以方便地将一个 Vim 配置成 Vim IDE。

Vim IDE 的安装和配置分为以下两步。

  1. 安装 vim-go。
  1. $ rm -rf $HOME/.vim; mkdir -p ~/.vim/pack/plugins/start/
  2. $ git clone --depth=1 https://github.com/fatih/vim-go.git ~/.vim/pack/plugins/start/vim-go
  1. Go 工具安装。

vim-go 会用到一些 Go 工具,比如在函数跳转时会用到 gurugodef 工具,在格式化时会用到 goimports,所以你也需要安装这些工具。

安装方式如下:执行 vi /tmp/test.go,然后输入 :GoInstallBinaries 安装 vim-go 需要的工具。安装后的 Go IDE 常用操作的按键映射如下表所示:

按键 功能描述
gd/ctrl + ]/ :GoDef,跳转到光标所在标识符的声明或者定义的位置
Ctrl+I :GoDefPop,跳转到跳转堆栈的上一个位置
Ctrl+O 回上一次位置
Shift+K :GoDoc,在新 Vim 窗口中显示光标处 word 或者给定 word 的 Go 文档
Shift+M :GoInfo,显示光标所在的标识符的信息,比如显示函数的声明信息,变量的数据类型
Shift+T :GoDefType,跳转到光标所在标识符的类型定义的位置
Shift+L :GoAddTag,给结构体字段添加 json tags
Shift+P :GoImplements,列出一个接口的所有可能实现
Shift+R :GoRename,重命名 Go 标识符
Shift+F :GoFillStruct,给结构体变量填充默认值
Shift+C :GoCallers,列出一个函数/方法的所有调用者
Shift+H :GoSameIdsToggle,高亮光标下的所有标识符
Crl + N 自动补全时下一个补全项
Ctrl + P 自动补全时上一个补全项

提示:在 Vim IDE 中进行开发,使用最多的功能是::GoDef:GoDefPop:GoDocCrl + NCtrl + P

博客系统安装和配置

上面,我们部署好了 Go 基础开发环境。接下来就可以部署我们的实战项目了。安装和配置博客系统,主要包括以下几步:

  1. 下载源代码;

  2. 安装和配置 MariaDB 数据库;

  3. 编译二进制并启动服务;

  4. 测试服务。

  5. 下载博客系统源码

想要安装 miniblog 系统,首先需要先下载 miniblog 源码。本书使用的 miniblog 源码分支为 v1.0.0。miniblog 源码下载命令如下:

  1. $ mkdir -p $WORKSPACE/golang/src/github.com/marmotedu
  2. $ cd $WORKSPACE/golang/src/github.com/marmotedu
  3. $ git clone -b v1.0.0 --depth=1 https://github.com/marmotedu/miniblog
  4. $ go work use ./miniblog # 将 miniblog 项目添加到当前 Go 工作区中

下载完源码后,记得访问 github.com/marmotedu/m… 点击右上角的 Star 按钮,Star 该项目

2.实战准备:如何快速部署项目,准备试验环境? - 图3

对于一个优秀的开源项目,在学习过程中,顺手 Star 是一个好的习惯。当你需要再学习或者参考时,可以在你的 Star 列表中找到该项目。否则,你只能通过记忆找到这个项目。另外 github.com/marmotedu/i… 也是一个值得 Star 的项目。

  1. MariaDB 安装和配置

因为 miniblog 项目用到了 MariaDB 数据库来存储数据,而 miniblog 服务在启动时会先尝试连接 MariaDB 数据库,所以为了避免启动时连接数据库失败,这里我们先来安装 MariaDB 数据库。MariaDB 安装和配置步骤如下:

  1. 配置安装 MariaDB 需要的 Yum 源。配置命令如下:
  1. $ sudo tee -a /etc/yum.repos.d/mariadb-10.5.repo <<'EOF'
  2. # MariaDB 10.5 CentOS repository list - created 2020-10-23 01:54 UTC
  3. # http://downloads.mariadb.org/mariadb/repositories/
  4. [mariadb]
  5. name = MariaDB
  6. baseurl = https://mirrors.aliyun.com/mariadb/yum/10.5/centos8-amd64/
  7. module_hotfixes=1
  8. gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
  9. gpgcheck=0
  10. EOF
  1. 安装 MariaDB 和 MariaDB 客户端。安装命令如下:
  1. $ sudo yum -y install MariaDB-server MariaDB-client
  1. 启动 MariaDB,并设置开机启动。启动命令如下:
  1. $ sudo systemctl enable mariadb
  2. $ sudo systemctl start mariadb
  1. 设置 root 初始密码。初始化命令如下:
  1. $ sudo mysqladmin -uroot password 'miniblog1234'

提示:执行 mysqladmin 一定要具有 root 权限,否则可能会报: mysqladmin: connect to server at '``localhost``' failed 错误。

  1. 登录数据库并创建 miniblog 用户。创建命令如下:
  1. $ mysql -h127.0.0.1 -P3306 -uroot -p'miniblog1234' # 连接 MariaDB,-h 指定主机,-P 指定监听端口,-u 指定登录用户,-p 指定登录密码
  2. MariaDB [(none)]> grant all on miniblog.* TO miniblog@127.0.0.1 identified by 'miniblog1234' ; Query OK, 0 rows affected (0.000 sec)
  3. MariaDB [(none)]> flush privileges; Query OK, 0 rows affected (0.000 sec)
  1. miniblog 用户登录 MariaDB,创建 miniblog 数据库。创建命令如下:
  1. $ cd $WORKSPACE/golang/src/github.com/marmotedu/miniblog
  2. $ mysql -h127.0.0.1 -P3306 -u miniblog -p'miniblog1234'
  3. MariaDB [(none)]> source configs/miniblog.sql;
  4. MariaDB [miniblog]> use miniblog ;
  5. Database changed
  6. MariaDB [miniblog]> show tables;
  7. +--------------------+
  8. | Tables_in_miniblog |
  9. +--------------------+
  10. | post |
  11. | user |
  12. +--------------------+
  13. 2 rows in set (0.000 sec)

至此,我们已经成功安装并配置好 MariaDB 数据库。

  1. 安装部署 miniblog 服务

安装部署 miniblog 服务分为以下几步。

  1. 安装配置文件、启动二进制文件。安装命令如下:
  1. $ cd $WORKSPACE/golang/src/github.com/marmotedu/miniblog
  2. $ sudo mkdir -p /data/miniblog /opt/miniblog/bin /etc/miniblog /var/log/miniblog # 创建需要的目录
  3. $ make build # 编译源码生成 miniblog 二进制文件
  4. $ sudo cp _output/platforms/linux/amd64/miniblog /opt/miniblog/bin # 安装二进制文件
  5. $ sed 's/.\/_output/\/etc\/miniblog/g' configs/miniblog.yaml > miniblog.sed.yaml # 替换 CA 文件路径
  6. $ sudo cp miniblog.sed.yaml /etc/miniblog/miniblog.yaml # 安装配置文件
  7. $ make ca # 创建 CA 文件
  8. $ sudo cp -a _output/cert/ /etc/miniblog/ # 将 CA 文件复制到 miniblog 配置文件目录
  1. 通过 Systemd 启动 miniblog 服务。配置命令如下:
  1. $ sudo cp init/miniblog.service /etc/systemd/system/miniblog.service # 创建 Systemd Unit 文件
  2. $ sudo systemctl daemon-reload # 重新加载 Systemd Unit 文件
  3. $ sudo systemctl restart miniblog # 启动 miniblog 服务
  4. $ sudo systemctl enable miniblog # 设置 miniblog 服务开机启动
  1. 测试 miniblog 服务是否成功安装。测试命令如下:
  1. $ curl http://127.0.0.1:8080/healthz #测试 miniblog 服务是否成功安装
  2. {"status":"ok"}

如果终端输出 {"status":"ok"},说明 miniblog 安装成功。

  1. 启动 Swagger API 文档

此外,你还可以通过 swagger 命令来启动一个在线的 Swagger API 文档,命令如下:

go

复制代码

  1. $ go install github.com/go-swagger/go-swagger/cmd/swagger@latest
  2. $ make swagger
  3. 2022/11/22 10:29:57 serving docs at http://localhost:65534/docs

之后,你可以通过 http://localhost:65534/docs 来访问 Swagger API文档:

2.实战准备:如何快速部署项目,准备试验环境? - 图4

测试功能:管理用户、管理博客

部署好 miniblog 服务后,你还可以参考 MiniBlog 操作指南 来执行命令管理用户、管理博客。

注意:部署完成之后,miniblog 会默认初始化一个 root 用户,密码为 miniblog1234,使用 root 用户,你具有获取所有用户列表的权限。

小结

通过本节课,你可以提前部署好 miniblog 项目,为后面的学习准备好试验环境。在后面的学习中,你可以基于本节课所部署的环境,随时进行代码演练。