Forguncy 도움말
홈페이지온라인 스터디문의하기다운로드
V9 버전
V9 버전
  • 시작하기
    • Forguncy | 포건시
    • 시스템 요구사항
      • Version 9.0
    • 포건시 빌더|디자이너
      • 빌더(Builder) 설치
      • 빌더(Builder) 온라인 라이선싱
      • 빌더(Builder) 오프라인 라이선싱
      • 빌더(Builder) 제거
    • 포건시 서버|Server
      • 서버(Server) 설치
      • 서버(Server) 온라인 라이선싱
      • 서버(Server) 오프라인 라이선싱
      • 서버(Server) 제거
  • 데이터베이스
    • 데이터 설정
      • 데이터 테이블 만들기
      • 필드 만들기
      • Excel 파일로 데이터 테이블 만들기
      • 텍스트 파일로 데이터 테이블 만들기
      • Access 파일로 데이터 테이블만들기
      • 뷰 만들기
      • 감사 로그
      • 기본 제공 데이터베이스 동시성 제어
      • 포건시 파일 가져오기
    • 필드 유형
      • 텍스트 필드
      • 정수 필드
      • 소수 필드
      • 날짜 필드
      • 시간 필드
      • 예/아니오 필드
      • 사용자 필드
      • 이미지 필드
      • 첨부 파일 필드
      • 내장 필드
      • 수식 필드
      • 통계 필드
      • 자동 ID 생성
    • 데이터 권한
      • 행 권한
      • 열 권한
      • 데이터 추가/생성 권한 편집
    • 외부 데이터베이스 연결
      • SQL Server에 연결
      • Oracle에 연결
      • MySQL 및 MariaDB에 연결
      • PostgreSQL에 연결
      • Dameng 데이터베이스에 연결
      • 데이터베이스 연결 변경
      • 필드 형식을 다시 가져오기
      • 외부 데이터베이스 사용하기
      • 내장 테이블을 외부 테이블로 변환
      • ODBC를 통해 다른 데이터베이스에 연결
      • 데이터 보안 설정
      • 연결된 테이블의 복사본 만들기
  • 페이지 & 데이터 바인딩
    • 페이지 설정
      • 일반 페이지
      • 일반 페이지 설정
        • 오버플로 모드
      • 모바일 페이지 만들기
      • 모바일 페이지 설정
      • 마스터 페이지 만들기
      • 마스터 페이지 설정
      • 페이지 늘이기 모드
      • 페이지 작업
      • 기본 제공 페이지
        • 로그인 페이지
        • 개인 구성 페이지 수정
        • 비밀번호 분실 및 변경 페이지
        • 이메일 알림 설정 페이지
        • 임시 점검 중 페이지
        • 2단계 인증 스캔 코드 및 인증 페이지
        • 401 권한 없음 페이지
      • 페이지 로드 모드
    • 데이터테이블 및 페이지 연결
      • 바인딩 필드
      • 리스트뷰 바인딩
    • Excel에서 가져오기
    • 인쇄
      • 페이지 설정
      • 인쇄 영역
      • 리스트뷰 인쇄
      • 이미지 목록 인쇄
      • 피벗 테이블을 인쇄
      • 양식 인쇄
      • 반복영역 인쇄
    • 마스터-하위 테이블을 설정
      • 마스터-하위 테이블 만들기
      • 하위 테이블 설정
      • 하위 테이블 업데이트 모드
      • 하위 테이블 삭제 모드
    • OData
      • OData의 기본 사용
      • OData 매개 변수 설정 - 선택
      • OData 매개 변수 설정 - 쿼리
      • OData 매개 변수 설정 - 상위 제한
      • OData 매개 변수 설정 - 정렬
      • 리스트뷰에 OData 적용
      • OData 연산자에 대한 자세한 설명
      • OData를 Excel 함수와 함께 사용
    • 전역변수
    • 데이터 유효성 검사
      • 페이지 측 검사
        • 데이터 유효성 검사
        • 수치 검사
        • 수식 검사
        • 정규식
        • 데이터 유효성 검사 트리거
      • 서비스 측 검사
        • 고유성 검사
        • 필수 유효성 검사
    • 데이터 쿼리 조건
      • 쿼리 명령
      • 리스트뷰 쿼리
    • 키워드
  • 웹 페이지 구성
    • 셀 유형
      • 셀 기본 작업
      • 셀 스타일
      • 버튼
      • 텍스트 상자
      • 여러 줄 텍스트
      • 체크박스
      • 체크박스 그룹
      • 라디오 버튼 그룹
        • 라디오 버튼 데이터 바인딩
        • 라디오 버튼 연동 설정
      • 하이퍼링크
      • 드롭다운/콤보 상자
        • 콤보상자 데이터 바인딩
        • 콤보 상자 연결 설정
      • 숫자 형식
      • 날짜
      • 시간 표시
      • 이미지
      • 이미지 버튼형 업로드 셀
      • 첨부 파일 업로드 버튼형 셀
      • 사용자 목록 선택기
      • 페이지 네비게이션
      • 페이지 탐색
      • 현재 사용자
      • 바코드
      • 페이지 내 컨텐츠가 포함된 셀
      • 페이지 내 탭 방식 셀
      • 자료반복 셀
      • 사용자 정의 컨트롤 컨테이너
      • 프로세스 바
      • 피벗 테이블
    • 리스트뷰 디자인
      • 기본 속성
      • 빠른 스타일
      • 리스트뷰 열 헤더
      • 행 헤더 표시하기
      • 행 선택 기능
      • 요약 행 표시하기
      • 자동 병합
      • 편집 및 선택
      • 데이터 유효성 검사 기간
      • 셀 단위 / 행 단위 선택 단위
      • 선택 설정
      • 열 헤더 작업
      • 포커스 동작
      • 가로 틀 고정
      • 자동 맞춤
      • 초기 로딩 데이터 및 불러올 행 수
      • 데이터로드 설정
      • 즉시 저장 해제
      • 행 헤더 삽입/복제/삭제
      • 두번 클릭 명령
      • 현재 행 변경 명령 편집
      • 애플리케이션 UI
    • Excel 수식
      • 기본 수식 사용
      • 참조 스타일
      • 변수명 수식
      • 배열 수식
      • Excel 함수 목록
    • 조건부 서식
      • 셀 조건부 서식
      • 리스트뷰 조건부 서식
    • 차트
      • 기본 사용
      • 데이터 소스 선택
      • 지도차트
      • 차트 명령
    • 피벗 테이블
      • 피벗 테이블 기본 사용
      • 피벗 테이블 스타일
      • 피벗 테이블 조건부 형식
      • 채우기 모드
      • 고정 및 확장 필드 설정
      • 피벗테이블을 Excel로 내보내기
    • 보고서
      • 보고서 개요
        • RDL 보고서
        • 페이지 보고서
      • 보고서 라이선스
      • 보고서 만들기
      • 보고서 디자이너 및 일반적인 작업
      • 테이블 구성 요소를 사용하여 보고서를 디자인하기
        • 단일 수준 그룹화 및 통계
        • 여러개 그룹화 및 통계
        • 식 그룹화
        • 보고서 정렬
        • 그룹화 필터링 및 정렬
        • 테이블 행 번호
        • 머리글 반복해서 표시
        • 행/열을 고정
        • 테이블 스타일
      • 테이블릭스(모멘트테이블)를 사용하여 보고서를 디자인
        • 모멘트테이블 설계 마법사
        • 다차원 피벗 테이블
      • 보고서 매개 변수 및 데이터 필터링
        • 보고서 매개변수
        • 데이터 필터링
        • 라디오 드롭다운 목록
        • 필터 표시
      • 대화형 보고서
        • 매개변수를 이용한 보고서 이동
        • URL 이동
      • 식
      • 보고 명령
        • 보고서 열기 명령
        • 보고서 내보내기 명령
    • 페이지 디자인
      • 이미지 삽입
      • 배경 이미지 삽입
      • 테마
      • 페이지 스트리밍 레이아웃
    • Excel을 페이지로 가져오기
    • 프로젝트 문서
    • 사용자 컨트롤
      • 사용자 컨트롤 만들기
      • 사용자 정의 컨트롤 컨테이너
      • 사용자 컨트롤 속성
      • 사용자 컨트롤 이벤트
      • 사용자 컨트롤 명령
      • 사용자 컨트롤 가져오기 및 내보내기
    • 이미지 리소스
  • 명령 및 동작
    • 명령
      • 페이지 명령 - 페이지 이동
        • 고급 설정 - 페이지 전송 값
        • 고급설정 - 캐시 제거
        • 고급 설정 - 바인딩된 데이터 설정 로드
      • 페이지 명령 - 팝업 페이지
      • 페이지 명령 - 팝업 페이지 닫기
        • 입력 값을 상위페이지에 반환
        • 전달받을 값 변경 발생 시 상위 페이지의 입력란에 반환
        • 실행한 쿼리 결과를 상위 페이지에 전달
      • 페이지 명령 - 메세지 보여주기
      • 데이터 명령 - 데이터 테이블 작업
        • 고급 설정 - 기타 바인딩되지 않은 필드
        • 고급 설정 - 작업별 레코드
        • 데이터베이스 트랜젝션
        • 기타 고급 설정
      • 데이터 명령 - 리스트뷰 업데이트 명령 만들기
        • 행작동
        • 데이터
        • 선택
        • 셀작동
        • 열 작동
      • 데이터 명령 -쿼리
        • 고급 검색
      • 데이터 명령 - 정렬
      • 데이터 명령 - 데이터 간 이동하기
      • 데이터 명령 - 데이터 삭제
      • Excel 명령 - 테이블을 Excel로 내보내기
      • Excel 명령 - 페이지를 Excel로 내보내기
      • Excel명령 - 파일 다운로드 링크 만들기
      • Excel명령 - Excel 을 리스트뷰로 가져오기
      • 논리 명령 - 조건
        • 조건 형식 - 조건식
        • 조건 형식 - 확인 대화 상자
        • 조건형식 - JavaScript 조건
      • 논리 명령 - 루프 명령
        • 지정된 횟수만큼 반복
        • 리스트뷰로 루프
        • 셀에 따라 루프
      • 논리명령 - 중단명령
      • 논리명령 -중지명령
      • 셀 명령 - 셀 속성과 내용 변경하기
      • 인쇄 명령 - 웹 페이지 인쇄 명령
      • 인쇄 명령 - 페이지 PDF로 내보내기
      • 알림 명령 - 이메일 알림 설정 생성하기
      • 알림 명령 - 메일 보내기 명령
      • 프로그래밍 명령 - JavaScript 명령
      • 리스트뷰의 열 속성 변경하기
      • 재사용 명령
      • 행 및 열 레이아웃 설정 명령
      • 파라미터 설정
      • 저장 프로시저 호출하기
      • 셀유형 작동 명령
    • 서버단 명령
      • 서버단 명령이란?
      • 서버단 명령 만들기
      • 서버단 명령의 파라미터
        • 기본유형
        • 배열 형식
          • 변경된 데이터만 전송
      • 서버단 명령의 반환값
      • 서버단 명령의 권한
      • 서버단 명령의 사용범위
      • 서버단 명령을 관리
      • 서버단 명령을 디버그
      • 서버단 명령을 호출
        • 고급 설정 표시
      • 서버단 명령에서 지원하는 명령
        • 페이지 Excel 내보내기
        • 페이지 PDF로 내보내기
        • 데이터 테이블 작업
          • 데이터 테이블 추가하기
          • 데이터 테이블 편집하기
          • 데이블 테이블 데이터 삭제하기
        • 프로그램 명령 호출
        • CSV 가져오기, 내보내기
          • CSV 가져오기
          • CSV 내보내기
        • 메일 전송 명령 생성하기
        • 조건명령
        • 트랜젝션 생성하기
        • 루프 명령
        • 파라미터 설정
        • 페이지를 HTML로 내보내기
        • 예외처리 명령
        • SQL 실행 명령
        • 저장 프로시저 호출하기
        • 중단명령
        • 서버알림
          • 서버단 알림 생성 및 적용
          • 클라이언트 명령
          • 서버단 명령
        • 서버 가져오기 내보내기 Excel 명령
          • 서버에서 Excel 파일 가져오기
          • 서버단에서 Excel 파일 내보내기
    • 예약 작업
      • 예약된 작업 만들기
      • 예약된 작업에서 지원하는 명령
    • 워크플로우
      • 워크플로우 설정
      • 일반 프로세스
      • 승인 프로세스
    • 로컬 실행 및 디버깅
      • 앱 실행
      • 앱 디버깅
        • 페이지 새로고침 시 수정 결과 표시
        • 모바일 디버깅
        • 숨겨진 정보 표시
        • 모든 참조 찾기
    • 자바 스크립트 프로그래밍
      • CSS 사용하기
      • JavaScript 사용
        • 응용 프로그램 수준 JavaScirpt 파일 등록
        • 지정된 페이지의 JavaScript 파일 등록
        • 사용자 정의 JavaScript 지정
      • 작업 페이지
      • 작업 셀
      • 작업 리스트뷰
      • JavaScript 및 CSS 코드 디버그
      • JavaScript API 인덱스
        • Forguncy 인터페이스
          • CellLocationinfo 인터페이스
          • CellRange 인터페이스
          • CurrentRowInfoParam 인터페이스
          • FormulaCalcContext 인터페이스
          • GetTableDataByConditionParams 인터페이스
          • IMergedColumnInfo 인터페이스
          • ListviewPaginationInfo 인터페이스
          • ListViewValueChangedEventArg 인터페이스
          • ModifyData 인터페이스
          • OrganizationLevelValueInfo 인터페이스
          • PageingInfoChangedEventArg 인터페이스
          • RowData 인터페이스
          • TableDataQueryPolicy 인터페이스
          • UserExtendProperties 인터페이스
          • UserInfo 인터페이스
        • Forguncy 매서드
          • addTableData 메서드
          • addUserToRole 메서드
          • addUser 메서드
          • ConvertDateToOADate 메서드
          • ConvertOADateToDate 메서드
          • ConvertToCssColor 메서드
          • deleteTableData 메서드
          • deleteUserFromRole 메서드
          • deleteUser메서드
          • forceSyncTableData 메서드
          • getTableDataByCondition 메서드
          • getTableDataByOData 메서드
          • getTableData 메서드
          • logIn 메서드
          • logOut 메서드
          • modifyTablesData 메서드
          • SendMail 메서드
          • updateTableData 메서드
        • Forguncy 열거형
          • ListviewColumnType 열거형
          • QueryNullPolicy 열거형
        • Forguncy 클래스
          • CellEvents클래스
            • Click 이벤트
            • MouseEnter 이벤트
            • MouseLeave 이벤트
            • PivottableClick 이벤트
            • SelectionChanged 이벤트
            • ValueChanged 이벤트
          • Cell 클래스
            • bind 메서드
            • disable 메서드
            • enable 메서드
            • getActiveTabIndex 메서드
            • getContentPage 메서드
            • getTabCount 메서드
            • getTabPage 메서드
            • getValue 메서드
            • hasFocus 메서드
            • hide 메서드
            • show 메서드
            • setBackColor 메서드
            • setFocus 메서드
            • setForeColor 메서드
            • setValue 메서드
            • showTab 메서드
            • unbind 메서드
            • unbindAll 메서드
            • setReadOnly 메서드
          • CommandHelper 클래스
            • executeCellCommand 메서드
            • getAllVariableValues 메서드
            • getVariableValue 메서드
            • setVariableValue 메서드
          • ForguncyCommandHelper클래스
            • executeCellCommand 메서드
            • getAllVariableValues 메서드
            • getVariableValue 메서드
            • setVariableValue 메서드
          • ListViewEvents 클래스
            • PageingInfoChanged 이벤트
            • Reloaded 이벤트
            • SelectedRowsChanged 이벤트
            • SelectionChanged 이벤트
            • ValueChanged 이벤트
          • ForguncyHelper 클래스
            • getCellLocation 메서드
            • post 메서드
            • SpecialPath 속성
          • ListView 클래스
            • addNewRow 메서드
            • addSelectedRow 메서드
            • bind 메서드
            • clearAllSelectedRows 메서드
            • clearSelectedRowByQuery 메서드
            • clearSelectedRow 메서드
            • deleteRow 메서드
            • getDataTableName 메서드
            • getDesignerRangeInfo 메서드
            • getMergedColumnInfos 메서드
            • getName 메서드
            • getPaginationInfo 메서드
            • getQuery 메서드
            • getRowCount 메서드
            • getSelectedRowIndexs 메서드
            • getSelectedRowIndex 메서드
            • getSelectedRowsData 메서드
            • getText 메서드
            • getValue 메서드
            • goToFirstPage 메서드
            • goToLastPage 메서드
            • goToNextPage 메서드
            • goToPreviousPage 메서드
            • goToSpecifiedPage 메서드
            • usePaginationDisplay 메서드
            • hiddenLoadingIndicator 메서드
            • showLoadingIndicator 메서드
            • isSelectedRow 메서드
            • reload 메서드
            • selectAllRows 메서드
            • selectRow 메서드
            • setText 메서드
            • setValue 메서드
            • unbind 메서드
            • unbindAll 메서드
            • hideColumns 메서드
            • showColumns 메서드
            • clearAllColumnFilters 메서드
            • getRunTimePageName 메서드
          • PageEvents 클래스
            • Loaded 이벤트
            • PageDefaultDataLoaded 이벤트
            • PopupClosed 이벤트
          • Page 클래스
            • AutoDisconnectTimeout 메서드
            • bind 메서드
            • getCellArray 메서드
            • getCellByLocation 메서드
            • getCell 메서드
            • getContainerCells 메서드
            • getListViews 메서드
            • getListView 메서드
            • getMasterPageName 메서드
            • getPageName 메서드
            • getSubPageInfoByPageID 메서드
            • getUserInfo 메서드
            • getUserName 메서드
            • ready 메서드
            • recalc 메서드
            • reloadBindingData 메서드
            • resumeCalc 메서드
            • setCurrentRow 메서드
            • suspendCalc 메서드
            • unbindAll 메서드
            • unbind 메서드
          • PivotTableCellType 클래스
            • setCustomFunction 메서드
          • PivotTableEventParameter 클래스
          • PivotTableHeaderInfo 클래스
          • SpecialPath 클래스
            • getBaseUrl 메소드
            • getBuiltInImageFolderPath 메서드
            • getImageEditorUploadImageFolderPath 메소드
            • getPluginRootPath 메서드
            • getUploadFileFolderPathInDesigner 메서드
            • getUploadImageFolderPathInServer 메소드
            • getUserFileFolderPath 메서드
          • SubPage 클래스
            • getCellArray 메서드
            • getCell 메서드
            • getContainerCells 메서드
            • getListViews 메서드
            • getListView 메서드
            • getMasterPageName 메서드
            • getPageName 메서드
          • Page 변수
  • 배포 및 권한
    • 권한 및 보안
      • 인증 모드
      • Single Sign-On
      • 빌더 측에서 권한 설정
        • 데이터 권한
          • 행 권한
          • 열 권한
          • 데이터 추가/생성 권한 편집
        • 페이지 권한
        • 셀 권한
    • 서버 측 설정 권한
      • 데이터 권한
      • 역할 권한
      • 리소스 권한
    • 웹 사이트에 배포
      • 웹사이트 배포
      • 오프라인 배포
      • Https 배포
      • 웹사이트 아이콘 설정
  • 포건시 서버 | Server
    • 사용자, 역할 및 조직 구조 설정
      • 서버 관리자 개발과 서버 관리자
      • 사용자 생성
      • 역할 만들기
      • 조직 구조 만들기
      • 사용자 정보 보기
      • Excel 가져오기 및 내보내기
      • 암호 정책
    • 사용자 보안 공급자
      • Windows Active Directory
      • 보안 공급자를 구현하는 방법
    • 서버단 응용 프로그램 관리
      • 기본작업
      • 기본 응용 프로그램 설정
      • 도메인 이름 설정
      • 외부 데이터베이스 연결 문자열 구성
      • 예약된 작업
    • 서버 단 구성
      • 메일 서버 구성
      • Windows 도메인 사용자 동기화
      • Https 인증서
      • 저장소 경로 설정
      • 보안 설정
      • 로그인 암호 변경
      • 서버 실행 계정 변경
      • 사용자 정보 데이터베이스 구성
      • 외부서비스 인증
      • 계정 2단계 인증 설정
      • 동시 사용자 제어
      • 로그
      • 클라우드 스토리지
        • OneDrive 구성
    • 백업 및 복원
      • 서버 측 자동 백업 및 복원
      • 서버 측 수동 백업 및 복원
      • 디자이너 백업 및 복원
    • 웹사이트 유지보수
      • 일시 중지 및 활성화
      • 데이터 병합 및 마이그레이션
      • 서비스 재시작
      • 서버단 문제 해결
      • 명령 백업
      • 데이터 및 권한 동기화
    • 서버 부하 분산 모드 설정 (로드밸런싱)
      • 서버부하분산 모드 설정
      • Linux 서버에 Nginx 설치
      • Linux 서버에 Redis 설치 및 구성
      • NFS를 통해 NAS 폴더를 Linux에 마운트
      • SMB를 통해 Windows에서 NAS 폴더에 액세스
      • SeaweedFS 설치 및 배포
  • 공동작업
    • 공동작업
      • 공동작업에 대한 개념
      • 기능 소개
      • 프로젝트 생성 및 열기
      • 협업개발을 수행하는 방법
        • 체크아웃
        • 전체 모듈 보기
        • 체크인 및 실행 취소
        • 이력보기
        • 최신 버전을 가져오기
      • 권장사항 사용
  • 플러그인
    • 플러그인 설치하기
      • 플러그인 일괄 설치
    • 플러그인 사용하기
      • 셀유형 플러그인
        • 이미지 편집기(CaroselCellType)
        • 엘리먼트 UI (Element UI)
          • 입력상자
          • 숫자표시상자
          • 항목선택기
          • 날짜 선택기
          • 시간 선택기
          • 달력
          • 아바타
          • 파일업로드
          • 태그
          • 별점
          • 슬라이더
          • 게시판 형태 페이지
          • 네비게이션 메뉴
          • 탭헤더
          • 브레드크럼
          • 진행률
          • 단계
          • 타임라인
          • 전송
          • 맨위로 돌아가기
          • 표
          • TreeSelect
        • 포커스설정 (Vant)
          • 입력
          • 숫자
          • 스탭퍼
          • 선택기
          • Cascader
          • 날짜/시간 선택기
          • 달력
          • 업로드
          • 태그
          • 비율
          • 슬라이더
          • 스와이퍼
          • Notice Bar
          • 페이지 매김
          • 텝 헤더
          • 그리드
          • 진행률
          • 원 진행률
          • 단계
          • 타임라인
        • 사용자 메뉴 설정 (Forguncy.CustomMenu)
          • 메뉴
          • 트리 메뉴
        • 페이지 탭 컨트롤 (TabManager)
        • HTML 편집기 (HtmlRichEditor)
        • ListView 선택 항목 표시기(SelectionPanel)
        • 간트차트 (Gantt)
        • FilePreviewer
        • 서명 (SignatureCellType)
        • 비디오, 음원 파일 플레이어 (VideoPlayCellType)
      • 명령유형 플러그인
        • JSON 데이터소스 가져오기(JSONDataSource)
        • JSON 직렬화/역직렬화 명령 (JSonUtilityCommand)
          • JSON 직렬화
          • JSON 역직렬화
        • 이미지뷰어 명령(ImageViewerCommand)
        • 로딩 표시 시작 (LoadingCommand)
        • 셀 위치 설정 명령 (SetCellLocationCommand)
        • 현재 행 설정 변경 (SetCurrentRowCommand)
        • 리스트뷰로 데이터 전달(PassListviewDataCommand)
        • 리스트뷰 새로고침 명령 (ReloadListViewComand)
        • CSV 가져오기와 내보내기(ImportExportCSV)
          • CSV 가져오기
          • CSV 내보내기
        • 워크플로우 명령 (WorkflowCommand)
        • 사용자 관리 기능 (UserManagementCommand)
        • Post 데이터 명령(SendHTTPRequestCommand)
        • 포커스 설정 명령 (SetFocusCommand)
        • 서버 파일 관리 (Operate Filescommand)
        • 암호화 및 복호화 알고리즘(EncryptDecryptCommand)
        • MS 팀즈에 메세지 전송 (TeamsWebHookCommand)
        • 대기명령 (SleepCommand)
        • 운영체제 정보 확인 (DetectOSInfoCommand)
        • 추적 프로세스 상태
        • WebSocket클라이언트 명령
        • 스마트폰 QR코드 스캔 명령
        • Office 365 로그인(Office365LoginCommand)
          • Office365 통합인증
            • 새로운 생성자 사용
            • 기존 사용자 정보 연동
          • 사용자 생성 (Office 365 계정으로 로그인)
    • 플러그인 개발하기
      • 포건시 플러그인 예제- 자료형 소개
      • 포건시 플러그인 예제 - LayDate
Powered by GitBook
On this page
  1. 포건시 서버 | Server
  2. 서버 부하 분산 모드 설정 (로드밸런싱)

Linux 서버에 Redis 설치 및 구성

PreviousLinux 서버에 Nginx 설치NextNFS를 통해 NAS 폴더를 Linux에 마운트

Last updated 1 year ago

Linux 서버에 Redis를 설치하는 방법을 소개합니다.

Debian 기반(운영 체제는 Ubuntu)

단계

레디스를 설치합니다.

① SSH 터미널을 통해 다음 명령을 실행하여 apt 패키지 목록을 업데이트합니다.

sudo apt update

② 다음 명령어를 실행하여 Redis를 설치합니다.

sudo apt install redis-server

③설치가 완료되면 Redis 서비스가 자동으로 시작됩니다. 다음 명령을 실행하여 서비스 상태를 확인합니다.

sudo systemctl status redis-server

다음과 유사한 출력은 Redis가 서버에 설치되어 실행되고 있음을 나타냅니다.

● edis-server.service - Advanced key-value store
   Loaded: loaded (/lib/systemd/system/redis-server.service; enabled; vendor preset: enabled)
   Active: active (running) since Sun 2018-10-28 05:10:45 PDT; 2h ago
     Docs: http://redis.io/documentation,
           man:redis-server(1)
  Process: 2197 ExecStop=/bin/kill -s TERM $MAINPID (code=exited, status=0/SUCCESS)
  Process: 2201 ExecStart=/usr/bin/redis-server /etc/redis/redis.conf (code=exited, status=0/SUCCESS)
 Main PID: 2226 (redis-server)
    Tasks: 4 (limit: 2319)
   CGroup: /system.slice/redis-server.service
           `-2226 /usr/bin/redis-server 0.0.0.0:6379

서버에서 IPv6이 비활성화되어 있으면 Redis 서비스가 시작되지 않습니다.

기본적으로 Redis는 원격 연결을 허용하지 않습니다. 127.0.0.1(localhost)에서 Redis를 실행하는 컴퓨터에서만 Redis 서버에 연결할 수 있습니다.

원격 호스트에서 Redis 서버에 연결하려는 경우에만 아래 단계를 따르십시오. 단일 서버 설정을 사용하고 애플리케이션과 Redis가 동일한 시스템에서 실행 중인 경우 원격 액세스를 활성화할 필요가 없습니다.

① 원격 연결을 허용하도록 Redis를 구성하려면 텍스트 편집기로 Redis 구성 파일을 엽니다. 다음 명령을 실행합니다.

sudo vi /etc/redis/redis.conf

이 파일에서 "bind 127.0.0.1 ::1 "로 시작하는 줄을 찾아 " 127.0.0.1 "을 " "로 바꿉니다 .0.0.0.0

# IF YOU ARE SURE YOU WANT YOUR INSTANCE TO LISTEN TO ALL THE INTERFACES# JUST COMMENT THE FOLLOWING LINE.# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~bind 0.0.0.0 ::1

편집이 끝나면 저장하고 닫습니다.

② 다음 명령어를 실행하여 Redis 서비스를 재시작하여 적용합니다.

sudo systemctl restart redis-server

③ 다음 명령을 실행하여 redis가 포트 6379의 모든 인터페이스에서 수신 대기하는지 확인합니다.

ss -an | grep 6379

출력은 다음과 유사합니다. "0.0.0.0"은 이 시스템의 모든 IPv4 주소를 의미합니다.

tcp LISTEN 0 128 0.0.0.0:6379 0.0.0.0:*

tcp LISTEN 0 128 [::]:6379 [::]:*

④원격 컴퓨터에서 TCP 포트 6379를 활성화하도록 방화벽 규칙을 추가합니다.

UFW를 사용하여 방화벽을 관리하고 있고 192.168.121.0/24 서브넷에서 액세스를 허용하려는 경우 다음 명령을 실행할 수 있습니다.

sudo ufw allow proto tcp from 192.168.121.0/24 to any port 6379

이 시점에서 Redis 서버는 TCP 포트 6379에서 원격 연결을 수락합니다. 방화벽이 신뢰할 수 있는 IP 범위의 연결만 허용하도록 구성되어 있는지 확인해야 합니다.

모든 것이 올바르게 설정되었는지 확인하려면 redis-cli 유틸리티를 사용하여 원격 시스템에서 Redis 서버에 ping을 시도할 수 있습니다. 다음 명령을 실행합니다.

redis-cli -h <REDIS_IP_ADDRESS> ping

이 명령은 PONG 응답을 반환해야 합니다.

PONG

RPM 기준 (운영체제는 CentOS, RedHat 7.6)

단계

Redis를 설치하기 전에 먼저 EPEL(Extra Packages for Enterprise Linux) 리포지토리를 서버의 패키지 목록에 추가해야 합니다. EPEL은 많은 오픈 소스 애드온 패키지를 포함하는 패키지 저장소이며 대부분 Fedora 프로젝트에서 유지 관리합니다.

① 다음 명령을 실행하여 yum을 사용하여 EPEL을 설치합니다.

sudo yum install epel-release

②EPEL 설치가 완료되면 다음 명령을 실행하여 yum을 사용하여 Redis를 설치합니다.

sudo yum install redis -y

③ 설치가 완료되면 다음 명령어를 실행하여 Redis 서비스를 시작합니다.

sudo systemctl start redis.service

④서버가 시작될 때 Redis가 자동으로 시작되도록 하려면 다음 명령을 실행할 수 있습니다.

sudo systemctl enable redis

⑤ 다음 명령을 실행하여 Redis의 상태를 확인합니다.

sudo systemctl status redis.service

출력은 다음과 유사하며 Redis가 정상적으로 실행되고 있음을 나타냅니다.

Output● redis.service - Redis persistent key-value database
   Loaded: loaded (/usr/lib/systemd/system/redis.service; disabled; vendor preset: disabled)
  Drop-In: /etc/systemd/system/redis.service.d
           └─limit.conf
   Active: active (running) since Thu 2018-03-01 15:50:38 UTC; 7s ago
 Main PID: 3962 (redis-server)
   CGroup: /system.slice/redis.service
           └─3962 /usr/bin/redis-server 127.0.0.1:6379

⑥ Redis가 실행되는지 확인한 후 다음 명령어를 실행하여 설정을 테스트합니다.

redis-cli ping

명령을 실행한 후 응답으로 PONG이 출력되어야 합니다. 이 경우 이제 서버에서 Redis를 실행하고 보안을 강화하도록 구성을 시작할 수 있습니다.

Redis를 보호하는 효과적인 방법은 실행 중인 서버를 보호하는 것입니다. 즉, Redis가 로컬 호스트 또는 사설 IP 주소에만 바인딩되고 서버에 실행 중인 방화벽이 있는지 확인하는 것입니다.

이 튜토리얼을 사용하여 Redis 클러스터를 설정하기로 선택한 경우 어디에서나 연결을 허용하도록 구성 파일을 업데이트해야 합니다. 이는 localhost 또는 개인 IP에 바인딩하는 것보다 덜 안전합니다.

①이 문제를 해결하기 위해 먼저 다음 명령을 실행하여 Redis 구성 파일을 편집용으로 열어야 합니다.

sudo vi /etc/redis.conf

②이 파일에서 bind로 시작하는 줄을 찾고 주석 처리되지 않았는지 확인하십시오.

bind 127.0.0.1

Redis를 다른 IP 주소에 바인딩해야 하는 경우(예: 별도의 호스트에서 Redis에 액세스하기 위해) 프라이빗 IP 주소에 바인딩하는 것이 좋습니다. 퍼블릭 IP 주소에 바인딩하면 외부 세계에 대한 Redis 인터페이스의 노출이 증가하기 때문입니다.

bind 0.0.0.0

전제 조건을 충족하고 서버에 방화벽을 설치했으며 다른 호스트에서 Redis에 연결하지 않으려는 경우 Redis에 대한 추가 방화벽 규칙을 추가할 필요가 없습니다.

Redis 서버의 기본 독립 실행형 설치는 루프백 인터페이스(127.0.0.1 또는 localhost)에서만 수신하므로 기본 포트에서 들어오는 트래픽에 대해 걱정할 필요가 없습니다.

③ 다른 호스트에서 Redis에 액세스하려면 firewall-cmd 명령을 사용하여 firewalld 구성을 일부 변경해야 합니다. 마찬가지로 호스트가 프라이빗 IP 주소를 사용하여 호스트에서 Redis 서버에 액세스하도록 허용하여 서비스에서 사용하는 호스트 수를 제한해야 합니다.

1) 다음 명령을 실행하여 방화벽 정책에 전용 Redis 영역을 추가합니다.

sudo firewall-cmd --permanent --new-zone=redis

2) 그런 다음 열려는 포트를 지정하여 다음 명령을 실행하십시오. Redis는 기본적으로 포트 6379를 사용합니다.

sudo firewall-cmd --permanent --zone=redis --add-port=6379/tcp

3) 그런 다음 다음 명령을 실행하여 방화벽을 통과하고 Redis에 액세스할 수 있는 사설 IP 주소를 지정합니다.

sudo firewall-cmd --permanent --zone=redis --add-source=client_server_private_IP

4) 다음 명령을 실행한 후 방화벽을 다시 로드하여 새 규칙을 적용합니다.

sudo firewall-cmd --reload

이 구성에서 방화벽은 클라이언트의 IP 주소에서 패킷을 볼 때 사설 Redis 영역의 규칙을 해당 연결에 적용합니다. 다른 모든 연결은 기본 공개 영역에서 처리됩니다. 기본 영역의 서비스는 모든 연결에 적용되며 명시적으로 일치하지 않는 서비스로 제한되지 않으므로 규칙이 해당 영역에 자동으로 적용되므로 Redis 영역에 다른 서비스(예: SSH)를 추가할 필요가 없습니다. 연결.

5) Iptables를 사용하여 방화벽을 설정하도록 선택한 경우 다음 명령을 실행하여 Redis가 사용 중인 포트에 대한 보조 호스트 액세스 권한을 부여해야 합니다.

sudo iptables -A INPUT -i lo -j ACCEPT sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT sudo iptables -A INPUT -p tcp -s client_servers_private_IP/32 --dport 6379 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT sudo iptables -P INPUT DROP

모든 방화벽 도구가 작동합니다. 알 수 없는 사람이 서버에 액세스할 수 없도록 방화벽을 가동하고 실행하는 것이 중요합니다. 다음으로 강력한 암호로만 액세스할 수 있도록 Redis를 구성합니다.

Redis에 대한 암호를 이미 구성한 경우. 이 섹션의 지침에 따라 더 안전한 암호를 설정할 수 있습니다. 이 섹션에서는 아직 설정하지 않은 경우 데이터베이스 서버 비밀번호를 설정하는 방법에 대해 설명합니다.

Redis 암호를 구성하면 내장 보안 기능 중 하나인 auth 명령이 활성화됩니다. 이 기능을 사용하려면 클라이언트가 데이터베이스에 액세스하기 전에 인증해야 합니다. 바인드 설정과 마찬가지로 비밀번호는 Redis의 구성 파일 " /etc/redis.conf " 에서 직접 구성됩니다 .

① 다음 명령을 실행하여 파일을 다시 엽니다.

sudo vi /etc/redis.conf

②"보안" 섹션을 찾은 다음 다음과 같이 표시되는 주석이 있는 지침을 찾습니다.

# requirepass fobared

"#"을 제거하여 주석을 제거한 다음 "fobared"를 강력한 암호를 설정한 것으로 변경하십시오. 직접 작성하는 대신 apg 또는 pwgen과 같은 도구를 사용하여 생성할 수 있습니다.

암호를 생성하는 애플리케이션을 설치하지 않으려면 다음 명령을 사용할 수 있습니다.

이 명령을 입력할 때마다 동일한 비밀번호가 생성됩니다. 다른 암호를 생성하려면 따옴표로 묶인 단어를 다른 단어나 구로 변경하십시오.

echo "digital-ocean" | sha256sum

이 명령으로 생성된 암호는 매우 강력하고 매우 긴 암호이며 Redis가 요구하는 암호 유형과 정확히 일치합니다. 다음과 같이 이 명령으로 생성된 암호를 "requirepass"의 새 값으로 복사하여 붙여넣습니다.

requirepass password_copied_from_output

더 짧은 암호를 생성하려면 대신 아래 명령을 실행하십시오. 마찬가지로 다음과 같은 암호를 생성하지 않도록 따옴표로 묶인 단어를 변경합니다.

echo "digital-ocean" | sha1sum

③ 비밀번호를 설정한 후 파일을 저장하고 닫은 후 다음 명령을 실행하여 Redis를 다시 시작합니다.

sudo systemctl restart redis.service

④ 다음 명령을 실행하여 암호가 유효한지 테스트합니다.

redis-cli

⑤ 다음은 Redis 비밀번호가 유효한지 테스트하는 일련의 명령어입니다. 첫 번째 명령은 인증 전에 키를 일부 값으로 설정하려고 시도합니다.

set key1 10

이 명령은 아직 인증되지 않았기 때문에 작동하지 않으므로 Redis는 아래와 같이 오류를 반환합니다.

출력(오류) NOAUTH 인증이 필요합니다.

다음 명령을 실행하여 Redis 구성 파일에 지정된 암호를 사용하여 인증합니다.

auth your_redis_password

Redis는 다음과 같이 인증되었음을 확인합니다.

출력OK

그런 다음 이전 명령을 다시 실행하면 성공해야 합니다.

set key1 10 OutputOK

다음 명령을 실행하여 Redis에 새 키 값을 쿼리합니다.

get key1 OutputOK

다음 명령을 실행하여 redis-cli를 종료합니다. "exit"를 사용할 수도 있습니다.

quit

위의 명령을 실행한 후에는 권한이 없는 사용자가 Redis에 액세스하기 어려워야 합니다. SSL 또는 VPN 없이 원격으로 Redis에 연결하는 경우 외부 사용자는 여전히 암호화되지 않은 암호를 볼 수 있습니다.

다음으로 악의적인 공격자로부터 Redis를 보호하기 위해 Redis 명령의 이름을 바꾸는 방법을 살펴보겠습니다.

Redis에 내장된 또 다른 보안 기능을 사용하면 위험한 것으로 간주되는 특정 명령의 이름을 바꾸거나 완전히 비활성화할 수 있습니다. 권한이 없는 사용자가 실행할 때 이러한 명령을 사용하여 데이터를 재구성, 파기 또는 지우는 데 사용할 수 있습니다.

일부 알려진 위험한 명령은 다음과 같습니다.

  • FLUSHDB

  • FLUSHALL

  • KEYS

  • PEXPIRE

  • DEL

  • CONFIG

  • SHUTDOWN

  • BGREWRITEAOF

  • BGSAVE

  • SAVE

  • SPOP

  • SREM RENAME DEBUG

명령을 비활성화하거나 이름을 바꿀지 여부는 사이트 조건에 따라 다릅니다. 잠재적으로 남용될 수 있는 명령을 절대 사용하지 않을 것임을 알고 있으면 비활성화할 수 있습니다. 그렇지 않으면 이름을 바꿔야 합니다.

인증 암호와 마찬가지로 이름 바꾸기 또는 비활성화 명령도 " /etc/redis.conf " 파일 의 섹션에서 구성 됩니다.

① Redis 명령을 활성화 또는 비활성화하려면 다음 명령을 실행하고 편집을 위해 구성 파일을 다시 여십시오.

sudo vi /etc/redis.conf

지침: 다음은 예입니다. 이해하기 쉬운 명령을 비활성화하거나 이름을 바꾸도록 선택해야 합니다. 이러한 명령을 직접 검토하고 " redis.io/Commands " 에서 오용될 수 있는 상황을 식별할 수 있습니다 .

명령을 비활성화하거나 종료하려면 다음과 같이 빈 문자열로 이름을 바꾸십시오.

#It is also possible to completely kill a command by renaming it into

#an empty string:

rename-command FLUSHDB "" rename-command FLUSHALL "" rename-command DEBUG ""

명령의 이름을 바꾸려면 아래와 같이 다른 이름을 지정하십시오.

rename-command CONFIG ""

rename-command SHUTDOWN SHUTDOWN_MENOT

rename-command CONFIG ASC12_CONFIG

②변경 사항을 저장하고 파일을 닫은 후 다음 명령을 실행하여 Redis를 다시 시작하여 변경 사항을 적용합니다.

sudo systemctl restart redis.service

③ 다음 명령을 실행하여 새 명령을 테스트합니다.

redis-cli

④ 앞에서 정의한 비밀번호를 사용하여 인증하려면 다음 명령을 실행하십시오 .

auth your_redis_password

OutputOK

⑤ CONFIG 명령의 이름을 ASC12_CONFIG로 변경했다고 가정하면 CONFIG 명령을 사용하려는 시도는 실패해야 합니다.

config get requirepass

출력(오류) ERR unknown 명령 'config'

이름이 바뀐 명령을 호출하면 성공해야 합니다(대소문자 구분 안 함).

asc12_config get requirepass

Output1) "requirepass"

2) "your_redis_password"

⑥ 다음 명령을 실행하여 redis-cli를 종료합니다.

exit

이미 Redis 명령줄을 사용하고 있는 경우 Redis를 다시 시작하면 다시 인증해야 합니다. 그렇지 않고 명령을 입력하면 다음 오류가 발생합니다.

출력NOAUTH 인증이 필요합니다.

소유권과 권한을 변경하여 Redis 설치의 보안 프로필을 높입니다 . 여기에는 Redis에 액세스해야 하는 사용자만 해당 데이터를 읽을 수 있는 권한을 갖도록 하는 것이 포함됩니다. 기본적으로 이 사용자는 redis 사용자입니다.

① 상위 디렉토리의 긴 목록에서 Redis 데이터 디렉토리를 grep-ing하여 이를 확인할 수 있습니다 . 명령과 해당 출력은 다음과 같습니다.

ls -l /var/lib | grep redis

Outputdrwxr-xr-x 2 redis redis 4096 8월 6일 09:32 redis

② 보시다시피 redis 데이터 디렉토리는 redis 사용자가 소유하고 있으며, redis 그룹에는 2차 접근 권한이 부여되어 있습니다. 이 소유권 설정은 안전하지만 폴더의 권한(755로 설정)은 안전하지 않습니다. redis 사용자만 폴더와 해당 콘텐츠에 액세스할 수 있도록 하려면 권한 설정을 770으로 변경합니다.

sudo chmod 770 /var/lib/redis

③ 변경해야 할 또 다른 권한은 Redis 구성 파일의 권한입니다. 기본적으로 파일 권한은 644이고 루트가 소유하며 루트 그룹은 2차 소유권을 가집니다.

ls -l /etc/redis.conf

출력-rw-r--r-- 1 루트 루트 30176 2014년 1월 14일 /etc/redis.conf

④ 644 권한이 공개됩니다. 구성 파일에는 4단계에서 구성한 암호화되지 않은 암호가 포함되어 있으므로 보안 문제가 발생합니다. 즉, 구성 파일의 소유권과 권한을 변경해야 합니다. 이상적으로는 redis 사용자가 소유하고 redis 그룹이 2차 소유권을 가져야 합니다. 따라서 다음 명령을 실행합니다.

sudo chown redis:redis /etc/redis.conf

그런 다음 파일 소유자만 파일을 읽거나 쓸 수 있도록 권한을 변경합니다.

sudo chmod 600 /etc/redis.conf

다음 명령을 실행하여 새 소유권 및 권한을 확인하십시오.

ls -l /etc/redis.conf

Outputtotal 40 -rw------- 1 redis redis 29716 Sep 22 18:32 /etc/redis.conf

⑤마지막으로 다음 명령을 실행하여 Redis를 다시 시작합니다.

sudo systemctl restart redis.service

Redis 원격 액세스를 구성합니다.

레디스를 설치합니다.

Redis를 바인딩하고 방화벽 보호를 사용합니다.

배포판에서 제공하는 메커니즘을 사용하여 Iptables 방화벽 규칙을 저장 해야 합니다. Iptables에 대한 자세한 내용은 Iptables 참조하십시오 .

Redis 암호를 구성합니다.

위험한 명령의 이름을 바꿉니다.

데이터 디렉토리 소유권 및 파일 권한을 설정합니다.

essentials 가이드를