서버 설치
요구 사항
운영 체제
Windows, Linux, macOS를 포함한 모든 주요 운영 체제가 지원됩니다.
환경
Casdoor 프론트엔드를 실행하고 빌드하는 데 Yarn 1.x를 사용하는 것을 강력히 권장합니다. NPM을 사용하면 UI 스타일링 문제가 발생할 수 있습니다. 자세한 내용은 다음을 참조하십시오: casdoor#294.
네트워크가 Go 종속성 패키지를 직접 동기화하는 데 실패하면, GOPROXY 환경 변수를 설정하여 Go 프록시를 사용해야 합니다. 다음을 사용하는 것을 강력히 권장합니다: 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 프론트엔드 코드는 단일 저장소에 포함되어 있습니다.
이름 | 설명 | 언어 | 소스 코드 |
---|---|---|---|
프론트엔드 | Casdoor을 위한 웹 프론트엔드 UI | JavaScript + React | https://github.com/casdoor/casdoor/tree/master/web |
백엔드 | Casdoor을 위한 RESTful API 백엔드 | 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는 사용자, 노드, 토픽 정보를 casdoor
라는 MySQL 데이터베이스에 저장합니다. 데이터베이스가 존재하지 않으면 수동으로 생성해야 합니다. DB 연결 문자열은 다음 위치에서 지정할 수 있습니다: https://github.com/casdoor/casdoor/blob/master/conf/app.conf
driverName = mysql
dataSourceName = root:123456@tcp(localhost:3306)/
dbName = casdoor
PostgreSQL
Casdoor를 실행하기 전에, xorm으로 Postgres를 열 때 데이터베이스를 선택해야 하므로 PostgreSQL용 데이터베이스를 수동으로 준비해야 합니다.
이미 casdoor
라는 데이터베이스를 준비했다고 가정하면, app.conf
를 다음과 같이 지정해야 합니다:
driverName = postgres
dataSourceName = "user=postgres password=postgres host=localhost port=5432 sslmode=disable dbname=casdoor"
dbName = casdoor
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
은 로그 수준이 INFO보다 큰 경우 로거에 SQL 문을 표시할지 여부를 결정합니다.redisEndpoint
는 Beego 세션 저장소에서 사용하는 Redis 엔드포인트입니다. 이 매개변수가 비어 있으면 세션 데이터는./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
는 SOCKS 프록시 서버 IP 주소입니다. 프록시 포트를 설정하십시오. 왜냐하면 Google 관련 서비스를 사용하거나Google
,GitHub
,Facebook
,LinkedIn
,Steam
을 OAuth 공급자로 사용하는 경우 일부 지역에서 네트워크에 의해 제한될 수 있기 때문입니다.initScore
는 각 사용자의 초기 점수입니다. 각 사용자는 점수 속성을 가지고 있습니다. 점수는 Casnode에서 사용되며 Casdoor에서는 아무 것도 제어하지 않습니다.logPostOnly
는 기록을 추가하기 위해 post 메서드만 사용할지 여부를 결정하는 데 사용됩니다.origin
은 원래의 백엔드 도메인 이름입니다.staticBaseUrl
은 시스템이 데이터베이스를 초기화할 때 사용하는 정적 이미지의 주소입니다.enableGzip
은 요청 헤더에Accept-Encoding=gzip
이 포함되어 있으면 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.
환경 변수를 통해
위에서 언급한 ini 파일에 Casdoor가 정의한 모든 구성 항목은 환경 변수를 통해 구성할 수 있으며, 일부 beego 구성 항목(httpport, appname)도 마찬가지입니다.
예를 들어, Casdoor를 시작하려고 할 때 환경 변수를 통해 구성을 전달하기 위해 다음과 같은 것을 사용할 수 있습니다:
appname=casbin go run main.go
또한, export
파생물도 가능한 방법입니다. 환경 변수의 이름은 ini 파일에서 사용하려는 이름과 정확히 일치해야 합니다.
참고: 환경 변수의 구성은 ini 파일의 구성을 재정의할 수 있습니다.
실행
현재 시작하는 두 가지 방법이 있으며, 상황에 따라 하나를 선택할 수 있습니다.
개발 모드
백엔드
Casdoor의 Go 백엔드는 기본적으로 8000 포트에서 실행됩니다. 다음 명령을 사용하여 Go 백엔드를 시작할 수 있습니다:
go run main.go
서버가 성공적으로 실행되면 프론트엔드 부분을 시작할 수 있습니다.
프론트엔드
Casdoor의 프론트엔드는 매우 클래식한 Create-React-App (CRA) 프로젝트입니다. 기본적으로 7001
포트에서 실행됩니다. 다음 명령을 사용하여 프론트엔드를 실행하세요:
cd web
yarn install
yarn start
브라우저에서 http://localhost:7001을 방문하세요. 기본 전역 관리자 계정인 built-in/admin
으로 Casdoor 대시보드에 로그인하세요.
admin
123
생산 모드
백엔드
Casdoor Go 백엔드 코드를 실행 가능한 파일로 빌드하고 시작하세요.
리눅스용:
go build
./casdoor
윈도우용:
go build
casdoor.exe
프론트엔드
Casdoor 프론트엔드 코드를 정적 리소스(.html, .js, .css 파일)로 빌드하세요:
cd web
yarn install
yarn build
브라우저에서 http://localhost:8000을 방문하세요. 기본 전역 관리자 계정인 built-in/admin
으로 Casdoor 대시보드에 로그인하세요.
admin
123
다른 포트를 사용하려면 conf/app.conf
를 편집하고 httpport
를 수정한 다음 Go 백엔드를 다시 시작하세요.
dev 환경에서 프론트엔드는 7001 포트에서 yarn run
으로 실행되므로 Casdoor 로그인 페이지로 이동하려면 Casdoor 링크를 http://localhost:7001로 설정해야 합니다.
prod 환경에서 프론트엔드 파일은 먼저 yarn build
에 의해 빌드되고 8000 포트에서 제공되므로 Casdoor 로그인 페이지로 이동하려면 Casdoor 링크를 https://your-casdoor-url.com:8000로 설정해야 합니다(리버스 프록시를 사용하는 경우 링크를 당신의 도메인으로 설정해야 합니다).
우리의 공식 포럼 Casnode를 예로 들어보겠습니다
Casnode는 Casdoor를 사용하여 인증을 처리합니다.
dev 환경에서 Casnode를 테스트할 때, 우리는 serverUrl
을 http://localhost:7001로 설정하므로, 우리가 Casdoor를 사용하여 로그인 및 가입 기능을 테스트할 때, 이는 Casdoor 포트인 localhost 7001로 이동할 것입니다.
그리고 우리가 Casnode를 prod 환경에 넣을 때, 우리는 serverUrl
을 https://door.casdoor.com로 설정하므로, 사용자는 Casdoor를 사용하여 로그인 또는 가입할 수 있습니다.