10
头图

前天 10.24 Day,SegmentFault 思否团队正式开源问答社区软件 Answer,具体内容见文章 SegmentFault 思否正式开源问答社区软件 Answer

据介绍,本次发布的 Answer Alpha 版本,已支持的特性有:

  • 核心的提问、回答、评论功能
  • 通过投票进行内容质量的控制
  • 声望衡量用户的贡献和信任等级
  • 现代化的响应式界面,桌面和移动端都能使用

笔者看到后第一时间从 GitHub fork 了 Answer 源代码 ,Answer 的后端使用 Go 语言实现,前端使用 React 框架。

下面介绍下如何在搭建本地开发环境,必要的软件版本如下:

  • MySQ >=5.7
  • Go >=1.18 版本
  • Node.js >=16.17 版本

构建后端

初始化配置和表结构

将 Answer 源码导入 IDE,笔者这里使用的是 GoLand,使用 go mod tidy 下载依赖的第三方库,启动入口程序在 answer/cmd/answer/main.go
首先使用 init 命令初始化配置和表结构,指定启动参数为 init -C=/Users/geekymv/develop/data/answer-C 是指定配置文件所在目录。

执行完会在 -C 指定目录下创建conf、i18n 和 upfiles 三个目录,其中 conf 目录存放的是配置文件,就是将代码中的 configs/config.yaml 文件拷贝到我们指定的目录下。这里我们需要修改 db 的连接配置,然后手动创建数据库名称为 answer,再次执行 init 会初始化数据库表结构。
修改后的 config.yaml 完整配置如下,根据自己的实际配置进行相应修改。

server:
  http:
    addr: 0.0.0.0:80
data:
  database:
    driver: "mysql"
    connection: 数据库用户名:密码@tcp(127.0.0.1:3306)/answer
  cache:
    file_path: "/tmp/cache/cache.db"
i18n:
  bundle_dir: "/Users/geekymv/develop/data/answer/i18n"
swaggerui:
  show: true
  protocol: http
  host: 127.0.0.1
  address: ':80'
service_config:
  secret_key: "answer"
  web_host: "http://127.0.0.1:80"
  upload_path: "/Users/geekymv/develop/data/answer/upfiles"

启动后端程序

修改启动参数为 run -c=/Users/geekymv/develop/data/answer/conf/config.yaml ,指定在上一步中修改的配置文件。

Answer 项目集成了 swagger,在启动后通过浏览器访问 http://127.0.0.1/swagger/inde... 可以查看接口文档。

构建前端

Answer UI 需要使用 pnpm 构建,执行下面命令安装 pnpm

$ corepack enable
$ corepack prepare pnpm@v7.12.2 --activate

构建 ui

$ cd answer/ui
$ pnpm run build:dev

页面访问

页面构建完成后,重启后端程序,通过浏览器访问 http://127.0.0.1 就可以使用 Answer 了,系统提供的默认管理员帐号 admin@admin.com 密码 amdin

image.png

目前 Answer 官网 还没提供 Demo 演示环境,笔者使用 Answer 搭建了一个问答社区,欢迎大家访问 https://answer.npe4j.com ,后面也会根据 Answer 的更新及时维护。

SegmentFault 团队计划在 2022 年 12 月发布 Answer 正式版,期待中ing... 欢迎大家共同建设 Answer 社区。

参考资料


geekymv
47 声望6 粉丝