前天 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
。
目前 Answer 官网 还没提供 Demo 演示环境,笔者使用 Answer 搭建了一个问答社区,欢迎大家访问 https://answer.npe4j.com ,后面也会根据 Answer 的更新及时维护。
SegmentFault 团队计划在 2022 年 12 月发布 Answer 正式版,期待中ing... 欢迎大家共同建设 Answer 社区。
参考资料
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。