ข้ามไปยังเนื้อหาหลัก

การติดตั้งเซิร์ฟเวอร์

ความต้องการ

ระบบปฏิบัติการ

รองรับระบบปฏิบัติการหลักทั้งหมด รวมถึง Windows, Linux และ macOS

สภาพแวดล้อม

ข้อมูล

เราขอแนะนำอย่างยิ่งให้ใช้ Yarn 1.x เพื่อรันและสร้างฟรอนต์เอนด์ Casdoor การใช้ NPM อาจทำให้เกิดปัญหาเกี่ยวกับสไตล์ UI สำหรับรายละเอียดเพิ่มเติม ดูที่: casdoor#294

คำเตือน

หากเครือข่ายของคุณไม่สามารถซิงค์แพ็คเกจการพึ่งพา Go ได้โดยตรงอย่างสำเร็จ คุณจำเป็นต้องใช้พร็อกซี Go โดยการกำหนดค่าตัวแปรสภาพแวดล้อม GOPROXY เราขอแนะนำอย่างยิ่งให้ใช้: https://goproxy.cn/

ฐานข้อมูล

Casdoor ใช้ XORM เพื่อสื่อสารกับฐานข้อมูล Based on Xorm Drivers Support, Casdoor currently provides support for the following databases:

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

ดาวน์โหลด

ซอร์สโค้ดของ Casdoor ถูกโฮสต์บน GitHub: https://github.com/casdoor/casdoor ทั้งโค้ดแบ็กเอนด์ Go และโค้ดฟรอนต์เอนด์ React อยู่ในที่เก็บเดียวกัน

ชื่อคำอธิบายภาษาซอร์สโค้ด
ฟรอนต์เอนด์UI ฟรอนต์เอนด์เว็บสำหรับ CasdoorJavaScript + Reacthttps://github.com/casdoor/casdoor/tree/master/web
แบ็กเอนด์แบ็กเอนด์ API แบบ 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
ข้อมูล

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
สำหรับ CockroachDB อย่าลืมเพิ่ม serial_normalization=virtual_sequence ใน dataSourceName ตามที่แสดงในตัวอย่างด้านบน มิฉะนั้น คุณจะได้รับข้อผิดพลาดเกี่ยวกับฐานข้อมูลที่มีอยู่แล้วเมื่อบริการเริ่มต้นหรือรีสตาร์ท โปรดทราบว่าสิ่งนี้ต้องเพิ่มก่อนที่จะสร้างฐานข้อมูล :::

SQLite3

ในการกำหนดค่า SQLite3 คุณควรระบุ app.conf ดังนี้:

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

ผ่านไฟล์ Ini

Casdoor can be configured via a single file: conf/app.conf. As a beginner, you only need to modify driverName and dataSourceName based on your database (see Configure Database). Below is a complete reference of all configuration options:

ParameterDefault ValueDescription
appnamecasdoorApplication name (currently has no practical use)
httpport8000Port that the backend application listens on
runmodedevRunning mode: dev or prod
copyrequestbodytrueWhether to copy request body for later use
driverNamemysqlDatabase driver (e.g., mysql, postgres, sqlite). See Configure Database
dataSourceNameroot:123456@tcp(localhost:3306)/Database connection string. See Configure Database
dbNamecasdoorDatabase name used by Casdoor
tableNamePrefix(empty)Prefix for table names when using an adapter
showSqlfalseShow SQL statements in logger when log level is greater than INFO
redisEndpoint(empty)Redis endpoint for session storage (e.g., localhost:6379). If empty, sessions are stored locally in ./tmp. For password: host:port,db,password
defaultStorageProvider(empty)Default storage provider name for file uploads (e.g., avatars). See storage
isCloudIntranetfalseWhether provider endpoints use intranet addresses
authState"casdoor"Authorization application name checked during login
socks5Proxy"127.0.0.1:10808"SOCKS5 proxy address for OAuth providers (Google, GitHub, etc.) that may be blocked
verificationCodeTimeout10Verification code expiration time in minutes
initScore0Initial score assigned to new users (used by Casnode, not Casdoor)
logPostOnlytrueWhether to log only POST requests
isUsernameLoweredfalseWhether to convert usernames to lowercase
origin(empty)Backend origin URL (e.g., https://door.casdoor.com)
originFrontend(empty)Frontend origin URL if different from backend
staticBaseUrl"https://cdn.casbin.org"CDN URL for static assets used during database initialization
isDemoModefalseEnable demo mode restrictions
batchSize100Batch size for bulk operations
enableErrorMaskfalseWhether to mask detailed error messages
enableGziptrueAccept and respond with gzip encoding when client supports it
inactiveTimeoutMinutes(empty)Auto-logout timeout in minutes. Empty or ≤0 means no timeout
ldapServerPort389Port for LDAP server
ldapsCertId""Certificate ID for LDAPS connections
ldapsServerPort636Port for LDAPS (LDAP over SSL) server
radiusServerPort1812Port for RADIUS server
radiusDefaultOrganization"built-in"Default organization for RADIUS authentication
radiusSecret"secret"Shared secret for RADIUS authentication
quota{"organization": -1, "user": -1, "application": -1, "provider": -1}Resource quotas (-1 means unlimited)
logConfig{"adapter":"file", "filename": "logs/casdoor.log", "maxdays":99999, "perm":"0770"}Logging configuration (adapter, file path, rotation, permissions)
initDataNewOnlyfalseWhether to initialize data only for new installations
initDataFile"./init_data.json"Path to data initialization file. See Data Initialization
frontendBaseDir"../cc_0"Base directory for frontend files (only for development)

ผ่านตัวแปรสภาพแวดล้อม

รายการการกำหนดค่าทั้งหมดที่ 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 เป็นไฟล์ที่สามารถทำงานได้และเริ่มต้นมัน

สำหรับ Linux:

go build
./casdoor

สำหรับ Windows:

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 (หากคุณใช้ reverse proxy คุณต้องตั้งค่าลิงก์เป็น โดเมนของคุณ)

ยกตัวอย่างเว็บบอร์ดอย่างเป็นทางการของเรา Casnode

Casnode ใช้ Casdoor เพื่อจัดการการตรวจสอบสิทธิ์

เมื่อเรากำลังทดสอบ Casnode ในสภาพแวดล้อม dev เราตั้งค่า serverUrl เป็น http://localhost:7001 ดังนั้นเมื่อเราทดสอบฟังก์ชันล็อกอินและสมัครใช้งานผ่าน Casdoor มันจะไปที่ localhost 7001 ซึ่งเป็นพอร์ตของ Casdoor

และเมื่อเรานำ Casnode ไปใช้ในสภาพแวดล้อม prod เราตั้งค่า serverUrl เป็น https://door.casdoor.com ดังนั้นผู้ใช้สามารถล็อกอินหรือสมัครใช้งานผ่าน Casdoor

ตัวอย่าง Casnode