当前位置: 首页 > news >正文

02 | 快速部署 fastgo 项目

提示:

  • 所有体系课见专栏:Go 项目开发极速入门实战课;
  • 欢迎加入我的训练营:云原生AI实战营,一个助力 Go 开发者在 AI 时代建立技术竞争力的实战营。

在学习一个开源项目时,建议先将项目部署成功。这样学习过程中可以直接魔改测试。本节课,来教你快速部署 fastgo 项目。

部署环境

本项目的部署环境要求如下:

  • Go 版本:>= 1.24.0;
  • 操作系统: 建议使用 Linux 操作系统。本课程的部署环境为 Debian 12。如有条件,建议直接使用 Debian 12 系统,这样可以避免因操作系统差异带来的安装问题。若非 Debian 12 系统,出现部署问题,需要你自己根据错误日志,解决问题。

部署 fastgo 项目分为以下 3 步:

  1. Go 编译环境安装和配置;
  2. 安装和配置 MariaDB 数据库;
  3. 初始化 fastgo 数据库;
  4. 安装和配置 fastgo 项目。

步骤 1:Go 编译环境安装和配置

提示:如果你已经安装了 Go 编译环境,可跳过这一步。

安装 Go 编译环境的步骤相对简单,只需下载源码包并配置相应的环境变量。具体步骤如下。

1. 下载安装包。

你可以从 Go 语言官方网站下载对应的 Go 安装包和源码包。以下命令将下载 go1.24.0 安装包:

$ wget -P /tmp/ https://go.dev/dl/go1.24.0.linux-amd64.tar.gz

2. 解压并安装。

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

$ mkdir -p $HOME/go
$ tar -xvzf /tmp/go1.24.0.linux-amd64.tar.gz -C $HOME/go
$ mv $HOME/go/go $HOME/go/go1.24.0

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

请按照以下命令将 Go 的相关环境变量追加到 HOME/.bashrc 文件中。

$ tee -a $HOME/.bashrc <<'EOF'
# Go envs
export GOVERSION=${GOVERSION-go1.24.0} # Go 版本设置
export GO_INSTALL_DIR=$HOME/go # Go 安装目录
export GOROOT=$GO_INSTALL_DIR/$GOVERSION # GOROOT 设置
export GOPATH=$HOME/golang # GOPATH 设置
export PATH=$GOROOT/bin:$GOPATH/bin:$PATH # 添加 PATH 路径
export GOPROXY=https://goproxy.cn,direct # 安装 Go 模块时,代理服务器设置
export GOPRIVATE=
export GOSUMDB=off # 关闭校验 Go 依赖包的哈希值
EOF

4. 测试是否安装成功。

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

$ bash # 配置 $HOME/.bashrc 后,需要执行 bash 命令将配置加载到当前 Shell
$ go version
go version go1.24.0 linux/amd64

步骤 2: 安装和配置 MariaDB 数据库

提示:如果你已经安装和配置 MariaDB 数据库,可跳过这一步。

本课程在 master 分支下提供了一个名为 configs/fg-apiserver.yaml 的文件,其中保存了数据库初始化的 SQL 语句。

在生产环境中,fastgo 项目需要使用 MariaDB 数据库来存储数据,因此需要先安装 MariaDB 数据库。安装和配置 MariaDB 的具体步骤如下。

1. 安装 MariaDB 服务端和 MariaDB 客户端

安装命令如下:

$ sudo apt install -y mariadb-server mariadb-client

2. 启动 MariaDB,并设置开机启动

启动命令如下:

$ sudo systemctl enable mariadb
$ sudo systemctl start mariadb
$ sudo systemctl enable mariadb

3. 设置 root 初始密码

初始化命令如下:

$ sudo mysqladmin -uroot password 'fastgo1234'

提示: 执行 mysqladmin 命令时,必须具有 root 权限,否则可能会出现错误:mysqladmin: connect to server at ‘localhost’ failed。

步骤 3:初始化 fastgo 数据库

如果你使用之前安装的 MySQL 数据库,而非本课程安装的 MySQL。那么课程中访问数据库的地址、用户名和密码,需要你自行适配。

1. 登录数据库并创建 fastgo 用户

创建命令如下:

$ mysql -h127.0.0.1 -P3306 -uroot -p'fastgo1234'
> grant all on fastgo.* TO fastgo@127.0.0.1 identified by 'fastgo1234';
> flush privileges;
> exit;

2. 创建 fastgo 数据库

使用 fastgo 用户登录 MariaDB,并创建 fastgo 数据库,创建命令如下:

$ mkdir -p  $HOME/golang/src/github.com/onexstack/
$ cd $HOME/golang/src/github.com/onexstack/
$ git clone https://github.com/onexstack/fastgo
$ cd $HOME/golang/src/github.com/onexstack/fastgo
$ mysql -h127.0.0.1 -P3306 -u fastgo -p'fastgo1234'
> source configs/fastgo.sql;
> use fastgo;
Database changed
> show tables;
+--------------------+
| Tables_in_fastgo |
+--------------------+
| post               |
| user               |
+--------------------+
3 rows in set (0.000 sec)

步骤 4: 安装和配置 fastgo 项目

安装和配置 fastgo 项目步骤如下。

1. 在配置文件中添加数据库配置

fastgo 项目启动需要连接数据库,所以需要在配置文件 configs/fg-apiserver.yaml 中配置数据库的 IP、端口、用户名、密码和数据库名信息。configs/fg-apiserver.yaml 配置文件内容如下:

# 通用配置
#

# JWT 签发密钥
jwt-key: Rtg8BPKNEf2mB4mgvKONGPZZQSaJWNLijxR42qRgq0iBb5
# JWT Token 过期时间
expiration: 1000h

# MySQL 数据库相关配置
mysql:
  # MySQL 机器 IP 和端口,默认 127.0.0.1:3306
  addr: 127.0.0.1:3306
  # MySQL 用户名(建议授权最小权限集)
  username: fastgo
  # MySQL 用户密码
  password: fastgo1234
  # fastgo 系统所用的数据库名
  database: fastgo
  # MySQL 最大空闲连接数,默认 100
  max-idle-connections: 100
  # MySQL 最大打开的连接数,默认 100
  max-open-connections: 100
  # 空闲连接最大存活时间,默认 10s
  max-connection-life-time: 10s

log:
  format: text
  level: info
  output: stdout

提示:如果你使用之前创建的数据库,则需要适配 mysql.addrmysql.usernamemysql.password 配置项。

2. 启动 fg-apiserver 组件

执行以下命令编译并启动 fg-apiserver 组件:

$ cd $HOME/golang/src/github.com/onexstack/fastgo
$ ./build.sh
$ _output/fg-apiserver -c configs/fg-apiserver.yaml 
...
time=2025-03-10T19:24:23.440+08:00 level=INFO msg="Start to listening the incoming requests on http address" addr=0.0.0.0:6666

启动的 API 服务器监听地址为:0.0.0.0:6666

3. 测试 fg-apiserver 组件功能是否正常

打开一个新的 Linux 终端,执行以下命令测试 fg-apiserver 中的 API 接口是否正常工作:

$ ./scripts/test.sh

执行结果如下图所示:

可以看到,fg-apiserver 中的接口,都测试通过。

相关文章:

  • 在 Spring Boot 中实现基于 TraceId 的日志链路追踪
  • vue3-element-admin 前后端本地启动联调
  • IntelliJ IDEA v2024.3.4.1 Windows Java开发工具安装
  • 瑞芯微RK3576(2)-调试过程中遇到的问题
  • 如何用AI制作我们记忆中的乡村夜景
  • 获取URL字段的方法
  • 【反无人机目标检测数据集】空对空视觉检测微型无人机:深度学习的实验评估
  • C语言每日一练——day_4
  • 力扣(leetcode)每日一题 2012 数组美丽值求和
  • Linux 磁盘和文件系统管理
  • SpringMVC 基本概念与代码示例
  • 数据结构之线性表
  • Django-ORM-prefetch_related
  • 排序 --- 快速排序
  • 网络配置与pip工具安装
  • 文件上传漏洞 upload-labs靶场
  • 开源数字人模型Heygem
  • 【学习笔记】《逆向工程核心原理》02.小段标记法、IA-32寄存器、栈、abex‘crackme、栈帧
  • 说一下spring的事务隔离级别?
  • 爱可以传递,幸福可以具象化
  • 中科飞测将投资超10亿元,在上海张江成立第二总部
  • 制造四十余年血腥冲突后,库尔德工人党为何自行解散?
  • 北京13日冰雹过后,已受理各险种报案近3万件
  • 多家外资看好中国市场!野村建议“战术超配”,花旗上调恒指目标价
  • 融创中国:境外债务重组计划聆讯定于9月15日召开
  • 王毅会见巴西外长维埃拉、总统首席特别顾问阿莫林