การติดตั้งเซิร์ฟเวอร์
ความต้องการ
ระบบปฏิบัติการ
รองรับระบบปฏิบัติการหลักทั้งหมด รวมถึง 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 ฟรอนต์เอนด์เว็บสำหรับ Casdoor | JavaScript + React | https://github.com/casdoor/casdoor/tree/master/web |
แบ็กเอนด์ | แบ็กเอนด์ API แบบ RESTful สำหรับ Casdoor | Golang + Beego + XORM | https://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
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 บนโลกเกอร์หรือไม่ ถ้าระดับโลกเกอร์มากกว่า INFOredisEndpoint
เป็นจุดสิ้นสุด 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-configdefaultStorageProvider
เป็นชื่อบริการจัดเก็บไฟล์เริ่มต้น หากคุณต้องการใช้บริการจัดเก็บไฟล์ เช่น การอัปโหลดอวาตาร์ คุณจำเป็นต้องตั้งค่าผู้ให้บริการจัดเก็บและใช้งานในแอปพลิเคชันของคุณ ดูรายละเอียดที่ storageisCloudIntranet
ใช้เพื่อระบุว่าจุดปลายทางของผู้ให้บริการของคุณเป็นจุดปลายทางอินทราเน็ตหรือไม่authState
เป็นชื่อแอปพลิเคชันการอนุญาต พารามิเตอร์นี้จะถูกตรวจสอบเมื่อเข้าสู่ระบบsocks5Proxy
เป็นที่อยู่ IP ของเซิร์ฟเวอร์พร็อกซี SOCKS ตั้งค่าพอร์ตพร็อกซีเพราะเรามีบริการที่เกี่ยวข้องกับ Google หรือใช้Google
,GitHub
,Facebook
,LinkedIn
, หรือSteam
เป็น OAuth Providers ซึ่งอาจถูกจำกัดโดยเครือข่ายในบางพื้นที่initScore
เป็นคะแนนเริ่มต้นของแต่ละผู้ใช้ แต่ละผู้ใช้มีคุณสมบัติคะแนน คะแนนถูกใช้โดย Casnode และไม่ควบคุมอะไรใน CasdoorlogPostOnly
ใช้เพื่อกำหนดว่าใช้เฉพาะวิธีการโพสต์เพื่อเพิ่มบันทึกหรือไม่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
:::
ในสภาพแวดล้อม 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