|
2 years ago | |
---|---|---|
.github | 2 years ago | |
configs | 2 years ago | |
docs | 2 years ago | |
internal | 2 years ago | |
pkg | 2 years ago | |
scripts | 2 years ago | |
web | 2 years ago | |
.gitattributes | 2 years ago | |
.gitignore | 2 years ago | |
Dockerfile | 2 years ago | |
LICENSE | 2 years ago | |
Makefile | 2 years ago | |
README.md | 2 years ago | |
config.yaml.sample | 2 years ago | |
docker-compose.yaml | 2 years ago | |
go.mod | 2 years ago | |
go.sum | 2 years ago | |
main.go | 2 years ago |
README.md
预览
更多演示请前往官网体验(谢绝灌水)
🛠 技术栈
PaoPao主要由以下优秀的开源项目/工具构建
🏗 快速开始
环境要求
- Go (1.17+)
- Node.js (14+)
- MySQL (5.7+)
- Redis
- Zinc
* Zinc是一款轻量级全文搜索引擎,可以查阅 https://zincsearch.com/ 安装
以上环境版本为PaoPao官方的开发版本,仅供参考,其他版本的环境未进行充分测试
安装说明
方式一. 宝塔安装
我们为宝塔用户提供了超详细安装教程(v0.1.0版本),仅供参考,点此查看
方式二. 手动安装
克隆代码库
git clone https://github.com/rocboss/paopao-ce.git
后端
-
导入项目根目录下的
scripts/paopao.sql
文件至MySQL数据库 -
拷贝项目根目录下
config.yaml.sample
文件至config.yaml
,按照注释完成配置编辑 -
编译后端
编译api服务:make build
编译api服务、内嵌web前端ui:
make build TAGS='embed'
编译后在
release
目录可以找到对应可执行文件。release/paopao-ce
-
直接运行后端
运行api服务:make run
运行api服务、web前端ui服务:
make run TAGS='embed'
提示: 如果需要内嵌web前端ui,请先构建web前端(建议设置web/.env为VITE_HOST="")。
前端
-
进入前端目录
web
,编辑.env
文件中后端服务地址,下载依赖包cd ./web vim .env yarn
-
编译前端
yarn build
build完成后,可以在dist目录获取编译产出,配置nginx指向至该目录即可
桌面端
-
进入前端目录
web
,编辑.env
文件中后端服务地址,下载依赖包cd ./web vim .env yarn
-
编译前端
yarn build
-
构建桌面端
yarn tauri build
桌面端是使用Rust + tauri编写 的,需要安装tauri的依赖,具体参考https://tauri.studio/v1/guides/getting-started/prerequisites.
方式三. 使用Docker构建、运行
- 后端:
# 默认参数构建, 默认内嵌web ui并设置api host为空
docker build -t your/paopao-ce:tag .
# 内嵌web ui并且自定义API host参数
docker build -t your/paopao-ce:tag --build-arg API_HOST=http://paopao.info .
# 内嵌web ui并且使用本地web/.env中的API host
docker build -t your/paopao-ce:tag --build-arg USE_API_HOST=no .
# 内嵌web ui并且使用本地编译的web/dist构建
docker build -t your/paopao-ce:tag --build-arg USE_DIST=yes .
# 只编译api server
docker build -t your/paopao-ce:tag --build-arg EMBED_UI=no .
# 运行
docker run -p 8008:8008 -v ${PWD}/config.yaml.sample:/app/paopao-ce/config.yaml your/paopao-ce:tag
- 前端:
cd web
# 默认参数构建
docker build -t your/paopao-ce:web .
# 自定义API host 参数构建
docker build -t your/paopao-ce:web --build-arg API_HOST=http://paopao.info .
# 使用本地编译的dist构建
docker build -t your/paopao-ce:web --build-arg USE_DIST=yes .
方式四. 使用 docker-compose 运行
git clone https://github.com/rocboss/paopao-ce.git
docker compose up --build
# visit paopao-ce(http://127.0.0.1:8008) and phpMysqlAdmin(http://127.0.0.1:8080)
默认是使用config.yaml.sample的配置,如果需要自定义配置,请拷贝默认配置文件(比如config.yaml),修改后再同步配置到docker-compose.yaml如下:
# file: docker-compose.yaml
...
backend:
build:
context: .
restart: always
depends_on:
- db
- redis
- zinc
# modify below to reflect your custom configure
volumes:
- ./config.yaml:/app/paopao-ce/config.yaml
ports:
- 8008:8008
networks:
- paopao-network
....
注意:默认提供的 docker-compose.yaml 仅用于搭建本机开发调试环境,paopao-ce/phpMysqlAdmin 默认只能本机访问,如果需要产品部署供外网访问,请自行修改配置参数或使用其他方式部署。
API 文档
构建时将 docs
添加到TAGS中:
make run TAGS='docs'
# visit http://127.0.0.1:8008/docs
配置说明
config.yaml.sample
是一份完整的配置文件模版,paopao-ce启动时会读取./configs/config.yaml
、./config.yaml
任意一份配置文件(优先读取最先找到的文件)。
cp config.yaml.sample config.yaml
vim config.yaml # 修改参数
paopao-ce
配置文件中的 Features
小节是声明paopao-ce运行时开启哪些功能项:
...
Features:
Default: ["Base", "MySQL", "Option", "LocalOSS", "LoggerFile"]
Develop: ["Base", "MySQL", "Option", "Sms", "AliOSS", "LoggerZinc"]
Demo: ["Base", "MySQL", "Option", "Sms", "MinIO", "LoggerZinc"]
Slim: ["Base", "Sqlite3", "LocalOSS", "LoggerFile"]
Base: ["Zinc", "Redis", "Alipay",]
Option: ["SimpleCacheIndex"]
Sms: "SmsJuhe"
...
如上: Default/Develop/Demo/Slim 是不同 功能集套件(Features Suite), Base/Option 是子功能套件, Sms是关于短信验证码功能的参数选项。
这里 Default
套件 代表的意思是: 使用Base/Option
中的功能,外加 MySQL/LocalOSS/LoggerFile
功能,也就是说开启了Zinc/Redis/Alipay/SimpleCacheIndex/MySQL/LocalOSS/LoggerFile
7项功能;
Develop
套件依例类推。
使用Feautures:
release/paopao-ce --help
Usage of release/paopao-ce:
-features value
use special features
-no-default-features
whether use default features
# 默认使用 Default 功能套件
release/paopao-ce
# 不包含 default 中的功能集,仅仅使用 develop 中声明的功能集
release/paopao-ce --no-default-features --features develop
# 使用 default 中的功能集,外加 sms 功能
release/paopao-ce --features sms
# 手动指定需要开启的功能集
release/paopao-ce --no-default-features --features sqlite3,localoss,loggerfile,redis
目前支持的功能集合:
- 数据库: MySQL/Sqlite3/PostgreSQL
- 对象存储: AliOSS/MinIO/LocalOSS
AliOSS
阿里云对象存储服务;
MinIO
MinIO对象存储服务;
LocalOSS
提供使用本地目录文件作为对象存储的功能,仅用于开发调试环境; - 缓存: Redis/SimpleCacheIndex/BigCacheIndex
SimpleCacheIndex
提供简单的 广场推文列表 的缓存功能;
BigCacheIndex
使用BigCache缓存 广场推文列表,缓存每个用户每一页,简单做到千人千面; - 搜索: Zinc/Meili
Zinc
基于Zinc搜索引擎提供推文搜索服务(目前状态: 稳定,推荐使用);
Meili
基于Meilisearch搜索引擎提供推文搜索服务(目前状态: 内测阶段); - 日志: LoggerFile/LoggerZinc/LoggerMeili
LoggerFile
使用文件写日志(目前状态: 稳定);
LoggerZinc
使用Zinc写日志(目前状态: 稳定,推荐使用);
LoggerMeili
使用Meilisearch写日志(目前状态: 调试阶段); - 支付: Alipay
- 短信验证码: SmsJuhe(需要开启sms)
Sms
功能如果没有开启,任意短信验证码都可以绑定手机;
其他说明
建议后端服务使用 supervisor
守护进程,并通过 nginx
反向代理后,提供API给前端服务调用。
短信通道使用的聚合数据,如果申请不下来,可以考虑替换其他服务商。
代码结构比较简单,很方便扩展
👯♀️ 贡献
喜欢的朋友欢迎给个Star、贡献PR。
License
Distributed under the MIT License. See LICENSE
for more information.