UNPKG

@opentiny/tiny-toolkit-pro

Version:

TinyPro Vue:开箱即用、前后端分离的 Vue 后台管理模板

241 lines (170 loc) 7.62 kB
# Tiny Pro 快速启动 ## 环境准备 请确保您安装了`nodejs`, `npm`, `tiny-cli` ```bash tiny init pro ``` 运行上述代码后按照提示输入配置 ``` ? 请输入项目名称: tiny-pro ? 请输入项目描述: 基于TinyPro套件创建的中后台系统 * 请选择您希望使用的客户端技术栈: vue * 请选择您希望使用的服务端技术栈: Nest.js * 请选择你想要的构建工具: Vite * 请确保已安装数据库服务(参考文档 https://www.opentiny.design/tiny-cli/docs/toolkits/pro#database): 已完成数据库服务安装,开始配置 * 请选择数据库类型: MySql * 请输入数据库地址: localhost * 请输入数据库端口: 3306 * 请输入数据库名称: ospp-nest * 请输入登录用户名: root * 请输入密码: [hidden] ``` 初始化完成后,项目结构应该为 ``` tiny-pro nestJs # 后端服务 web # 前端服务 ``` ## 后端启动 后端服务支持`docker启动``命令启动`, 执行操作前请先确保所处位置为`tiny-pro/nestJS` ### Docker启动 在运行`docker compose up -d`之前,请先修改`.env`环境变量文件,示例如下 ```properties # 数据库IP DATABASE_HOST = 'mysql' # 数据库端口 DATABASE_PORT = 3306 # 数据库用户名 DATABASE_USERNAME = 'root' # 数据库密码 DATABASE_PASSWORD = 'root' # 数据库名 (请确保该库存在) DATABASE_NAME = 'ospp-nest' # 请阅读: https://www.typeorm.org/migrations # 线上环境请关闭 DATABASE_SYNCHRONIZE = false DATABASE_AUTOLOADENTITIES = true # jwt secret AUTH_SECRET = 'secret' REDIS_SECONDS = 7200 # redis ip REDIS_HOST = 'redis' # redis 端口 REDIS_PORT = 6379 # token过期时间 EXPIRES_IN = '2h' # 分页默认起始页 (一般可以不修改) PAGINATION_PAGE = 1 # 分页默认大小 PAGINATION_LIMIT = 10 ``` 修改完`.env`文件后,请执行`docker compose up -d` 当执行`docker ps``STATUS`列均为`Up`时,表示后端启动成功 ``` CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES b76f3ebebe81 nestjs-back "docker-entrypoint.s…" 12 minutes ago Up 11 minutes 0.0.0.0:3000->3000/tcp nestjs-back-1 32ae9982b96a redis "docker-entrypoint.s…" 12 minutes ago Up 12 minutes 0.0.0.0:6379->6379/tcp nestjs-redis-1 94f3b55b7b2b mysql:8 "docker-entrypoint.s…" 12 minutes ago Up 12 minutes 0.0.0.0:3306->3306/tcp, 33060/tcp nestjs-mysql-1 ``` ### 命令启动 #### 依赖安装 ```bash npm i ``` #### 环境准备 #### 安装MySQL 请参考[MySQL 8.0安装](https://dev.mysql.com/doc/mysql-installation-excerpt/8.0/en/windows-installation.html) #### 安装Redis服务 请参考[Redis 官方手册](https://redis.io/docs/latest/operate/oss_and_stack/install/install-redis/install-redis-on-windows/) 请确保您的机器已经安装了`Mysql``Redis`服务。接下来,我们需要配置`.env`环境变量文件。`.env`文件示例如下 ```properties # 数据库IP DATABASE_HOST = 'localhost' # 数据库端口 DATABASE_PORT = 3306 # 数据库用户名 DATABASE_USERNAME = 'root' # 数据库密码 DATABASE_PASSWORD = 'root' # 数据库名 (请确保该库存在) DATABASE_NAME = 'ospp-nest' # 请阅读: https://www.typeorm.org/migrations # 线上环境请关闭 DATABASE_SYNCHRONIZE = false DATABASE_AUTOLOADENTITIES = true # jwt secret AUTH_SECRET = 'secret' REDIS_SECONDS = 7200 # redis ip REDIS_HOST = 'localhost' # redis 端口 REDIS_PORT = 6379 # token过期时间 EXPIRES_IN = '2h' # 分页默认起始页 (一般可以不修改) PAGINATION_PAGE = 1 # 分页默认大小 PAGINATION_LIMIT = 10 ``` #### 启动项目 在启动项目前请您做好如下检查 - [ ] MySQL服务可以正常访问 - [ ] Redis服务可以正常访问 - [ ] MySQL中存在`.env`文件中`DATABASE_NAME`字段定义的数据库,且该数据库为空 - [ ] 您已经运行了 `node migrate.js` 命令且出现了 `Now you can safely launched the project` 字样。 - [ ] `.env`文件中`DATABASE_SYNCHRONIZE``false` - [ ] `tiny-pro`后端依赖已经安装 完成上述检查后,您可以在`tiny-pro/nestJs`下执行`npm run start`. ``` LOG [NestApplication] Nest application successfully started +11ms Application is running on: http://[::1]:3000 ``` 当出现上述文本时候即为后端启动成功。 ## 前端启动 ### 依赖安装 ```bash cd tiny-pro/web npm i ``` ### 项目启动 在项目启动前,请您确保后端服务已经启动成功,且可以正常访问。我们列出了一个启动前检查清单,您可以对照检查清单来进行启动前检查 - [ ] 后端服务启动成功 - [ ] 前端依赖安装完成 - [ ] `npm run mock`启动mock服务 上述列表全部检查完成后,运行 `npm run start` 即可启动前端服务,浏览器会自行打开项目,当出现下图时则代表启动成功。 ![启动成功](./images/tiny-pro-show.png) ## 前端打包 对于前端项目打包,只需要执行`npm run build`即可 ## 后端打包 ### 命令打包 运行`npm run build`即可 ### docker打包 > 这里只阐述默认 tiny-pro 后端打包,如果您进行了修改(例如增加了某些node-gyp依赖,请修改`dockerfile`手动安装`node-gyp`系统级前置依赖) 运行 `docker build -t tinypro:latest` 即可 ## 遇到困难? 加官方小助手微信 opentiny-official,加入技术交流群 ## 常见问题 ### 后端docker启动时出现 `Error response from daemon: Ports are not available: exposing port TCP 0.0.0.0:3306 -> 0.0.0.0:0: listen tcp 0.0.0.0:3306: bind: Only one usage of each socket address (protocol/network address/port) is normally permitted.` 这是因为宿主机的某些应用占用了`3306`端口, 请先释放宿主机该端口后手动启动MySQL服务 ### 后端使用`docker compose up -d`启动时候,出现I/O timeout错误 这主要是因为网络问题,您可以手动执行下述命令 ``` docker pull node:alpine docker pull node:lts ``` 输入完上述命令后再次执行`docker compose up -d`即可。 ### 提示 `Lock file exists, if you want init agin, please remove dist or dist/lock` 为了避免重复初始化,系统会在第一次初始化的时候在`dist`目录下新建`app/lock`文件,如果您需要再次初始化,那么请您删除`dist/app`或者直接删除`dist`文件夹 ### docker 部署时数据库超时 在新版本中我们加入了 `wait4x` 来检查 `mysql` 容器情况。但这并不能完全避免因为 `mysql` 启动过慢而导致的容器启动失败。在业务容器中我们设定的轮询时间为2s, 最多等待60s. 如果超时请按照如下检查表逐一排查 1. MySQL容器是否启动成功? 2. MySQL容器是否初始化成功? 3. 业务容器环境变量是否正确? ### 前端跨域问题如何解决 对于开发环境来说,可以直接修改`dev-server``proxy`. 例如`vite`工具的`server.proxy` ### 代码无法提交 您可以选择移除husky或根据[Angular 规范](https://zj-git-guide.readthedocs.io/zh-cn/latest/message/Angular%E6%8F%90%E4%BA%A4%E4%BF%A1%E6%81%AF%E8%A7%84%E8%8C%83/)书写commit信息 ### 页面部署后刷新404 请移步[Vue Router服务器部署指南](https://router.vuejs.org/guide/essentials/history-mode.html#Example-Server-Configurations)