服务器安装
安装要求
操作系统
所有主要的操作系统,包括Windows,Linux和macOS,都得到支持。
环境
我们强烈建议使用 Yarn 1.x 来运行和构建Casdoor前端。 使用NPM可能会导致界面样式问题。 欲了解更多详情,请见: casdoor#294。
如果您的网络无法直接同步Go依赖包,您需要配置GOPROXY环境变量。 我们强烈建议使用: https://goproxy.cn/
数据库
Casdoor使用 XORM 与数据库进行交互。 基于 Xorm Drivers, 当前支持的数据库包括:
MySQL
MariaDB
PostgreSQL
CockroachDB
SQL Server
Oracle
SQLite 3
TiDB
下载
Casdoor 的源代码托管在 GitHub: https://github.com/casdoor/casdoor。 转到后端代码和 React 前端代码都包含在一个仓库中。
名称 | 描述 | 语言 | 源代码 |
---|---|---|---|
前端 | Casdoor的网页前端界面 | JavaScript + React | https://github.com/casdoor/casdoor/tree/master/web |
后端 | Casdoor的ResTful API 后端 | Golang + Beego + XORM | https://github.com/casdoor/casdoor |
Casdoor支持 Go Modules
。 要下载代码,只需使用git克隆代码:
cd /文件夹路径/
git clone https://github.com/casdoor/casdoor
配置
配置数据库
Casdoor 支持MySQL、MSSQL、SQLite3和PostgreSQL。 默认情况下,Casto使用MySQL。
MySQL
Casdoor将会把users,nodes和topics信息存储在一个名为casdoor
的MySQL数据库中。 如果数据库不存在,则需手动创建。 可以在以下位置指定数据库连接字符串 https://github.com/casdoor/blob/master/conf/app.conf
driverName = mysql
dataSourceName = root:123456@tcp(localhost:3306)/
dbName = casdoor
PostgreSQL
在运行 Cassdoor 之前,您需要手动准备PostgreSQL 数据库,因为Castor 需要在使用 xorm 打开 Postgres 时指定一个数据库。
假设你已经准备好了一个名为casdoor
的数据库,你应该像这样指定app.conf
:
driverName = postgres
dataSourceName = "user=postgres password=postgres host=localhost port=5432 sslmode=disable dbname=casdoor"
dbName = casdoor
dataSourceName
有一个非空的dbName
,并且也在上面的示例中为dbname
字段复制数据库名称。 :::CockroachDB
CockroachDB也可以与PostgreSQL驱动程序一起使用,并且配置与PostgreSQL相同。
driverName = postgres
dataSourceName = "user=postgres password=postgres host=localhost port=5432 sslmode=disable dbname=casdoor serial_normalization=virtual_sequence"
dbName = casdoor
SQLite3
要配置SQLite3,您应该像这样指定app.conf
:
driverName = sqlite
dataSourceName = "file:casdoor.db?cache=shared"
dbName = casdoor
通过 Ini 文件配置
Casdoor可以通过单个文件进行配置:conf/app.conf,该文件默认包含以下内容:
appname = casdoor
httpport = 8000
runmode = dev
SessionOn = true
copyrequestbody = true
driverName = mysql
dataSourceName = root:123456@tcp(localhost:3306)/
dbName = casdoor
tableNamePrefix =
showSql = false
redisEndpoint =
defaultStorageProvider =
isCloudIntranet = false
authState = "casdoor"
socks5Proxy = "127.0.0.1:10808"
verificationCodeTimeout = 10
initScore = 2000
logPostOnly = true
origin = "https://door.casdoor.com"
staticBaseUrl = "https://cdn.casbin.org"
enableGzip = true
inactiveTimeoutMinutes =
appname
是应用程序名称,目前没有实际用途。httpport
是您的后端应用程序正在监听的端口。runmode
可以设置为dev
或prod
。SessionOn
决定是否启用会话,默认情况下是启用的。driverName
、dataSourceName
和dbName
已在前面介绍过。 请参阅配置数据库以获取详细信息。verificationCodeTimeout
设置了验证码的过期时间。 过期后,用户需要再次获取。
作为初学者,你只需要修改两项:driverName
和 dataSourceName
,根据你的数据库进行修改。 这个数据库将被Casdoor用来存储所有数据,包括用户、组织和应用程序。
tableNamePrefix
是使用适配器时表的前缀。showSql
决定了如果日志级别大于INFO,是否在日志器上显示SQL语句。redisEndpoint
后填写Redis地址,被Beego用于session存储 如果此参数为空,会话数据将作为文件在./tmp
文件夹中本地存储。 要使用Redis作为Beego会话存储,值应该是类似于:redis.example.com:6379
。 如果Redis是在本地部署的,你可以使用localhost:6379
。 如果启用了Redis密码,请使用redis.example.com:6379,db,password
。 在以下链接查看更多详情:https://github.com/beego/beedoc/blob/master/en-US/module/session.md#saving-provider-config。defaultStorageProvider
是默认的文件存储服务名称。 如果您需要使用文件存储服务,例如头像上传
, 您需要设置存储提供商,并在您的应用
中应用它。 详情请参阅 存储isCloudIntranet
用于识别您的提供者端点是否为内网端点。authstate
是授权应用程序名称。 登录时将检查该参数。socks5Proxy
是 SOCKS 代理服务器 IP 地址。 设置代理端口,因为我们有与Google相关的服务,或者使用Google
、GitHub
、Facebook
、LinkedIn
或Steam
作为OAuth提供商,这在某些地区可能会受到网络限制。initscore
是每个用户的最初分数。 每个用户都有一个得分属性。 分数由Casnode使用,并且在Casdoor中不控制任何东西。logPostOnly
用于确定是否仅使用post方法来添加记录。origin
是origin形式的后端域名staticBaseUrl
是系统初始化数据库时使用的静态图像的地址。- `
enableGzip
会在请求头包含Accept-Encoding=gzip
时接受并以gzip编码进行响应。 inactiveTimeoutMinutes
sets the maximum number of minutes of inactivity. If the inactivity time reaches this value, then casdoor will log the user out. Empty value or value less than or equal to 0 means there is no limit on the user's inactivity time.
通过环境变量配置
Casdoor在上述ini文件中定义的所有配置项都可以通过环境变量进行配置,以及一些beego配置项(如httpport,appname)。
例如,当你尝试启动Casdoor时,你可以使用类似这样的方式通过环境变量传递配置:
appname=casbin go run main.go
此外,export
衍生品也是一种可能的方法。 环境变量的名称应与您想在ini文件中使用的名称完全匹配。
注意:环境变量中的配置可以覆盖ini文件中的配置。
运行
目前有两种启动方法,您可以根据自己的情况选择一种。
开发模式
后端
Casdoor的Go后端默认在8000端口运行。 您可以使用以下命令启动Go后端:
go run main.go
服务器成功运行后,您可以开始进行前端部分。
前端
Casdoor的前端是一个非常经典的Create-React-App (CRA)项目。 它默认在端口7001
上运行。 使用以下命令来运行前端:
cd web
yarn install
yarn start
在您的浏览器中访问 http://localhost:7001。 使用默认的全局管理员账户:built-in/admin
登录Casdoor控制面板。
admin
123
生产模式
后端
将Casdoor Go后端代码编译成可执行文件并启动它。
对于Linux:
go build
./casdoor
适用于Windows:
go build
casdoor.exe
前端
将Casdoor前端代码构建成静态资源(.html,.js,.css文件):
cd web
yarn install
yarn build
在您的浏览器中访问 http://localhost:8000。 使用默认的全局管理员账户:built-in/admin
登录Casdoor控制面板。
admin
123
要使用另一个端口,请编辑conf/app.conf
并修改httpport
,然后重新启动Go后端。
在dev环境中,前端由yarn run
在7001端口运行,所以如果你想要进入Casdoor登录页面,你需要将Casdoor链接设置为http://localhost:7001。
在prod环境中,前端文件首先由yarn build
构建,并在8000端口上提供服务,因此,如果你想要进入Casdoor登录页面,你需要将Casdoor链接设置为https://your-casdoor-url.com:8000(如果你正在使用反向代理,你需要将链接设置为你的域名)。
以我们的官方论坛Casnode为例
Casnode使用Casdoor处理身份验证。
当我们在dev环境中测试Casnode时,我们将serverUrl
设置为http://localhost:7001,所以当我们使用Casdoor测试登录和注册功能时,它将会跳转到localhost 7001,这是Casdoor的端口。
当我们把Casnode放入生产环境时,我们将serverUrl
设置为https://door.casdoor.com,所以用户可以使用Casdoor登录或注册。