跳到主要内容

平台Git源码部署

0.前置条件

请确保环境内

  • 已安装有 Node 14+(推荐v14.21.0)npm或者yarn等包管理工具,推荐 npm 7.x 以上
  • 配置并启动了数据库环境,MySql 5.7 以上,如果安装的是 MySQL8.x,注意密码加密方式设置为:Legacy Password Encryption,切记不要设置为 Strong Password Encryption

1.下载源码

git clone https://github.com/mybricks/apaas.git my-apaas

2.切换目录

cd my-apaas

3.安装依赖

npm install
注意

如果npm版本太低可能会无法触发一键安装钩子,建议升级到npm 7.x以上

如若无法升级npm版本,可以手动调用 npm run postinstall 来安装依赖

4.配置环境变量

项目根目录下 参考 config.example.js 创建 config.js 文件,并配置以下环境变量

module.exports = {
/**
* @description 必填 数据库配置,目前仅支持 mysql 数据库
*/
database: {
dbType: 'MYSQL',
host: '',
user: '',
password: '',
port: 3000,
database: ''
},
/**
* @description 必填 平台配置
*/
platformConfig: {
/**
* @description 必填 pm2 进程名字
*/
appName: 'mybricks-apaas',
/**
* @description 必填 服务端口号
*/
port: 3102,
/**
* @description [可选项] 如果是容器化技术必填,各类持久化文件的读写位置,不填写时默认取当前路径的根目录,使用绝对路径
*/
externalFilesStoragePath: '',
/**
* @description [可选项] 建议设置,用于登录的时候生成jwt token的 加盐值或者私钥,可以填写一个不容易生成的随机值
*/
jwtSecretOrPrivateKey: '',
/**
* @description [可选项] 网站前端各个位置的标题文案
*/
title: 'MyBricks开放应用平台',
/**
* @description [可选项] 网站前端页面的 favicon,支持http链接以及base64
*/
favicon: '',
/**
* @description [可选项] 网站页面内的平台图标,支持http链接以及base64
*/
logo: '',
/**
* @description [可选项] 指定平台运行时动态安装应用时如何安装应用的node_modules依赖,默认值为 npm i --registry=https://registry.npmmirror.com --production
*/
installCommand: 'npm i --registry=https://registry.npmmirror.com --production',

/**
* @description [可选项] 指定平台是否包含 用户主动登出 功能
*/
openLogout: true,
/**
* @description [可选项] 指定平台是否包含 个人信息设置 功能
*/
openUserInfoSetting: true,
/**
* @description [可选项] 务必谨慎操作!离线模式开关,如果部署的服务器无法访问外网的(如myBricks的中心化服务 以及 各类Cdn),请开启此开关,开启后会开启离线模式
*/
isPureIntranet: false,
},
/**
* @description [可选项] 管理员账号与密码,初始化数据库时会使用此账号密码
*/
adminUser: {
email: '',
password: '',
},
/**
* @description [可选项] 平台开放接口的配置,没有用到openApi可以不需要配置
*/
openApi: {
/**
* @description 生成 openApi token所使用的私钥
*/
tokenSecretOrPrivateKey: '',
/**
* @description 授权的开放应用
*/
accessApps: [
{
/**
* @description 应用的唯一标识
*/
appId: ''
}
]
}
}
信息

config文件支持区分开发 / 生产环境,开发环境优先取config.development.js,生产环境则优先取config.production.js

5.部署平台

生产环境 下部署平台

[可选操作] 环境检测,建议第一次部署都执行一下

# 脚本会执行以下操作
# 1. 检测生产环境的各类环境信息和配置是否符合规范,
# 2. 在 配置了数据库且数据库以及表不存在 的情况下,初始化数据库和表,同时会将 adminUser 信息添加为管理员
# 3. 将预置的 静态资源 下载并复制到 externalFilesStoragePath 下,如果没配置则是默认路径

npm run prepare:start
提示

什么时候需要重新执行此命令?

  1. 数据库刚配置好,需要初始化表
  2. adminUser 刚配置好,需要添加管理员信息到数据库
  3. 配置了 externalFilesStoragePath 后,需要将预置的静态资源复制到指定位置

编译 / 构建产物

npm run build

启动

npm run start
提示

启动后服务将使用 npx pm2 来管理服务,可以使用 npx pm2 的各类命令

附录

可供参考的 nginx 配置

下面主要列出一些需要关注的配置项

client_max_body_size 200m; # 限制上传大小为 200MB

location / {
#... 以上省略通用配置信息

# 缓存相关,将信息带到原始服务器,用于协商缓存
proxy_pass_header Cache-Control;
proxy_pass_header Expires;
proxy_pass_header ETag;
proxy_pass_header Last-Modified;
proxy_set_header If-Modified-Since $http_if_modified_since;
proxy_set_header If-None-Match $http_if_none_match;

# Gzip相关配置
gzip on;
# 启用 Gzip 压缩的最小文件大小。对所有大于 1k 的文件启用压缩,文件太小压缩后反而可能变大
gzip_min_length 1k;
gzip_http_version 1.1;
# 压缩等级,1 表示最快速(但压缩比最低),9 表示最慢(但压缩比最高)
gzip_comp_level 2;
gzip_types text/css application/javascript text/javascript text/plain application/json application/xml;
# 是否在 HTTP 响应头中添加 Vary: Accept-Encoding
gzip_vary on;
gzip_proxied expired no-cache no-store private auth;
gzip_disable "MSIE [1-6]\.";
}