Instalación del Servidor
Requisitos
Sistema Operativo
Todos los principales sistemas operativos, incluyendo Windows, Linux y macOS, son compatibles.
Entorno
Sugerimos encarecidamente utilizar Yarn 1.x para ejecutar y construir el frontend de Casdoor. Usar NPM podría causar problemas de estilo de la interfaz de usuario. Para más detalles, ver: casdoor#294.
Si tu red no logra sincronizar directamente los paquetes de dependencia de Go con éxito, necesitas usar un proxy de Go configurando la variable de entorno GOPROXY. Recomendamos encarecidamente utilizar: https://goproxy.cn/
Base de datos
Casdoor utiliza XORM para comunicarse con la base de datos. Basado en Soporte de Drivers de Xorm, Casdoor actualmente proporciona soporte para las siguientes bases de datos:
MySQL
MariaDB
PostgreSQL
CockroachDB
SQL Server
Oracle
SQLite 3
TiDB
Descargar
El código fuente de Casdoor está alojado en GitHub: https://github.com/casdoor/casdoor. Tanto el código backend de Go como el código frontend de React están contenidos en un solo repositorio.
Nombre | Descripción | Idioma | Código fuente |
---|---|---|---|
Frontend | Interfaz de usuario frontend web para Casdoor | JavaScript + React | https://github.com/casdoor/casdoor/tree/master/web |
Backend | Backend API RESTful para Casdoor | Golang + Beego + XORM | https://github.com/casdoor/casdoor |
Casdoor soporta Go Modules
. Para descargar el código, simplemente clona el código usando git:
cd path/to/folder
git clone https://github.com/casdoor/casdoor
Configuración
Configurar Base de Datos
Casdoor soporta MySQL, MSSQL, SQLite3 y PostgreSQL. Por defecto, Casdoor utiliza MySQL.
MySQL
Casdoor almacena información de usuarios, nodos y temas en una base de datos MySQL llamada casdoor
. Si la base de datos no existe, debe ser creada manualmente. La cadena de conexión de la DB se puede especificar en: https://github.com/casdoor/casdoor/blob/master/conf/app.conf
driverName = mysql
dataSourceName = root:123456@tcp(localhost:3306)/
dbName = casdoor
PostgreSQL
Antes de ejecutar Casdoor, necesitas preparar manualmente una base de datos para PostgreSQL, ya que Casdoor requiere seleccionar una base de datos al abrir Postgres con xorm.
Suponiendo que ya has preparado una base de datos llamada casdoor
, deberías especificar app.conf
de esta manera:
driverName = postgres
dataSourceName = "user=postgres password=postgres host=localhost port=5432 sslmode=disable dbname=casdoor"
dbName = casdoor
dataSourceName
tenga un dbName
no vacío y también duplique el nombre de la base de datos para el campo dbname
como se muestra en el ejemplo anterior. :::CockroachDB
CockroachDB también se puede utilizar con el controlador de PostgreSQL y tiene la misma configuración que PostgreSQL.
driverName = postgres
dataSourceName = "user=postgres password=postgres host=localhost port=5432 sslmode=disable dbname=casdoor serial_normalization=virtual_sequence"
dbName = casdoor
SQLite3
Para configurar SQLite3, deberías especificar app.conf
de esta manera:
driverName = sqlite
dataSourceName = "file:casdoor.db?cache=shared"
dbName = casdoor
A través de archivo Ini
Casdoor se puede configurar a través de un solo archivo: conf/app.conf, que por defecto contiene el siguiente contenido:
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
es el nombre de la aplicación, que actualmente no tiene uso práctico.httpport
es el puerto en el que tu aplicación backend está escuchando.runmode
se puede configurar adev
oprod
.SessionOn
determina si habilitar la sesión y está habilitado por defecto.driverName
,dataSourceName
ydbName
fueron introducidos anteriormente. Por favor, ver Configurar Base de Datos para más detalles.verificationCodeTimeout
establece el tiempo de expiración del código de verificación. Después de la expiración, el usuario necesita obtenerlo de nuevo.
Como principiante, solo necesitas modificar dos elementos: driverName
y dataSourceName
basado en tu base de datos. Esta base de datos será utilizada por Casdoor para almacenar todos los datos, incluyendo usuarios, organizaciones y aplicaciones.
tableNamePrefix
es el prefijo de la tabla al usar un adaptador.showSql
determina si mostrar las declaraciones SQL en el logger si el nivel de log es mayor que INFO.redisEndpoint
es el punto final de Redis utilizado por el almacenamiento de sesión de Beego. Si este parámetro está vacío, los datos de la sesión se almacenarán localmente como archivos en la carpeta./tmp
. Para usar Redis como almacenamiento de sesión de Beego, el valor sería algo como:redis.example.com:6379
. Si Redis está desplegado localmente, puedes usarlocalhost:6379
. Si la contraseña de Redis está habilitada, usaredis.example.com:6379,db,password
. Ver más detalles en: https://github.com/beego/beedoc/blob/master/en-US/module/session.md#saving-provider-config.defaultStorageProvider
es el nombre del servicio de almacenamiento de archivos predeterminado. Si necesitas utilizar servicios de almacenamiento de archivos como la carga de avatares, necesitas configurar un proveedor de almacenamiento y aplicarlo en tu aplicación. Ver almacenamiento para más detalles.isCloudIntranet
se utiliza para identificar si tu punto final del proveedor es un punto final de intranet.authState
es el nombre de la aplicación de autorización. Este parámetro será verificado al iniciar sesión.socks5Proxy
es la dirección IP del servidor proxy SOCKS. Establece el puerto del proxy porque tenemos servicios relacionados con Google o usamosGoogle
,GitHub
,Facebook
,LinkedIn
oSteam
como Proveedores de OAuth, que pueden estar restringidos por la red en algunas áreas.initScore
es la puntuación inicial de cada usuario. Cada usuario tiene un atributo de puntuación. La puntuación es utilizada por Casnode y no controla nada en Casdoor.logPostOnly
se utiliza para determinar si solo se utiliza el método post para agregar un registro.origin
es el nombre de dominio del backend de origen.staticBaseUrl
es la dirección de la imagen estática utilizada cuando el sistema inicializa la base de datos.enableGzip
aceptará y responderá con codificación gzip si el encabezado de la solicitud incluyeAccept-Encoding=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.
A través de Variables de Entorno
Todos los elementos de configuración definidos por Casdoor en el archivo ini mencionado anteriormente se pueden configurar a través de variables de entorno, así como algunos de los elementos de configuración de beego (httpport, appname).
Por ejemplo, cuando intentas iniciar Casdoor, puedes usar algo como esto para pasar la configuración a través de variables de entorno:
appname=casbin go run main.go
Además, los derivados de export
también son un método posible. Los nombres de las variables ambientales deben coincidir exactamente con los nombres que deseas utilizar en el archivo ini.
Nota: las configuraciones en variables ambientales pueden sobrescribir las configuraciones en el archivo ini.
Ejecutar
Actualmente hay dos métodos para iniciar, y puedes elegir uno según tu situación.
Modo de Desarrollo
Backend
El backend de Go de Casdoor se ejecuta en el puerto 8000 por defecto. Puedes iniciar el backend de Go con el siguiente comando:
go run main.go
Después de que el servidor esté funcionando con éxito, puedes iniciar la parte frontend.
Frontend
El frontend de Casdoor es un proyecto muy clásico de Create-React-App (CRA). Se ejecuta en el puerto 7001
por defecto. Usa los siguientes comandos para ejecutar el frontend:
cd web
yarn install
yarn start
Visita http://localhost:7001 en tu navegador. Inicie sesión en el panel de Casdoor con la cuenta de administrador global predeterminada: built-in/admin
.
admin
123
Modo Producción
Backend
Construya el código del backend de Casdoor Go en un ejecutable e inícielo.
Para Linux:
go build
./casdoor
Para Windows:
go build
casdoor.exe
Frontend
Construya el código del frontend de Casdoor en recursos estáticos (archivos .html, .js, .css):
cd web
yarn install
yarn build
Visite http://localhost:8000 en su navegador. Inicie sesión en el panel de Casdoor con la cuenta de administrador global predeterminada: built-in/admin
.
admin
123
Para usar otro puerto, por favor edite conf/app.conf
y modifique httpport
, luego reinicie el backend de Go.
En el entorno dev, el frontend se ejecuta por yarn run
en el puerto 7001, así que si quiere ir a la página de inicio de sesión de Casdoor, necesita configurar el enlace de Casdoor como http://localhost:7001.
En el entorno prod, los archivos del frontend se construyen primero por yarn build
y se sirven en el puerto 8000, así que si quiere ir a la página de inicio de sesión de Casdoor, necesita configurar el enlace de Casdoor como https://your-casdoor-url.com:8000 (Si está utilizando un proxy inverso, necesita configurar el enlace como su dominio).
Tome Nuestro Foro Oficial Casnode como Ejemplo
Casnode utiliza Casdoor para manejar la autenticación.
Cuando estamos probando Casnode en el entorno dev, configuramos el serverUrl
como http://localhost:7001, así que cuando probamos la funcionalidad de inicio de sesión y registro usando Casdoor, irá a localhost 7001, que es el puerto de Casdoor.
Y cuando ponemos Casnode en el entorno prod, configuramos el serverUrl
como https://door.casdoor.com, así los usuarios pueden iniciar sesión o registrarse usando Casdoor.