- 조건 : ArcGIS Desktop 10.8.0 + PostgreSQL 11.x + PostGIS 30_11
- 기반 : CentOS 7
* ArcGIS 버전에 대한 System Requirement를 숙지하여 각 단위 S/W에 맞는 버전 설치
> PostgreSQL 설치
※ Network 활성화 : yum 명령어를 통해 설치파일을 다운로드해야 함으로 OS 초기 설치시 Network가 비활성화 되는 경우 존재함.
$ifup /etc/sysconfig/network-scripts/ifcfg-ens33
- PostgreSQL 다운로드 및 설치
위 화면과 같이 PostgreSQL 홈페이지의 다운로드 화면에서 제공하는 스크립트를 Linux에서 실행하기.
$sudo rpm -Uvh https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
$sudo yum install -y postgresql11-server postgresql11-contrib
$sudo /usr/pgsql-11/bin/postgresql-11-setup initdb
- PostgreSQL 설정
: 설정파일 수정
$su - root
$vi /var/lib/pgsql/11/data/pg_hba.conf
다음과 같이 변경값으로 편집
원본 | 변경 |
local all all peer | local all all md5 |
host all all 127.0.0.1/32 ident | host all all 0.0.0.0/0 md5 |
host all all ::1/128 ident | host all all ::1/128 md5 |
변경 설정 적용을 위한 재시작
$systemctl start postgresql-11
$systemctl enable postgresql-11
$systemctl status postgresql-11
: postgres 암호 변경 (root 로 실행)
$su - postgres -c psql
#ALTER USER postgres PASSWORD '비밀번호';
생성된 database 확인
#select datname from pg_database;
> Linux 방화벽 설정(port 5432)
$firewall-cmd --permanent --zone=public --add-port=5432/tcp
$firewall-cmd --permanent --zone=trusted --add-source={Client IP address}/32
$firewall-cmd --permanent --zone=trusted --add-port=5432/tcp
$firewall-cmd --reload
> PostGIS 3.0 설치
: 설치 가능 버전 조회
$yum search [검색어]
$yum list | grep [패키지 이름] | more
: postgis 설치
$yum install epel-release
$yum install postgis30_11.x86_64
> ArcGIS 설정
- st_geometry 라이브러리 파일 붙여넣기
: \ArcGIS 설치폴더\DatabaseSupport\PostgreSQL\운영체제\st_geometry.so
$cp st_geometry.so /usr/pgsql-11/lib/
> Client PC에 pgAdmin 설치
: 콘솔 명령어가 익숙치 않기도 하고 원격관리를 위해 Client PC에 pgAdmin 설치 (pgAdmin 홈페이지에서 다운로드 후 설치)
- pgAdmin에서 postgres 계정으로 Login
: sde, GIS 사용자 계정 생성 + 권한 [Login, SuperUser] 부여
: GIS 사용할 Database 생성 + sde 소유자 부여
- pgAdmin에서 생성된 GIS Database을 위한 sde 계정으로 Login
: "create extension postgis;" 질의문 실행
: "select postgis_version();" 으로 확인
> ArcCatalog를 통한 설정
- 도구 中 'Create Enterprise Geodatabase'를 통해 공간DB 생성
: Instance는 PostgreSQL 서버 ip, postgres 암호, sde 암호 필수 입력
: keycodes 파일 위치 = ArcGIS Server의 "C:\Program Files\ESRI\License버전\sysgen" 에서 불러오기.
: pgAdmin의 Database > * > Schema에 'sde' 항목이 생성됨.
- Database Connection 후 Administration > Add User
: Database Connections 항목을 통해 PostgreSQL에 sde 계정으로 접속
: 마우스 오른쪽 'Create Database User' 로 생성된 GIS DB 사용자 계정 정보 입력 및 실행
: 생성된 Database > Schema에 GIS DB 사용자 명칭으로 생성됨 확인
- 관리자 권한 cmd에서 파이선 실행
: 첨부파일 참조
: create_database_user.py --DBMS POSTGRESQL -i PostgreSQL_ip -D GIS_DB_명칭 -U postgres -P {postgres 암호} --utype DATABASE_USER -u {사용자 ID} -p {사용자 암호}
> 생성된 사용자에게 권한 부여
- pgAdmin에서 sde 계정으로 Login
: "GRANT USAGE ON SCHEMA {GIS DB 사용자 이름} TO PUBLIC;" 실행
: "GRANT SELECT, INSERT, UPDATE, DELETE ON public.Geometry_columns TO {사용자 이름};" 실행
> PostgreSQL 재시작 및 점검
- ArcCatalog > Database Connections를 통해 GIS File/Data의 Import
: GIS DB 사용자에 대한 Table에 GIS Data가 Import 되었는지 확인
p.s 상기 내용은 ESRI의 기술문서, Trouble Shooting 등에 관련한 내용 등을 참고하여 종합하였습니다.
중복되는 절차 등이 존재하는 것 같으나, 여러번의 삽질 끝에 정상적으로 구동됨을 확인하며 기록하였습니다.