PS D:\Develop\Workspace\202409\first-react-board\src\main\frontend> npm start
npm : 이 시스템에서 스크립트를 실행할 수 없으므로 C:\Program Files\nodejs\npm.ps1 파일을 로드할 수 없습니다. 자세한 내용은 about_Execution_Policies(https://
go.microsoft.com/fwlink/?LinkID=135170)를 참조하십시오.
D:\Workspace\project-system>git push -u origin main
여기서 문제가 발생했다. Gitea는 기본적으로 branch가 main으로 잡힌다. 그런데 git의 경우에는 master가 기본 branch가 된다. 위의 사유로 아래와 같은 오류가 발생했다.
error: src refspec main does not match any
error: failed to push some refs to 'http://192.168.1.100:3000/project/project-system.git'
그래서 branch 이름을 확인해 봤다.
D:\Workspace\project-system>git branch
* master
위와 같이 master로 되어 있어서 main으로 branch를 변경해야 했다.
D:\Workspace\project-system>git fetch
D:\Workspace\project-system>git checkout -b main
branch 'main' set up to track 'origin/main'.
Switched to a new branch 'main'
현재 적용버전은 1.21.10으로 윈도우 설치 프로그램을 찾아야 한다. 하단 Show all 106 assets를 클릭하면 전체 다운 받을 수 있는 목록 보여진다.
윈도우에 설치하기 위해 gitea-1.21.10-windows-4.0-amd64.exe파일을 다운로드 한다.
다운로드한 파일을 관리자권한으로 실행 한다. 여기서 주의사항은 되도록이면 Git repositories로 사용하고자 하는 폴더로 파일을 이동시켜 놓고 실행하도록 한다. 이유는 나중에 해당 파일을 Service에 등록해야 하는데 Download 폴더에 있으면 어떻게 될지 모르기 때문에....
위와 같이 실행이 되면 브라우저를 실행한다. 주소는 http://localhost:3000를 입력한다. 그러면 설정 화면이 보여지게 된다. 아래 이미지는 데이터베이스 설정으로 Gitea는 DB를 통해서 정보를 관리한다. 나는 PostgresSQL을 사용하고 DB 사용자 및 데이터베이스는 만들어 놓은 상태이다.
다음은 기본 설정을 화면이다. Git을 사요하기 위한 기본 설정을 진행한다.
다음은 추가설정 화면이다. 사용자를 마음대로 등록하지 못하도록 사용자 등록 비활성화를 체크한다.
추가설정 완료 후 관리자 설정화면이다. 관리자 정보를 입력하고 Gitea 설치하기 버튼을 눌러서 최종 설정을 완료 한다.
설치가 완료 되면 Git 화면이 보여진다.
이상으로 Gitea 설치가 완료 되었고 이클립스와 같은 툴에서 사용하면 된다.
다음으로 실행파일을 Service에 등록해야 한다. 그렇지 않으면 위에 있는 CMD 창을 계속 띄워놓아야 하고 또 서버를 껐다가 켜도 다시 실행해줘야 하는 번거로움이 있다. CMD 를 관리자로 열고 다음과 같이 입력하여 준다.
sc.exe create gitea start=auto binPath="\"D:\GIT\gitea-1.21.10-windows-4.0-amd64.exe\" web --config \"D:\GIT\custom\conf\app.ini\""
SSO 처리를 위해 AbstractAuthenticationProcessingFilter를 사용하여 사전에 사용자 정보를 가져와 로그인 처리를 하려 하는데 분명 로그인을 했는데 자꾸 AnonymousUser라고 로그인 안 된거 처럼 되는 현상으로 하루 죙일 구글링 시작...
찾은 결과
SecurityContext는 인증 성공후에 기본적으로 저장하지 않는다. UsernamePasswordAuthenticationFilter는 form-login 기반으로 SSO 처리시에는 호출 되지 않기 때문에 SessionManagementFilter에 인증정보를 감지할 수 없다. 그렇기 때문에 인증 성공후에 인정된 객체를 SecurityContext에 저장해야 한다. SecurityContext에 저장하기 위하여는 AbstractAuthenticationProcessingFilter의 successfulAuthentication를 재정의하여야 한다.
SELECT RELNAME AS TABLE_NAME FROM PG_STAT_USER_TABLES
컬럼목록 조회
SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_CATALOG = '데이터베이스명' AND TABLE_NAME = '테이블명' ORDER BY ORDINAL_POSITION;
기본키 조회
SELECT CC.COLUMN_NAME AS COLUMN_NAME FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS TC ,INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE CC WHERE TC.TABLE_CATALOG = '데이터베이스명' AND TC.TABLE_NAME = '테이블명' AND TC.CONSTRAINT_TYPE = 'PRIMARY KEY' AND TC.TABLE_CATALOG = CC.TABLE_CATALOG AND TC.TABLE_SCHEMA = CC.TABLE_SCHEMA AND TC.TABLE_NAME = CC.TABLE_NAME AND TC.CONSTRAINT_NAME = CC.CONSTRAINT_NAME
테이블 Comment 조회
SELECT PS.RELNAME AS TABLE_NAME ,PD.DESCRIPTION AS TABLE_COMMENT FROM PG_STAT_USER_TABLES PS ,PG_DESCRIPTION PD WHERE PS.RELNAME = '테이블명' AND PS.RELID = PD.OBJOID AND PD.OBJSUBID = 0
컬럼 Comment 조회
SELECT PS.RELNAME AS TABLE_NAME ,PA.ATTNAME AS COLUMN_NAME ,PD.DESCRIPTION AS COLUMN_COMMENT FROM PG_STAT_ALL_TABLES PS ,PG_DESCRIPTION PD ,PG_ATTRIBUTE PA WHERE PS.SCHEMANAME = (SELECT SCHEMANAME FROM PG_STAT_USER_TABLES WHERE RELNAME = '테이블명') AND PS.RELNAME = '테이블명' AND PS.RELID = PD.OBJOID AND PD.OBJSUBID <> 0 AND PD.OBJOID = PA.ATTRELID AND PD.OBJSUBID = PA.ATTNUM ORDER BY PS.RELNAME, PD.OBJSUBID