التخطي إلى المحتوى الرئيسي

تثبيت الخادم

المتطلبات

نظام التشغيل

جميع أنظمة التشغيل الرئيسية، بما في ذلك Windows وLinux وmacOS، مدعومة.

البيئة

معلومات

نوصي بشدة باستخدام Yarn 1.x لتشغيل وبناء واجهة المستخدم الأمامية لـ Casdoor. قد يتسبب استخدام NPM في مشاكل في أنماط واجهة المستخدم. لمزيد من التفاصيل، انظر: casdoor#294.

تحذير

إذا فشلت شبكتك في مزامنة حزم تبعيات Go مباشرة بنجاح، تحتاج إلى استخدام بروكسي Go عن طريق تكوين متغير البيئة GOPROXY. نوصي بشدة باستخدام: https://goproxy.cn/

قاعدة البيانات

Casdoor يستخدم XORM للتواصل مع قاعدة البيانات. استنادًا إلى دعم برامج تشغيل Xorm، يوفر Casdoor حاليًا الدعم لقواعد البيانات التالية:

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

تحميل

شيفرة مصدر Casdoor مستضافة على GitHub: https://github.com/casdoor/casdoor. كل من شيفرة الواجهة الخلفية Go وشيفرة الواجهة الأمامية React موجودة في مستودع واحد.

الاسمالوصفاللغةشيفرة المصدر
واجهة المستخدم الأماميةواجهة المستخدم الأمامية للويب لـ CasdoorJavaScript + Reacthttps://github.com/casdoor/casdoor/tree/master/web
الواجهة الخلفيةواجهة برمجة التطبيقات الخلفية RESTful لـ CasdoorGolang + Beego + XORMhttps://github.com/casdoor/casdoor

Casdoor يدعم Go Modules. لتحميل الشيفرة، ببساطة انسخ الشيفرة باستخدام git:

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

التكوين

تكوين قاعدة البيانات

يدعم Casdoor قواعد بيانات MySQL، MSSQL، SQLite3، و PostgreSQL. بشكل افتراضي، يستخدم Casdoor قاعدة بيانات MySQL.

MySQL

يخزن Casdoor معلومات المستخدمين والعقد والمواضيع في قاعدة بيانات MySQL باسم casdoor. إذا لم تكن قاعدة البيانات موجودة، يجب إنشاؤها يدويًا. يمكن تحديد سلسلة اتصال قاعدة البيانات على: https://github.com/casdoor/casdoor/blob/master/conf/app.conf

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

PostgreSQL

قبل تشغيل Casdoor، تحتاج إلى إعداد قاعدة بيانات يدويًا لـ PostgreSQL، حيث يتطلب Casdoor تحديد قاعدة بيانات عند فتح Postgres باستخدام xorm.

بافتراض أنك قد أعددت بالفعل قاعدة بيانات تسمى 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 يمكن تعيينه إلى dev أو prod.
  • SessionOn يحدد ما إذا كان سيتم تمكين الجلسة وهو ممكن بشكل افتراضي.
  • driverName، dataSourceName، و dbName تم تقديمها في وقت سابق. يرجى الاطلاع على تكوين قاعدة البيانات للتفاصيل.
  • verificationCodeTimeout يحدد وقت انتهاء صلاحية رمز التحقق. بعد انتهاء الصلاحية، يحتاج المستخدم إلى الحصول عليه مرة أخرى.

كمبتدئ، تحتاج فقط إلى تعديل عنصرين: driverName و dataSourceName بناءً على قاعدة البيانات الخاصة بك. ستستخدم هذه القاعدة بيانات Casdoor لتخزين جميع البيانات، بما في ذلك المستخدمين والمنظمات والتطبيقات.

  • tableNamePrefix هو بادئة الجدول عند استخدام محول.
  • showSql يحدد ما إذا كان سيتم عرض بيانات SQL على السجل إذا كان مستوى السجل أعلى من INFO.
  • redisEndpoint هو نقطة نهاية Redis المستخدمة بواسطة تخزين جلسات Beego. إذا كان هذا البارامتر فارغًا، سيتم تخزين بيانات الجلسة محليًا كملفات في مجلد ./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 هو عنوان IP لخادم البروكسي SOCKS. اضبط منفذ الوكيل لأن لدينا خدمات متعلقة بـ Google أو استخدم Google، GitHub، Facebook، LinkedIn، أو Steam كمزودي OAuth، والتي قد تكون مقيدة بالشبكة في بعض المناطق.
  • initScore هو النقاط الأولية لكل مستخدم. لكل مستخدم خاصية نقاط. النقاط تستخدم من قبل Casnode ولا تتحكم في أي شيء في Casdoor.
  • logPostOnly يستخدم لتحديد ما إذا كانت طريقة الإرسال فقط تستخدم لإضافة سجل.
  • origin هو اسم نطاق الواجهة الخلفية الأصلي.
  • staticBaseUrl هو عنوان الصورة الثابتة المستخدمة عندما يقوم النظام بتهيئة قاعدة البيانات.
  • enableGzip سيقبل ويستجيب بترميز gzip إذا تضمن رأس الطلب Accept-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.

عبر متغيرات البيئة

جميع عناصر التكوين التي حددها Casdoor في ملف ini المذكور أعلاه يمكن تكوينها عبر متغيرات البيئة، بالإضافة إلى بعض عناصر تكوين beego (httpport، appname).

على سبيل المثال، عندما تحاول بدء Casdoor، يمكنك استخدام شيء مثل هذا لتمرير التكوين عبر متغيرات البيئة:

appname=casbin go run main.go

بالإضافة إلى ذلك، مشتقات export هي أيضًا طريقة ممكنة. يجب أن تتطابق أسماء متغيرات البيئة تمامًا مع الأسماء التي تريد استخدامها في ملف ini.

ملاحظة: يمكن للتكوينات في متغيرات البيئة أن تتجاوز التكوينات في ملف ini.

تشغيل

هناك حاليًا طريقتان للبدء، ويمكنك اختيار واحدة وفقًا لوضعك.

وضع التطوير

الواجهة الخلفية

يعمل الخلفية Go لـ Casdoor على المنفذ 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 إلى ملف تنفيذي وابدأ تشغيله.

لنظام لينكس:

go build
./casdoor

لنظام ويندوز:

go build
casdoor.exe

الواجهة الأمامية

قم ببناء كود واجهة Casdoor الأمامية إلى موارد ثابتة (.html، .js، .css files):

cd web
yarn install
yarn build

قم بزيارة http://localhost:8000 في متصفحك. قم بتسجيل الدخول إلى لوحة تحكم Casdoor باستخدام حساب المدير العالمي الافتراضي: built-in/admin.

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 للتعامل مع المصادقة.

عندما نقوم بتجربة Casnode في بيئة dev، نضبط serverUrl كـ http://localhost:7001، لذا عندما نختبر وظائف تسجيل الدخول والتسجيل باستخدام Casdoor، سيتم الذهاب إلى localhost 7001، وهو منفذ Casdoor.

وعندما نضع Casnode في بيئة prod، نضبط serverUrl كـ https://door.casdoor.com، لذا يمكن للمستخدمين تسجيل الدخول أو التسجيل باستخدام Casdoor.

مثال Casnode