diff --git a/README.md b/README.md index 33e13a46..b3bb0d74 100644 --- a/README.md +++ b/README.md @@ -21,180 +21,15 @@ Think 是一款开源知识管理工具。通过独立的知识库空间,结 image - ## 预览 ![知识库](http://wipi.oss-cn-shanghai.aliyuncs.com/2022-02-20/YN67GM4VQMBTZFZ88TYP8X/image.png) ![新建文档](http://wipi.oss-cn-shanghai.aliyuncs.com/2022-02-20/YN67GM4VQMBTZFZ88TYPQX/image.png) ![编辑器](http://wipi.oss-cn-shanghai.aliyuncs.com/2022-02-20/YN67GM4VQMBTZFZ88TYPZX/image.png) -## 项目结构 +## 项目开发 -本项目依赖 pnpm 使用 monorepo 形式进行代码组织,分包如下: - -- `@think/config`: 客户端、服务端、OSS、MySQL、Redis 等配置管理 -- `@think/domains`:领域模型数据定义 -- `@think/constants`:常量配置 -- `@think/server`:服务端 -- `@think/client`:客户端 - -## 项目依赖 - -- nodejs ≥ 16.5 -- pnpm -- pm2 -- mysql ≥ 5.7 -- redis (可选) - -依赖安装命令: `npm i -g pm2 @nestjs/cli pnpm` - - - -## Docker-compose 一键构建安装 - -- 实测腾讯轻量云 2C4G 机器构建需 8 分钟左右 - -**请注意构建前修改 `docker-compose.yml` 中的 `EIP` 参数,否则无法正常使用!!!** - -``` -# 首次安装 -git clone https://github.com/fantasticit/think.git -cd think -vim docker-compose.yml -docker-compose up -d - -# 二次更新升级 -cd think -git pull -docker-compose build -docker-compose up -d - -# FAQ -如遇二次更新有问题,请更新代码重新构建,然后删除本地配置文件并重启容器. -如果还不能解决,1.有能力可自行解决|2.等待更新|3.去mrdoc.fun站点留言 -``` - -然后访问 `http://ip:5001` 即可. - - - -## 手动安装教程 - -- 前台页面地址:`http://localhost:5001` -- 服务接口地址:`http://localhost:5002` -- 协作接口地址:`http://localhost:5003` - -如需修改配置,开发环境编辑 `config/dev.yaml`。生产环境编辑 `config/prod.yaml` (如没有,可复制开发环境的配置修改即可.) - -- 数据库 - -首先安装 `MySQL`,推荐使用 docker 进行安装。 - -```bash -docker image pull mysql:5.7 -# m1 的 mac 可以用:docker image pull --platform linux/x86_64 mysql:5.7 -docker run -d --restart=always --name think -p 3306:3306 -e MYSQL_DATABASE=think -e MYSQL_ROOT_PASSWORD=root mysql:5.7 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci -``` - -- 可选:Redis - -如果需要文档版本服务,请在配置文件中修改 `db.redis` 的配置。 - -``` -docker pull redis:latest -docker run --name think-redis -p 6379:6379 -d redis --appendonly yes --requirepass "root" -``` - - -### 本地源代码运行(开发环境) - - -```bash -git clone https://github.com/fantasticit/think.git -cd think -pnpm install -pnpm run dev -``` - -然后访问 `http://ip:5001` 即可. - - - -### 本地源代码运行(生产环境) - -生产环境部署的脚本如下: - -```bash -git clone https://github.com/fantasticit/think.git -cd think -pnpm install -pnpm run build -pnpm run pm2 - -pm2 startup -pm2 save -``` - -### nginx 配置参考 - -采用 `nginx` 作为反向代理的配置参考(部分),完整版请见 <[think/nginx.conf.bak](https://github.com/fantasticit/think/blob/main/nginx.conf.bak)> - -```bash -upstream wipi_client { - server 127.0.0.1:5001; - keepalive 64; -} - -# http -> https 重定向 -server { - listen 80; - server_name 域名; - rewrite ^(.*)$ https://$host$1 permanent; -} - -server { - listen 443 ssl; - server_name 域名; - ssl_certificate 证书存放路径; - ssl_certificate_key 证书存放路径; - - location / { - proxy_http_version 1.1; - proxy_set_header Upgrade $http_upgrade; - proxy_set_header Connection "upgrade"; - proxy_set_header Host $host; - proxy_set_header X-Nginx-Proxy true; - proxy_cache_bypass $http_upgrade; - proxy_pass http://wipi_client; #反向代理 - proxy_set_header X-Real-IP $remote_addr; #获取客户端真实IP - proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; - } -} -``` - -### caddy2 配置参考 - -采用 caddy v2 作为反向代理的配置文件参考 - -``` -# 例子中的域名,请自行替换. -think.mrdoc.fun { - encode zstd gzip - reverse_proxy localhost:5001 -} - - -thinkapi.mrdoc.fun { - @websockets { - header Connection *Upgrade* - header Upgrade websocket - path /think/wss/* -} - encode zstd gzip - reverse_proxy /api/* localhost:5002 - reverse_proxy @websockets localhost:5003 -} -``` +[项目开发说明](./let-us-start.md)。 ## 自动化部署 @@ -202,21 +37,15 @@ thinkapi.mrdoc.fun { 参考:[webhook](https://github.com/adnanh/webhook/blob/master/docs/Hook-Examples.md#incoming-github-webhook) -## 商用 - -如需商用,请联系作者,取得授权后可商用。 - ## 赞助 如果这个项目对您有帮助,并且您希望支持该项目的开发和维护,请随时扫描一下二维码进行捐赠。非常感谢您的捐款,谢谢! -如果您希望留下您的信息,可以到[感谢信](https://think.codingit.cn/wiki/eb520cdf-aa4b-4af2-ae4a-7140e21403ab/document/230548f5-3220-4c5b-a209-02b1eb0299e7)评论区留言。
alipay wechat
- ## 资料 - next.js 源码:https://github.com/vercel/next.js diff --git a/let-us-start.md b/let-us-start.md new file mode 100644 index 00000000..17bd5f7a --- /dev/null +++ b/let-us-start.md @@ -0,0 +1,110 @@ +# think + +## 项目结构 + +本项目依赖 pnpm 使用 monorepo 形式进行代码组织,分包如下: + +- `@think/config`: 客户端、服务端、OSS、MySQL、Redis 等配置管理 +- `@think/domains`:领域模型数据定义 +- `@think/constants`:常量配置 +- `@think/server`:服务端 +- `@think/client`:客户端 + +## 项目依赖 + +为了将项目运行起来,至少需要以下依赖。 + +- nodejs >=16.5.0:推荐使用 nvm 安装 +- pnpm:安装 nodejs 后,运行 `npm i -g pnpm` 即可安装 +- pm2:安装 nodejs 后,运行 `npm i -g pm2` 即可安装 +- MySQL 5.7 +- Redis + +## 配置文件 + +项目所有的配置文件都在 `config` 目录下,其中 `dev.yaml` 中各字段均有解释,生产环境打包依赖 `prod.yaml`(需要自行修改为所需配置)。如果运行不起来,请对比 `dev.yaml` 检查配置。 + +**如果部署遇到问题,首先请确认相应配置是否正确!** + +## 项目运行 + +无论是开发环境,还是生产环境,项目运行成功后会在 3 个端口启动相应服务(默认 5001、5002、5003),具体端口号由 `config` 文件夹下的配置文件决定。 + +- 前台页面地址:`http://localhost:5001` +- 服务接口地址:`http://localhost:5002` +- 协作接口地址:`http://localhost:5003` + +### 本地开发 + +1. 安装数据库 + +首先安装 `MySQL` 和 `Redis`,推荐使用 docker 进行安装。 + +```bash +docker image pull mysql:5.7 +# m1 的 mac 可以用:docker image pull --platform linux/x86_64 mysql:5.7 +docker run -d --restart=always --name mysql-for-think-dev -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root -e MYSQL_USER=think -e MYSQL_PASSWORD=think -e MYSQL_DATABASE=think mysql:5.7 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci + +docker pull redis:latest +docker run --name redis-for-think-dev -p 6379:6379 -d redis --appendonly yes --requirepass "root" +``` + +2. 安装依赖并运行 + +```bash +git clone https://github.com/fantasticit/think.git +cd think +pnpm install +pnpm run dev +``` + +### 生产部署 + +首先确认在 `config` 文件夹下新建 `prod.yaml` 配置文件,然后运行以下命令。 + +```bash +git clone https://github.com/fantasticit/think.git +cd think +pnpm install # 安装依赖 +pnpm run build # 项目打包 + +# 以下如果没有安装 pm2,直接 pnpm run start,推荐使用 pm2 +pnpm run pm2 +pm2 startup +pm2 save +``` + +### docker-compose + +也可以使用 docker-compose 进行项目部署。首先,根据需要修改 `docker-compose.yml` 中的数据库、Redis 相关用户名、密码等配置,然后,修改 `config/docker-prod-sample.yaml` 中对应的配置。 + +```bash +# 首次安装 +git clone https://github.com/fantasticit/think.git +cd think +vim docker-compose.yml +docker-compose up -d + +# 二次更新升级 +cd think +git pull +docker-compose build +docker-compose up -d + +# 如果二次更新有问题 +docker-compose kill +docker-compose rm +docker image rm think # 删掉构建的镜像 +docker-compose up -d +``` + +### nginx 配置参考 + +无论以何种方式进行项目部署,项目运行成功后会在 3 个端口启动服务(默认 5001、5002、5003,具体由配置文件决定)。`nginx` 配置参考 <[think/nginx.conf.sample](https://github.com/fantasticit/think/blob/main/nginx.conf.sample)>。 + +特别强调,在 `config` 文件夹的配置中 `client.siteUrl` 一定要配置正确,否则客户端可能无法正常运行。 + +```yaml +# 站点地址(如:http://think.codingit.cn/),一定要设置,否则会出现 cookie、跨域等问题 +siteUrl: 'http://localhost:5001' +```