Passer au contenu principal

Installation du serveur

Exigences

Système d'exploitation

Tous les principaux systèmes d'exploitation, y compris Windows, Linux et macOS, sont pris en charge.

Environnement

info

Nous suggérons fortement d'utiliser Yarn 1.x pour exécuter et construire le frontend de Casdoor. L'utilisation de NPM pourrait causer des problèmes de style de l'interface utilisateur. Pour plus de détails, voir : casdoor#294.

prudence

Si votre réseau ne parvient pas à synchroniser directement les packages de dépendance Go avec succès, vous devez utiliser un proxy Go en configurant la variable d'environnement GOPROXY. Nous recommandons fortement d'utiliser : https://goproxy.cn/

Base de données

Casdoor utilise XORM pour communiquer avec la base de données. Basé sur Support des pilotes Xorm, Casdoor offre actuellement un support pour les bases de données suivantes :

  • MySQL
  • MariaDB
  • PostgreSQL
  • CockroachDB
  • SQL Server
  • Oracle
  • SQLite 3
  • TiDB

Télécharger

Le code source de Casdoor est hébergé sur GitHub : https://github.com/casdoor/casdoor. Le code backend Go et le code frontend React sont contenus dans un seul dépôt.

NomDescriptionLangueCode source
FrontendInterface utilisateur frontend Web pour CasdoorJavaScript + Reacthttps://github.com/casdoor/casdoor/tree/master/web
BackendBackend API RESTful pour CasdoorGolang + Beego + XORMhttps://github.com/casdoor/casdoor

Casdoor prend en charge Go Modules. Pour télécharger le code, clonez simplement le code en utilisant git :

cd path/to/folder
git clone https://github.com/casdoor/casdoor

Configuration

Configurer la base de données

Casdoor prend en charge MySQL, MSSQL, SQLite3 et PostgreSQL. Par défaut, Casdoor utilise MySQL.

MySQL

Casdoor stocke les informations des utilisateurs, des nœuds et des sujets dans une base de données MySQL nommée casdoor. Si la base de données n'existe pas, elle doit être créée manuellement. La chaîne de connexion DB peut être spécifiée à : https://github.com/casdoor/casdoor/blob/master/conf/app.conf

driverName = mysql
dataSourceName = root:123456@tcp(localhost:3306)/
dbName = casdoor

PostgreSQL

Avant d'exécuter Casdoor, vous devez préparer manuellement une base de données pour PostgreSQL, car Casdoor nécessite de sélectionner une base de données lors de l'ouverture de Postgres avec xorm.

En supposant que vous avez déjà préparé une base de données appelée casdoor, vous devriez spécifier app.conf comme ceci :

driverName = postgres
dataSourceName = "user=postgres password=postgres host=localhost port=5432 sslmode=disable dbname=casdoor"
dbName = casdoor
Pour PostgreSQL, assurez-vous que dataSourceName a un dbName non vide et aussi dupliquez le nom de la base de données pour le champ dbname comme montré dans l'exemple ci-dessus. :::

CockroachDB

CockroachDB peut également être utilisé avec le pilote PostgreSQL et a la même configuration que PostgreSQL.

driverName = postgres
dataSourceName = "user=postgres password=postgres host=localhost port=5432 sslmode=disable dbname=casdoor serial_normalization=virtual_sequence"
dbName = casdoor

SQLite3

Pour configurer SQLite3, vous devriez spécifier app.conf comme ceci :

driverName = sqlite
dataSourceName = "file:casdoor.db?cache=shared"
dbName = casdoor

Via le fichier Ini

Casdoor peut être configuré via un seul fichier : conf/app.conf, qui par défaut contient le contenu suivant :

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 est le nom de l'application, qui actuellement n'a pas d'utilisation pratique.
  • httpport est le port sur lequel votre application backend écoute.
  • runmode peut être réglé sur dev ou prod.
  • SessionOn détermine s'il faut activer la session et est activé par défaut.
  • driverName, dataSourceName, et dbName ont été introduits plus tôt. Veuillez voir Configurer la base de données pour plus de détails.
  • verificationCodeTimeout définit le temps d'expiration du code de vérification. Après expiration, l'utilisateur doit l'obtenir à nouveau.

En tant que débutant, vous n'avez besoin de modifier que deux éléments : driverName et dataSourceName en fonction de votre base de données. Cette base de données sera utilisée par Casdoor pour stocker toutes les données, y compris les utilisateurs, les organisations et les applications.

  • tableNamePrefix est le préfixe de la table lors de l'utilisation d'un adaptateur.
  • showSql détermine s'il faut afficher les instructions SQL sur le logger si le niveau de log est supérieur à INFO.
  • redisEndpoint est le point de terminaison Redis utilisé par le stockage de session Beego. Si ce paramètre est vide, les données de session seront stockées localement sous forme de fichiers dans le dossier ./tmp. Pour utiliser Redis comme stockage de session Beego, la valeur serait quelque chose comme : redis.example.com:6379. Si Redis est déployé localement, vous pouvez utiliser localhost:6379. Si un mot de passe Redis est activé, utilisez redis.example.com:6379,db,password. Voir plus de détails à : https://github.com/beego/beedoc/blob/master/en-US/module/session.md#saving-provider-config.
  • defaultStorageProvider est le nom du service de stockage de fichiers par défaut. Si vous avez besoin d'utiliser des services de stockage de fichiers tels que le téléchargement d'avatar, vous devez configurer un fournisseur de stockage et l'appliquer dans votre application. Voir stockage pour plus de détails.
  • isCloudIntranet est utilisé pour identifier si votre point de terminaison de fournisseur est un point de terminaison intranet.
  • authState est le nom de l'application d'autorisation. Ce paramètre sera vérifié lors de la connexion.
  • socks5Proxy est l'adresse IP du serveur proxy SOCKS. Définissez le port proxy car nous avons des services liés à Google ou utilisons Google, GitHub, Facebook, LinkedIn, ou Steam comme fournisseurs OAuth, qui peuvent être restreints par le réseau dans certaines zones.
  • initScore est le score initial de chaque utilisateur. Chaque utilisateur a un attribut de score. Le score est utilisé par Casnode et ne contrôle rien dans Casdoor.
  • logPostOnly est utilisé pour déterminer si seule la méthode post est utilisée pour ajouter un enregistrement.
  • origin est le nom de domaine backend d'origine.
  • staticBaseUrl est l'adresse de l'image statique utilisée lorsque le système initialise la base de données.
  • enableGzip acceptera et répondra avec un encodage gzip si l'en-tête de la requête comprend Accept-Encoding=gzip.

Via les variables d'environnement

Tous les éléments de configuration définis par Casdoor dans le fichier ini mentionné ci-dessus peuvent être configurés via des variables d'environnement, ainsi que certains des éléments de configuration de beego (httpport, appname).

Par exemple, lorsque vous essayez de démarrer Casdoor, vous pouvez utiliser quelque chose comme ceci pour passer la configuration via des variables d'environnement :

appname=casbin go run main.go

De plus, les dérivés de export sont également une méthode possible. Les noms des variables environnementales doivent correspondre exactement aux noms que vous souhaitez utiliser dans le fichier ini.

Remarque : les configurations dans les variables environnementales peuvent remplacer les configurations dans le fichier ini.

Exécuter

Il existe actuellement deux méthodes pour démarrer, et vous pouvez en choisir une selon votre situation.

Mode Développement

Backend

Le backend Go de Casdoor s'exécute sur le port 8000 par défaut. Vous pouvez démarrer le backend Go avec la commande suivante :

go run main.go

Après que le serveur fonctionne avec succès, vous pouvez démarrer la partie frontend.

Frontend

Le frontend de Casdoor est un projet très classique Create-React-App (CRA). Il s'exécute sur le port 7001 par défaut. Utilisez les commandes suivantes pour exécuter le frontend :

cd web
yarn install
yarn start

Visitez http://localhost:7001 dans votre navigateur. Connectez-vous au tableau de bord Casdoor avec le compte administrateur global par défaut : built-in/admin.

admin
123

Mode Production

Backend

Construisez le code backend Go de Casdoor en un exécutable et démarrez-le.

Pour Linux :

go build
./casdoor

Pour Windows :

go build
casdoor.exe

Frontend

Construisez le code frontend de Casdoor en ressources statiques (fichiers .html, .js, .css) :

cd web
yarn install
yarn build

Visitez http://localhost:8000 dans votre navigateur. Connectez-vous au tableau de bord Casdoor avec le compte administrateur global par défaut : built-in/admin.

admin
123
conseil

Pour utiliser un autre port, veuillez éditer conf/app.conf et modifier httpport, puis redémarrez le backend Go.

Détails du port Casdoor

Dans l'environnement dev, le frontend est exécuté par yarn run sur le port 7001, donc si vous voulez aller à la page de connexion Casdoor, vous devez définir le lien Casdoor comme http://localhost:7001.

Dans l'environnement prod, les fichiers frontend sont d'abord construits par yarn build et servis sur le port 8000, donc si vous voulez aller à la page de connexion Casdoor, vous devez définir le lien Casdoor comme https://your-casdoor-url.com:8000 (Si vous utilisez un proxy inverse, vous devez définir le lien comme votre domaine).

Prenez notre forum officiel Casnode comme exemple

Casnode utilise Casdoor pour gérer l'authentification.

Lorsque nous testons Casnode dans l'environnement dev, nous définissons le serverUrl comme http://localhost:7001, donc lorsque nous testons les fonctionnalités de connexion et d'inscription en utilisant Casdoor, cela nous amène au port 7001 de localhost, qui est le port de Casdoor.

Et lorsque nous mettons Casnode dans l'environnement prod, nous définissons le serverUrl comme https://door.casdoor.com, donc les utilisateurs peuvent se connecter ou s'inscrire en utilisant Casdoor.

Exemple Casnode