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

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

ความต้องการ

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

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

สภาพแวดล้อม

ข้อมูล

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

คำเตือน

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

ฐานข้อมูล

Casdoor ใช้ XORM เพื่อสื่อสารกับฐานข้อมูล ตาม Xorm Drivers Support, Casdoor ให้การสนับสนุนฐานข้อมูลต่อไปนี้:

  • 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 สามารถกำหนดค่าได้ผ่านไฟล์เดียว: 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 ได้รับการแนะนำก่อนหน้านี้ โปรดดูที่ Configure Database สำหรับรายละเอียด
  • 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 เป็นชื่อบริการจัดเก็บไฟล์เริ่มต้น หากคุณต้องการใช้บริการจัดเก็บไฟล์ เช่น การอัปโหลดอวาตาร์ คุณจำเป็นต้องตั้งค่าผู้ให้บริการจัดเก็บและใช้งานในแอปพลิเคชันของคุณ ดูรายละเอียดที่ storage
  • isCloudIntranet ใช้เพื่อระบุว่าจุดปลายทางของผู้ให้บริการของคุณเป็นจุดปลายทางอินทราเน็ตหรือไม่
  • authState เป็นชื่อแอปพลิเคชันการอนุญาต พารามิเตอร์นี้จะถูกตรวจสอบเมื่อเข้าสู่ระบบ
  • socks5Proxy เป็นที่อยู่ IP ของเซิร์ฟเวอร์พร็อกซี SOCKS ตั้งค่าพอร์ตพร็อกซีเพราะเรามีบริการที่เกี่ยวข้องกับ Google หรือใช้ Google, GitHub, Facebook, LinkedIn, หรือ Steam เป็น OAuth Providers ซึ่งอาจถูกจำกัดโดยเครือข่ายในบางพื้นที่
  • 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 เป็นไฟล์ที่สามารถทำงานได้และเริ่มต้นมัน

สำหรับ 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