Instalação do Servidor
Requisitos
Sistema Operacional
Todos os principais sistemas operacionais, incluindo Windows, Linux e macOS, são suportados.
Ambiente
Sugerimos fortemente o uso de Yarn 1.x para executar e construir o frontend do Casdoor. Usar NPM pode causar problemas de estilo da UI. Para mais detalhes, veja: casdoor#294.
Se sua rede falhar ao sincronizar diretamente os pacotes de dependência do Go com sucesso, você precisará usar um proxy Go configurando a variável de ambiente GOPROXY. Sugerimos fortemente o uso de: https://goproxy.cn/
Banco de dados
Casdoor usa XORM para se comunicar com o banco de dados. Baseado no Suporte a Drivers do Xorm, o Casdoor atualmente fornece suporte para os seguintes bancos de dados:
MySQL
MariaDB
PostgreSQL
CockroachDB
SQL Server
Oracle
SQLite 3
TiDB
Baixar
O código-fonte do Casdoor está hospedado no GitHub: https://github.com/casdoor/casdoor. Tanto o código backend em Go quanto o código frontend em React estão contidos em um único repositório.
Nome | Descrição | Idioma | Código-fonte |
---|---|---|---|
Frontend | UI de frontend web para Casdoor | JavaScript + React | https://github.com/casdoor/casdoor/tree/master/web |
Backend | Backend de API RESTful para Casdoor | Golang + Beego + XORM | https://github.com/casdoor/casdoor |
Casdoor suporta Go Modules
. Para baixar o código, basta clonar o código usando git:
cd path/to/folder
git clone https://github.com/casdoor/casdoor
Configuração
Configurar Banco de Dados
Casdoor suporta MySQL, MSSQL, SQLite3 e PostgreSQL. Por padrão, o Casdoor usa MySQL.
MySQL
Casdoor armazena informações de usuário, nó e tópico em um banco de dados MySQL chamado casdoor
. Se o banco de dados não existir, ele deve ser criado manualmente. A string de conexão do DB pode ser especificada em: https://github.com/casdoor/casdoor/blob/master/conf/app.conf
driverName = mysql
dataSourceName = root:123456@tcp(localhost:3306)/
dbName = casdoor
PostgreSQL
Antes de executar o Casdoor, você precisa preparar manualmente um banco de dados para PostgreSQL, pois o Casdoor requer a seleção de um banco de dados ao abrir o Postgres com xorm.
Supondo que você já tenha preparado um banco de dados chamado casdoor
, você deve especificar app.conf
assim:
driverName = postgres
dataSourceName = "user=postgres password=postgres host=localhost port=5432 sslmode=disable dbname=casdoor"
dbName = casdoor
dataSourceName
tenha um dbName
não vazio e também duplicar o nome do banco de dados para o campo dbname
como mostrado no exemplo acima. :::CockroachDB
CockroachDB também pode ser usado com o driver do PostgreSQL e tem a mesma configuração que o 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 o SQLite3, você deve especificar app.conf
assim:
driverName = sqlite
dataSourceName = "file:casdoor.db?cache=shared"
dbName = casdoor
Via arquivo Ini
Casdoor pode ser configurado via um único arquivo: conf/app.conf, que por padrão contém o seguinte conteúdo:
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
é o nome da aplicação, que atualmente não tem uso prático.httpport
é a porta que sua aplicação backend está ouvindo.runmode
pode ser definido comodev
ouprod
.SessionOn
determina se a sessão será habilitada e está habilitada por padrão.driverName
,dataSourceName
edbName
foram introduzidos anteriormente. Por favor, veja Configurar Banco de Dados para detalhes.verificationCodeTimeout
define o tempo de expiração do código de verificação. Após a expiração, o usuário precisa obtê-lo novamente.
Como iniciante, você só precisa modificar dois itens: driverName
e dataSourceName
com base no seu banco de dados. Este banco de dados será usado pelo Casdoor para armazenar todos os dados, incluindo usuários, organizações e aplicações.
tableNamePrefix
é o prefixo da tabela ao usar um adaptador.showSql
determina se as instruções SQL serão mostradas no logger se o nível de log for maior que INFO.redisEndpoint
é o endpoint do Redis usado pelo armazenamento de sessão do Beego. Se este parâmetro estiver vazio, os dados da sessão serão armazenados localmente como arquivos na pasta./tmp
. Para usar o Redis como armazenamento de sessão do Beego, o valor seria algo como:redis.example.com:6379
. Se o Redis estiver implantado localmente, você pode usarlocalhost:6379
. Se a senha do Redis estiver habilitada, useredis.example.com:6379,db,senha
. Veja mais detalhes em: https://github.com/beego/beedoc/blob/master/en-US/module/session.md#saving-provider-config.defaultStorageProvider
é o nome do serviço de armazenamento de arquivos padrão. Se você precisa usar serviços de armazenamento de arquivos, como upload de avatar, você precisa configurar um provedor de armazenamento e aplicá-lo em sua aplicação. Veja armazenamento para detalhes.isCloudIntranet
é usado para identificar se o endpoint do seu provedor é um endpoint de intranet.authState
é o nome da aplicação de autorização. Este parâmetro será verificado ao fazer login.socks5Proxy
é o endereço IP do servidor proxy SOCKS. Defina a porta do proxy porque temos serviços relacionados ao Google ou usamosGoogle
,GitHub
,Facebook
,LinkedIn
ouSteam
como Provedores OAuth, que podem ser restritos pela rede em algumas áreas.initScore
é a pontuação inicial de cada usuário. Cada usuário tem um atributo de pontuação. A pontuação é usada pelo Casnode e não controla nada no Casdoor.logPostOnly
é usado para determinar se apenas o método post é usado para adicionar um registro.origin
é o nome de domínio do backend de origem.staticBaseUrl
é o endereço da imagem estática usada quando o sistema inicializa o banco de dados.enableGzip
aceitará e responderá com codificação gzip se o cabeçalho da solicitação incluirAccept-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.
Via Variáveis de Ambiente
Todos os itens de configuração definidos pelo Casdoor no arquivo ini mencionado acima podem ser configurados via variáveis de ambiente, bem como alguns dos itens de configuração do beego (httpport, appname).
Por exemplo, quando você tenta iniciar o Casdoor, você pode usar algo assim para passar a configuração via variáveis de ambiente:
appname=casbin go run main.go
Além disso, derivativos de export
também são um método possível. Os nomes das variáveis ambientais devem corresponder exatamente aos nomes que você deseja usar no arquivo ini.
Observação: configurações em variáveis ambientais podem substituir as configurações no arquivo ini.
Executar
Atualmente, existem dois métodos para iniciar, e você pode escolher um de acordo com sua situação.
Modo de Desenvolvimento
Backend
O backend Go do Casdoor roda na porta 8000 por padrão. Você pode iniciar o backend Go com o seguinte comando:
go run main.go
Depois que o servidor estiver rodando com sucesso, você pode iniciar a parte do frontend.
Frontend
O frontend do Casdoor é um projeto muito clássico Create-React-App (CRA). Ele roda na porta 7001
por padrão. Use os seguintes comandos para executar o frontend:
cd web
yarn install
yarn start
Visite http://localhost:7001 no seu navegador. Faça login no painel do Casdoor com a conta de administrador global padrão: built-in/admin
.
admin
123
Modo de Produção
Backend
Compile o código backend do Casdoor Go em um executável e inicie-o.
Para Linux:
go build
./casdoor
Para Windows:
go build
casdoor.exe
Frontend
Compile o código frontend do Casdoor em recursos estáticos (arquivos .html, .js, .css):
cd web
yarn install
yarn build
Visite http://localhost:8000 no seu navegador. Faça login no painel do Casdoor com a conta de administrador global padrão: built-in/admin
.
admin
123
Para usar outra porta, por favor edite conf/app.conf
e modifique httpport
, depois reinicie o backend Go.
No ambiente dev, o frontend é executado por yarn run
na porta 7001, então se você quiser ir para a página de login do Casdoor, você precisa configurar o link do Casdoor como http://localhost:7001.
No ambiente prod, os arquivos do frontend são primeiro compilados por yarn build
e servidos na porta 8000, então se você quiser ir para a página de login do Casdoor, você precisa configurar o link do Casdoor como https://your-casdoor-url.com:8000 (Se você estiver usando um proxy reverso, você precisa configurar o link como seu domínio).
Pegue Nosso Fórum Oficial Casnode como Exemplo
Casnode usa o Casdoor para lidar com autenticação.
Quando estamos testando o Casnode no ambiente dev, configuramos o serverUrl
como http://localhost:7001, então quando testamos a funcionalidade de login e cadastro usando o Casdoor, ele irá para o localhost 7001, que é a porta do Casdoor.
E quando colocamos o Casnode no ambiente prod, configuramos o serverUrl
como https://door.casdoor.com, então os usuários podem se inscrever ou se cadastrar usando o Casdoor.