部署安装casdoor统一认证服务
要求
操作系统
支持所有主流操作系统,包括 Windows、Linux 和 macOS。
环境
Go 1.17+
Node.js LTS (18)
Yarn 1.x
数据库
Casdoor使用XORM与数据库通信。基于 Xorm 驱动程序支持,Casdoor 目前支持以下数据库:
MySQL
MariaDB
PostgreSQL
CockroachDB
SQL Server
Oracle
SQLite 3
TiDB
下载
Casdoor 的源代码托管在 GitHub 上。Go 后端代码和 React 前端代码都包含在一个源代码库中。
Name | Description | Language | Source code |
---|---|---|---|
Frontend | Web frontend UI for Casdoor | JavaScript + React | github repository |
Backend | RESTful API backend for Casdoor | Golang + Beego + XORM | github repository |
Casdoor 支持 Go 模块。要下载代码,只需使用 git 克隆代码即可:
$ cd path/to/folder
$ git clone https://github.com/casdoor/casdoor
配置
配置数据库
Casdoor支持MySQL、MSSQL、SQLite3和PostgreSQL。默认情况下,Casdoor 使用 MySQL。这里,我们使用PostgreSQL。
Casdoor 在名为 casdoor
的数据库中存储用户、节点和主题信息。如果数据库不存在,则必须手动创建。
假设你已经准备了一个名为 casdoor
的数据库,像下面这样配置 app.conf
:
driverName = postgres
dataSourceName = "user=postgres password=postgres host=localhost port=5432 sslmode=disable dbname=casdoor"
dbName =
通过 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
- appname 是应用程序名称,目前没有实际用途。
- httpport 是后端应用程序监听的端口。
- runmode 可以设置为 dev 或 prod。
- SessionOn 决定是否启用会话,默认为启用。
- driverName、dataSourceName 和 dbName 在前面已经介绍过。有关详细信息,请参阅配置数据库。
- verificationCodeTimeout 设置验证码的过期时间。过期后,用户需要重新获取验证码。
作为初学者,您只需根据您的数据库修改两个项目:driverName 和 dataSourceName。Casdoor 将使用该数据库存储所有数据,包括用户、组织和应用程序。
- tableNamePrefix 是使用适配器时表的前缀。
- showSql 决定日志级别大于 INFO 时是否在日志中显示 SQL 语句。
- redisEndpoint 是 Beego 会话存储使用的 Redis 端点。如果该参数为空,会话数据将以文件形式存储在本地的 ./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 是起源后端域名。
- staticBaseUrl 是系统初始化数据库时使用的静态图像地址。
- enableGzip 将在请求头包含 Accept-Encoding=gzip 时接受并响应 gzip 编码。
通过环境变量
Casdoor 在上述 ini 文件中定义的所有配置项,以及一些 beego 配置项(httpport、appname),都可以通过环境变量进行配置。
例如,当你尝试启动 Casdoor 时,可以使用类似下面的方法通过环境变量传递配置:
$ appname=casbin go run main.go
此外,导出衍生变量也是一种可行的方法。环境变量的名称应与你想在 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。使用默认的全局管理员账户登录 Casdoor 面板:built-in/admin。
admin
123
生产模式
后台
将 Casdoor Go 后端代码编译成可执行文件并启动它。
对于 Linux:
$ go build
$ ./casdoor
可以编写一个 systemd service
文件,使 systemd
守护服务,开机自动运行,必要时自动重启。
适用于 Windows:
> go build
> casdoor.exe
前台
将 Casdoor 前端代码构建为静态资源(.html、.js、.css 文件):
$ cd web
$ yarn install
$ yarn build
在浏览器中访问 http://localhost:8000。使用默认的全局管理员账户登录 Casdoor 面板:built-in/admin。
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 进行身份验证。
当我们在开发环境中测试 Casnode 时,我们将 serverUrl 设置为 http://localhost:7001,因此当我们使用 Casdoor 测试登录和注册功能时,它将转到 localhost 7001,即 Casdoor 端口。
而当我们将 Casnode 放入 prod 环境时,我们会将 serverUrl 设置为 https://door.casdoor.com,这样用户就可以使用 Casdoor 登录或注册了。
export const config = {
serverUrl: "https://door.casdoor.com", //这是指前端使用casdoor时,需要进行的配置文件的内容,可以查看[示例](https://github.com/casdoor/casdoor-nodejs-react-example/blob/master/src/Setting.js):
clientId: "014ae4bd048734ca2dea",
organizationName: "casbin",
appName: "app-casnode",
redirectPath: "/callback", // in accordance with casdoor configuration
};