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

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

ความต้องการ

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

รองรับระบบปฏิบัติการหลักทั้งหมด รวมถึง 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
  • 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

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

รายการการกำหนดค่าทั้งหมดที่ 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