跳到主内容

服务器安装

安装要求

操作系统

所有主要的操作系统,包括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 + Reacthttps://github.com/casdoor/casdoor/tree/master/web
后端Casdoor的ResTful API 后端Golang + Beego + XORMhttps://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
对于 PostgreSQL,请确保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可以设置为devprod
  • SessionOn决定是否启用会话,默认情况下是启用的。
  • driverNamedataSourceNamedbName已在前面介绍过。 请参阅配置数据库以获取详细信息。
  • verificationCodeTimeout 设置了验证码的过期时间。 过期后,用户需要再次获取。

作为初学者,你只需要修改两项:driverNamedataSourceName,根据你的数据库进行修改。 这个数据库将被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相关的服务,或者使用GoogleGitHubFacebookLinkedInSteam作为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后端。

Casdoor 端口详情

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登录或注册。

Casnode 示例