本文最后更新于 2024-05-12,

若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益, 请联系我 删除。

本站只有Telegram群组为唯一交流群组, 点击加入

文章内容有误?申请成为本站文章修订者或作者? 向站长提出申请

🚀 如何开始?

以下所有相关操作都基于项目根目录位置,请注意检查不要出错!

注意事项

  • pnpm version >= 8
    corepack enable
    
  • Node.js version >= v20

    使用来自 .node-version 的版本 支持的工具

  • Postgres version >= 8.0.0
  • Redis version >= 5.0.0
  • 项目依赖 Docker,所以请确保你本地已安装并成功运行

编辑器

VSCode

docker --version # Docker version 24.0.7, build afdd53b

node --version # v20+

pnpm -v # 8+

1. 安装依赖

pnpm install

2. 配置 .env 文件

可以选择将 ./apps/api/.env.example 文件内容复制到 ./apps/api/.env,请注意 example 文件中的是示例配置,主要是一些系统的环境变量信息,比如:数据库连接地址、用户名、密码、端口、密钥等等,后端服务会从此文件中读取配置信息,当然你也可以更改成你自己的配置信息

Windows 用户推荐快捷键复制粘贴,Linux 用户可以通过下面的命令进行操作。

Server

cp ./apps/api/.env.example ./apps/api/.env

Client

cp ./apps/client/.env.example ./apps/client/.env

3. 恢复 Logto 的数据

解压缩 logto_db_init_data.zip.volumes/

unzip logto_db_init_data.zip -d .volumes/

如果你想 手动配置 Logto

4. 启动 Docker Compose 服务

后端用到了 Postgres 和 Redis 服务,通过下面在 package.json 中配置的命令启动和停止。

# 启动
pnpm docker:start

# 下面这些命令等你用的时候在执行,不要傻乎乎的刚启动就停止哈 😊
# 停止
pnpm docker:stop
# 删除
pnpm docker:delete
# 完全删除(包括 Volume 数据)
pnpm docker:down

当然如果你更喜欢手动操作

docker compose up -d
docker compose stop
docker compose down

# 兼容老版本 docker 的命令
docker-compose up -d

5. 初始化数据库表结构

执行这个命令时,尽量与上个命令间隔一点时间,因为刚刚使用的 -d 参数会让其服务挂起在后台执行,此时 docker 服务可能还在 running 中,若是发现报错了那就再执行一遍。

隔一点时间,因为刚刚使用的 -d 参数会让其服务挂起在后台执行,此时 docker 服务可能还在 running 中,若是发现报错了那就再执行一遍。

pnpm db:init

6. 创建并上传课程数据

只有第一次初始化数据库后需要执行

pnpm db:upload

7. 启动后端服务

pnpm dev:serve

8. 启动前端服务

pnpm dev:client

❓ 常见问题解答

数据库连接不上

我的 Docker 和里面的数据库都正常跑起来了,但是跑 db:init 命令时还是报错,提示数据库连接失败。

可以检查下 .env 文件中的数据库配置是否正确,甚至是这个文件有没有!

如何正确的更新课程数据?

当你发现有错误的课程数据并修改后,应当使用下面的命令将课程数据更新到数据库中。

pnpm db:update

pnpm install 报错?

某些依赖模块需要编译安装,因此需要相关编译环境。如果没有对应环境则会编译失败, 且不同模块所需编译环境不同,因此具体问题需要具体分析。 以下列出已经碰到过的具体问题。

先尝试使用下面的命令更新 pnpm

pnpm i -g
# or
pnpm i -g pnpm
# or
npx pnpm i -g pnpm@latest

在 Windows 上安装 argon2 模块失败的处理方式

  • 安装 Visual Studio 2015 以上版本的组件,具体来说是 “使用 C++的桌面开发” 这个组件。(实际上包含 C++相关开发工具库的组件都可以)
  • 编译过程中遇到中文乱码时,在命令行中执行 chcp 437 后,再重新运行 install 命令。

WSL2 中 docker 无权访问?

在 Windows 中使用 wsl2 做为开发环境时,通过 docker compose up -d 启动 docker 出现如下错误:

permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get "http://%2Fvar%2Frun%2Fdocker.sock/v1.24/containers/json": dial unix /var/run/docker.sock: connect: permission denied

解决方法

将当前的用户添加到 docker 组中

# 添加 docker 用户组
sudo groupadd docker
# 将登录用户加入到 docker 用户组中
sudo gpasswd -a $USER docker
# 更新用户组
newgrp docker
# 测试 docker 命令是否正常使用
docker images

反向代理

参考教程:安装及使用

⚠️Nginx Proxy Manager(以下简称NPM)会用到80、443端口,所以本机不能占用(比如原来就有Nginx)

互联网使用请确保完成了域名解析