[TOC]
see egg docs for more detail.
- run.sh配置 如下命令,服务于可执行权限
chmod +x run.sh
run.sh
内容如下
#!/usr/bin/env bash
export ENABLE_NODE_LOG=YES
# 自定义
export NODE_LOG_DIR=/path/to/logs
export TZ=Asia/Shanghai
export EGG_SERVER_ENV=local
export EGG_WORKERS=1
export NODE_ENV=dev
# 测试环境
export MYSQL_DB_NAME=你的本地数据库名称
export MYSQL_DB_HOST=你的本地数据库host
export MYSQL_DB_PORT=3306
export MYSQL_DB_USERNAME=root
export MYSQL_DB_PASSWORD=你的本地数据库密码
export REDIS_PORT=6379
export REDIS_HOST=127.0.0.1
export REDIS_DB=0
egg-bin dev --port=7001
- deploy.sh 配置
如下命令,服务于可执行权限
chmod +x deploy.sh
deploy.sh
内容如下
#!/usr/bin/env bash
export TZ=Asia/Shanghai
export EGG_SERVER_ENV=prod
export EGG_WORKERS=1
export NODE_ENV=production
export MYSQL_DB_NAME=正式数据库名称
export MYSQL_DB_HOST=正式数据库地址
export MYSQL_DB_PORT=3306
export MYSQL_DB_USERNAME=数据库登录用户
export MYSQL_DB_PASSWORD=数据库密码
export REDIS_PORT=6379
export REDIS_HOST=127.0.0.1
export REDIS_DB=0
git pull
# npm install
changedFiles="$(git diff-tree -r --name-only --no-commit-id ORIG_HEAD HEAD)"
checkForChangedFiles() {
echo "$changedFiles" | grep --quiet "$1" && eval "$2"
}
packageJsonHasChanged() {
echo "Changes to package.json detected, installing updates"
npm i
}
checkForChangedFiles package.json packageJsonHasChanged
./node_modules/.bin/egg-scripts stop
./node_modules/.bin/egg-scripts start --port=7001 --daemon --env=prod --title=egg-server-mallapi
-
config.local.js
和config.prod.js
配置 在config/
文件夹中新建该文件并按照如下配置'use strict'; module.exports = { mp: { appId: '', // 公众平台应用编号 appSecret: '', // 公众平台应用密钥 mchId: '', // 商户平台商家编号 apiKey: '', // 商户支付密钥 notifyUrl: '' // 支付结果回调地址 }, oss: { region: 'oss-cn-beijing', accessKeyId: '', accessKeySecret: '', bucket: '' }, alinode: { appid: '', secret: '' } };
npm i
./run dev
open http://localhost:7001/
./deploy.sh
- Use
npm run lint
to check code style. - Use
npm test
to run unit test. Usenpm run autod
to auto detect dependencies upgrade, see autod for more detail.
migrations仅用于sql变更的时候,建表的sql都存在项目目录下 /sql
文件夹中
执行migration的同时要记得,修改对应的model
-
第一步创建migration文件
sequelize migration:create --name TABLE_NAME_ACTION_COLUMN_XXXXX
执行结果如下
sequelize migration:create --name user_add_column_of_password_and_mobile_phone Sequelize CLI [Node: 12.18.3, CLI: 6.2.0, ORM: 6.3.5] migrations folder at "/path/to/project/database/migrations" already exists. New migration was created at /path/to/project/database/migrations/20201128110339-user_add_column_of_password_and_mobile_phone.js . ➜ egg (main) ✗ sequelize db:migrate Sequelize CLI [Node: 12.18.3, CLI: 6.2.0, ORM: 6.3.5]
-
在
/path/to/project/database/migrations/
对应的文件中添加要执行的操作操作const transaction = await queryInterface.sequelize.transaction(); try { await queryInterface.addColumn(// 加一个字段 'users',// 表名 'mobile_phone', // 要加的字段 {// 配置 type: Sequelize.DataTypes.STRING(20), defaultValue: '', allowNull: false }, { transaction } ); await transaction.commit();
-
执行
sequelize db:migrate
执行结果如下
➜ egg (main) ✗ sequelize db:migrate Sequelize CLI [Node: 12.18.3, CLI: 6.2.0, ORM: 6.3.5] Loaded configuration file "database/config.js". Using environment "development". == 20201128110339-user_add_column_of_password_and_mobile_phone: migrating ======= == 20201128110339-user_add_column_of_password_and_mobile_phone: migrated (0.174s)
如果返回以上结果代表已执行成功
不需要进行token校验的路由需要在config/config.default.js
中的tokenRequired.whiteListRoutes
进行配置
- 安装
alinode
, Node.js 性能平台使用 tnvm 进行版本维护,采用如下命令安装 tnvm。 Linux:
wget -O- https://raw.githubusercontent.com/aliyun-node/tnvm/master/install.sh | bash
macOs:
curl https://raw.githubusercontent.com/aliyun-node/tnvm/master/install.sh | bash
- 将 tnvm 添加到系统命令。根据上面命令最后的提示,针对不同操作系统,进行手工操作。 linux 系统下:
source ~/.bashrc
macOS(使用zsh的话):
source ~/.zshrc
- 利用 tnvm 安装需要版本的运行时。请参考 Node.js性能平台运行时版本 选择合适的运行时版本。
查看远端版本
tnvm ls-remote alinode
- 安装需要版本:版本对应关系 请根据版本对应关系,选择合适(与当前应用使用的 Node.js 版本一致)的 alinode 版本。
tnvm install alinode-vx.y.z
- 使用vx.y.z的运行时
tnvm use alinode-vx.y.z
参考: https://help.aliyun.com/document_detail/60902.html?spm=a2c4g.11186623.6.554.3c4c1e380dL02c
- 安装
egg-alinode
插件
npm i egg-alinode --save
-
启用插件
// config/plugin.js exports.alinode = { enable: true, package: 'egg-alinode' };
参考: https://help.aliyun.com/document_detail/60907.html?spm=a2c4g.11186623.6.555.4d261c0eVNUZpZ