爱速搭支持私有部署,您可以部署在自己的内网,私有部署版本具备 SaaS 版本的所有功能。
环境需求
需要您的机器安装 Docker
,推荐版本为18.09
及以上,爱速搭可以运行在单机 Docker 环境上,如果需要集群化、高可用,可以使用 Docker 自带的 swarm 或者 k8s。
Docker 的安装建议参考官方文档,可以安装在Centos、Ubuntu、Windows、Mac等系统上。
生产环境推荐使用 Linux 操作系统,最小机器配置建议是 4 核 4G 内存。
安装 Docker
以 Mac 上安装 Docker 为例,打开Mac链接。
下载安装包
安装&启动
通过 Docker 桌面可以看到全部为启动状态:
单机版本
单机版本依赖 docker-compose
,在 Mac 和 Windows 下的 Docker 程序会自带,如果是 Linux 则需要执行以下命令来安装:
sudo curl -L "https://github.com/docker/compose/releases/download/1.26.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
首先选择一个目录作为爱速搭的安装目录,在这个目录下创建两个空目录 mysql-data
和 redis-data
,然后创建 docker-compose.yml
文件, docker-compose.yml
文件内容如下:
版本变更请前往更新日志
version: '3'
services:
web:
image: registry.baidubce.com/aisuda/aisuda:1.5.3
ports:
- '8090:8085'
environment:
# 数据库用户名
ISUDA_DB_USER: root
# 数据库密码,这个密码需要和下面 mysql 镜像里的一致
ISUDA_DB_PASSWORD: 'Q39sTi0i^9'
ISUDA_DB_NAME: aisuda
ISUDA_DB_HOST: db
ISUDA_DB_PORT: 3306
# id 加密密钥,建议修改
ISUDA_HASHID_SALT: 'aisuda'
# 数据库加密密钥,建议修改
ISUDA_ENCRYPT_KEY: 'B224AD82C6206D4DD0D49B3A17BD894D8EA2DC671372BA6B270D3B3AD599A45C'
# redis 地址和端口
ISUDA_REDIS_HOST: redis
ISUDA_REDIS_PORT: 6379
# ISUDA_REDIS_PASSWORD redis 密码,
# ISUDA_REDIS_ENABLE_READY_CHECK 是否开启 ready check 默认不开
# 邮件 smtp 地址,用于发验证码
ISUDA_EMAIL_HOST:
# 邮件 smtp 端口,比如 25
ISUDA_EMAIL_PORT:
# 邮件用户名和密码
ISUDA_EMAIL_USER:
ISUDA_EMAIL_PASS:
# 如果是 465 之类的 ssl 端口,请取消下面的注释
# ISUDA_EMAIL_SECURE: 1
# 邮件显示的发件人地址
ISUDA_EMAIL_FROM: 'xxx@xxx.com'
# 邮件 API,如果配置就优先使用,用于没有 smtp 的场景,细节请参考这篇文档后面的介绍
# ISUDA_EMAIL_API: http://xxx.com/emailapi
# 邮件 API 的签名密钥
# ISUDA_EMAIL_API_PASSWORD:
# license(可选,如果不填则需要在安装时提供)
ISUDA_LICENSE:
# 百度统计(可选)
BAIDU_TONGJI_CODE:
# Google Analytics(可选)
GA_MEASUREMENT_ID:
# 文件存储配置(可选)
# DRIVER 支持 bos 或 s3
ISUDA_FILE_STORAGE_DRIVER:
ISUDA_FILE_STORAGE_REGION:
ISUDA_FILE_STORAGE_BUCKET:
ISUDA_FILE_STORAGE_AK:
ISUDA_FILE_STORAGE_SK:
# s3 专有,使用路径而不是域名来访问 bucket
# ISUDA_FILE_STORAGE_S3FORCEPATHSTYLE:
# ES 操作日志 和 api 转发日志相关
# es 服务地址
ISUDA_ES_URL:
# es 服务帐号密码
ISUDA_ES_USERNAME:
ISUDA_ES_PASSWORD:
# 索引文件名(可选)
# ISUDA_SITE_LOG_INDEX: suda-log-{{date:YYYY-MM}}
# 是否开启站点日志记录
ISUDA_SITE_LOG_ENABLED:
# 默认 api 转发日志不存储 发送体内容,如果开启了,将会存储 json 和 普通表单数据 内容体
ISUDA_SITE_LOG_SAVE_REQUSET_PAYLOAD:
# 平台级别超级管理员邮箱(如果设置为 password 这就是必填的)
ISUDA_PLATFORM_ADMINISTRATORS: aa@aa.com,bb@bb.com
# 登录相关
# 默认的登录方式,加入配置成 oauth 表示只启用 oauth 登录方式,多个登录方式请用逗号隔开如:password,email,weixin,oauth,ldap
AUTH_ENABLED_LIST: password,email
# 普通用户默认登录密码,在开启 password 登录方式的时候有用
ISUDA_LOGIN_DEFAULT_PASSWORD: aisuda2021
# 管理员默认密码,在开启 password 登录方式的时候有用
ISUDA_PLATFORM_ADMINISTRATOR_DEFAULT_PASSWORD: admin2021
# oauth 登录相关
# oauth 授权接口地址
ISUDA_OAUTH_AUTHORIZE_URL:
# oauth token 获取接口地址
ISUDA_OAUTH_TOKEN_URL:
# oauth clientId
ISUDA_OAUTH_CLIENT_ID:
# oauth clientSecret
ISUDA_OAUTH_CLIENT_SECRET:
# oauth scope 默认为 email
ISUDA_OAUTH_SCOPE:
# oauth 获取 用户 profile 的接口地址
ISUDA_OAUTH_INFO_URL:
# 默认为 id, 假如你的 oauth 返回的 profile 中,id 为 user_id 请填写 user_id
ISUDA_OAUTH_ID_FIELD:
# 默认为 name, 假如你的 oauth 返回的 profile 中,用户名为 user_name 请填写 user_name
ISUDA_OAUTH_NAME_FIELD:
# 邮箱地址字段,如果你的 oauth 中返回了邮箱地址,请配置,如果没有可以不配置
ISUDA_OAUTH_EMAIL_FIELD:
# 邮箱后缀,当你的 oauth 没有返回邮箱地址,同时又不想有绑定邮箱这个动作,可以配置这个比如:baidu.com,这样会自动根据用户名拼接个假邮箱地址。
ISUDA_OAUTH_EMAIL_SUFFIX:
# 默认退出是 爱速搭的退出页,如果配置了,会跳转到对应 oauth 的退出页面。
ISUDA_OAUTH_LOGOUT_URL:
# ldap 相关,请看后面的说明
ISUDA_LDAP_URL:
ISUDA_LDAP_BIND_DN:
ISUDA_LDAP_BIND_CREDENTIALS:
ISUDA_LDAP_SEARCH_BASE:
ISUDA_LDAP_SEARCH_FILTER:
ISUDA_LDAP_EMAIL_ATTRIBUTE:
ISUDA_LDAP_NAME_ATTRIBUTE:
ISUDA_LDAP_NICKNAME_ATTRIBUTE:
# 默认不开启,开启后,应用导出将剔除敏感信息,但是意味着导入的时候你还需要额外去补填这些信息
ISUDA_DISABLE_EXPORT_SENSITIVE_INFO:
# 默认不开启,开启后,应用发布的时候,用开发环境权限覆盖运行态资源权限
ISUDA_OVERWRITE_RUNTIME_ACL:
# 默认不开启,开启后,发布环境的权限通过接口配置的接口返回的权限点进行控制
ISUDA_TAKEOVER_RUNTIME_ACL:
# 是否是 https,爱速搭的访问地址是 https 需要增加这个配置项
# ISUDA_IS_HTTPS: true
# 下面是自定义组件所需的 npm 本地镜像
# NPM_REGISTRY: https://registry.npm.taobao.org
# NPM_SEARCH: https://www.npmjs.com/search/suggestions
db:
image: registry.baidubce.com/aisuda/mysql:8
command:
[
'mysqld',
'--character-set-server=utf8mb4',
'--collation-server=utf8mb4_unicode_ci',
'--skip-character-set-client-handshake',
'--default-authentication-plugin=mysql_native_password',
'--max-allowed-packet=1073741824',
'--sort-buffer-size=512K',
'--max-connections=4096'
]
volumes:
- ./mysql-data:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: 'Q39sTi0i^9'
security_opt:
- seccomp:unconfined
redis:
image: registry.baidubce.com/aisuda/redis:5
command: ['redis-server', '--appendonly', 'yes']
volumes:
- ./redis-data:/data
建议修改其中的 MYSQL_ROOT_PASSWORD
、ISUDA_ENCRYPT_KEY
。
创建完文件后使用 docker-compose up
命令来启动,如下:
然后通过 docker ps
查看 mysql 所在的容器 id,使用 docker exec -it xxx
进入 MySQL 容器。
进入 MySQL 容器后使用 mysql -uroot -p'Q39sTi0i^9'
命令访问 MySQL,注意密码改成对应的。
然后使用 CREATE DATABASE aisuda CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci
命令来创建数据库。
通过show databases
可以查看当前的数据库。
接着访问 http://localhost:8090/install 就可以看到安装界面,按照引导执行。
如果确认没问题,可以用 ctrl+c 关闭,然后使用 docker-compose up -d
来后台持续运行。
试用 license
可以试用到 2022 年 6 月的 license。
BEE0crzxMVPzH2nBt7LkwYmSUMRtiNmkdhYnDGdJl+rQxNTwAIPMW+COKG5MvdfNZuRpuKSK0FGVcPVU2FaPtO+N+lqzC4W386FmdHDRilCW3ida/W1OTYyeVvreZaspRrigwp8BWfUeuO19yAOETnfUM6d2HRz337OEKfaOBH0slJwo34bAgq2zhmR9hi5a4ClznAJytBsvOqPmtgvKWWI39ssnuwo3/yWlRguhtdwlEQwpUIeqk5qwiB4Y6v31
邮箱登录
如果开启了邮箱登录,可以通过接收邮件验证码来登录,但需要配置 SMTP。
密码登录
如果开启了密码登录,管理员初始密码通过环境变量 ISUDA_PLATFORM_ADMINISTRATOR_DEFAULT_PASSWORD
设置。
管理员可以在「组织架构」中添加新成员,普通成员的初始密码是 ISUDA_LOGIN_DEFAULT_PASSWORD
,普通成员可以在个人中心修改密码。
管理员可以在组织架构中重置普通用户的密码。
LDAP 登录
配置 ldap 登录首先需要在 AUTH_ENABLED_LIST
里增加 ldap
,然后配置 ldap 服务相关的环境变量,目前主要有这些:
- ISUDA_LDAP_URL:ldap 服务地址,比如
ldap://xxx.com:389
- ISUDA_LDAP_BIND_DN:ldap 的 bind dn,比如
dc=example,dc=com
- ISUDA_LDAP_BIND_CREDENTIALS:ldap 的 bind credentials 密码
- ISUDA_LDAP_SEARCH_FILTER:search filter,比如
(uid={{username}})
- ISUDA_LDAP_SEARCH_BASE:search base,比如
dc=example,dc=com
接下来是用户信息字段配置,用户登录成功后 ladp 服务应该返回用户信息,对于爱速搭来说,最重要的是 email 字段,通过下面参数配置 email 到底是哪个字段
- ISUDA_LDAP_EMAIL_ATTRIBUTE:默认值是
mail
,如果 email 字段放email
下就改成email
下面两个字段可选,用于获取用户名和昵称
- ISUDA_LDAP_NAME_ATTRIBUTE:返回的用户名字段,默认是
uid
,如果不存在就用登录时输入的用户名 - ISUDA_LDAP_NICKNAME_ATTRIBUTE:返回的用户昵称字段,默认是
cn
如何部署在某个目录下?
默认情况下爱速搭需要使用独立域名,如果条件不允许,还可以通过如下环境变量让爱速搭运行在某个目录下,比如下面的配置
ISUDA_CONTEXT_PATH: '/aisuda'
这样就可以通过 /aisuda
这个目录来访问爱速搭平台了
如何在无网环境安装?
首先是 Docker,Windows 和 Mac 可以通过上面的安装包离线安装,而 Linux 需要参考这里下载二进制文件来安装。
其次是 Docker-Compose,参考文档,主要是在有网环境下,在这里下载对应环境的二进制文件。
接下来需要将镜像也保存为文件,方法是找一台能联网且有 Docker 的机器,运行如下命令:
docker pull registry.baidubce.com/aisuda/aisuda:1.5.3
docker pull registry.baidubce.com/aisuda/mysql:8
docker pull registry.baidubce.com/aisuda/redis:5
docker save -o suda.tar registry.baidubce.com/aisuda/aisuda:1.5.3
docker save -o mysql.tar registry.baidubce.com/aisuda/mysql:8
docker save -o redis.tar registry.baidubce.com/aisuda/redis:5
将这三个文件上传到需要安装的服务器上,执行如下命令:
docker load -i suda.tar
docker load -i mysql.tar
docker load -i redis.tar
同样通过类似的 docker load -i amis.tar 命令来加载。
amis 镜像内部端口是 8888。
分布式版本
爱速搭支持多实例部署,目前不限制实例数量,需要先装好 mysql 和 redis,然后通过环境变量连到远程的 mysql/redis 节点。
无 Docker 环境下的安装
参考这里。
后续版本升级
如果有版本升级,需要先停服务,运行 ./node_modules/.bin/pm2 kill
,然后清空目录,复制新的爱速搭版本。
对象存储的安装
爱速搭的文件存储默认放数据库中,数据库不适合放大型文件,因此推荐使用外部文件存储,可以是支持 S3 协议的云存储,或者自己部署兼容 S3 协议的存储服务,下面以 Minio 为例介绍。
使用 Minio 首先需要在平台启动时加下面这个环境变量
然后是安装 Minio,从 官网 下载二进制文件,然后使用如下命令启动:
MINIO_ROOT_USER=admin MINIO_ROOT_PASSWORD=password ./minio server ./data --console-address ":9001"
然后访问 9001 端口,输入前面设置的 root 用户名密码。
进入后先在 Account 中创建一个用户
创建完后会显示用户的 Access Key 和 Secret Key,记下它,然后在 Buckets 中创建一个新 Bucket
接着在爱速搭的对象存储中将填入前面创建的 ak、sk、bucket,而 Endpoint 默认是 9000 端口,另外需要开启「强制使用目录」功能。