올챙이시절 기록소

Postgresql 9.6 on Windows 커맨드라인으로 설치하기 ( gitlab-ci 빌드 동작 중 한 파트 ) 본문

2017/1월

Postgresql 9.6 on Windows 커맨드라인으로 설치하기 ( gitlab-ci 빌드 동작 중 한 파트 )

allroundplayer 2017. 10. 23. 16:55

빌드스크립트 중 Postgresql DB를 설치하는 부분이다


2016년 1월


PG를 폴더 째 형상관리하는 것이 비효율적이며 기술적으로 어려운부분이 많아


매번 설치 및 삭제하는 것으로 로직을 변경하였다




PG는 크게  EDBBigSQL 두 곳에서 파일을 제공하고 있다


 EDB에서 다운받은 installer가 불가사의한 이유로 XEN에서 설치가 불가하여


BigSQL로 갈아탔다


먼저, 인스톨러에 관련된 커맨드라인 옵션을 공부한다, 그리고


3개의 버전에 해당하는 


9.4.10 ( install_pg94101.bat )

9.6.1 ( install_pg9611.bat )

9.6.3 ( install_pg9631.bat )


자동 설치 스크립트를 작성하였다



install_pg94101.bat


set PG_ROOT_HOME=C:\Database
set PG_HOME=%PG_ROOT_HOME%\pg94\bin
set PGDATA=%PG_ROOT_HOME%\data\pg94

set PGPASSWORD=postgres
set CONFDIR=C:\Multi-Runner\mfobuild\07_build_mfopg
PostgreSQL-9.4.10-1-win64-bigsql.exe --mode unattended --unattendedmodeui minimal --disable-components bam2 --enable-components pgAdmin --prefix "%PG_ROOT_HOME%" --pgdatadir "%PGDATA%" --password postgres --pgservicename "PostgreSQL" --pgfreeport 5432 --locale C
cd %PG_HOME%
initdb.exe -D "%PGDATA%" --username=postgres --locale C --encoding UTF8
cp %CONFDIR%\pg94101\pg_hba.conf %PGDATA%\pg_hba.conf
cp %CONFDIR%\pg94101\postgresql.conf %PGDATA%\postgresql.conf
pg_ctl.exe register -N "PostgreSQL" -D "%PGDATA%"
sc start PostgreSQL
createuser.exe -s -U postgres
psql.exe -p 5432 -U postgres -c "alter user postgres password 'postgres'";
createdb.exe --host=localhost --encoding UTF8 --port=5432 --username=postgres MFO


install_pg9611.bat


set PG_ROOT_HOME=C:\Database
set PG_HOME=%PG_ROOT_HOME%\pg96\bin
set PGDATA=%PG_ROOT_HOME%\data\pg96
set PGPASSWORD=postgres
set CONFDIR=C:\Multi-Runner\mfobuild\07_build_mfopg
PostgreSQL-9.6.1-1-win64-bigsql.exe --mode unattended --unattendedmodeui minimal --disable-components bam2 --enable-components pgAdmin --prefix "%PG_ROOT_HOME%" --pgdatadir "%PGDATA%" --password postgres --pgservicename "PostgreSQL" --pgfreeport 5432 --locale C
cd %PG_HOME%
initdb.exe -D "%PGDATA%" --username=postgres --locale C --encoding UTF8
cp %CONFDIR%\pg9611\pg_hba.conf %PGDATA%\pg_hba.conf
cp %CONFDIR%\pg9611\postgresql.conf %PGDATA%\postgresql.conf
pg_ctl.exe register -N "PostgreSQL" -D "%PGDATA%"
sc start PostgreSQL
createuser.exe -s -U postgres
psql.exe -p 5432 -U postgres -c "alter user postgres password 'postgres'";
createdb.exe --host=localhost --encoding UTF8 --port=5432 --username=postgres MFO


같은 9.6 버전이지만 지원하는 옵션이 약간 달라져 아래와 같이 바뀌었다


install_pg9631.bat


set PG_ROOT_HOME=C:\Database
set PG_HOME=%PG_ROOT_HOME%\pg96\bin
set PGDATA=%PG_ROOT_HOME%\data\pg96
set PGPASSWORD=postgres
set CONFDIR=C:\Multi-Runner\mfobuild\07_build_mfopg
PostgreSQL-9.6.3-1-win64-bigsql.exe --mode unattended --unattendedmodeui minimal --disable-components bam4 --enable-components pgAdmin --installdir "%PG_ROOT_HOME%" --pgdatadir "%PGDATA%" --password postgres --pgport 5432 --locale C --devopsUser maxgauge --devopsPassword maxgauge
cd %PG_HOME%
initdb.exe -D "%PGDATA%" --username=postgres --locale C --encoding UTF8
cp %CONFDIR%\pg9631\pg_hba.conf %PGDATA%\pg_hba.conf
cp %CONFDIR%\pg9631\postgresql.conf %PGDATA%\postgresql.conf
pg_ctl.exe register -N "PostgreSQL" -D "%PGDATA%"
sc start PostgreSQL
createuser.exe -s -U postgres
psql.exe -p 5432 -U postgres -c "alter user postgres password 'postgres'";
createdb.exe --host=localhost --encoding UTF8 --port=5432 --username=postgres MFO


배치파일로 작성하였다


set으로 시작하는 부분은 변수선언이다


수행문장은 짧으나 많은 절차를 담고 있다

 

1. DB 엔진설치

2. public DB 생성

3. 설정파일복사

4. 서비스 등록

5. postgres 유저생성

6. postgres pass설정

7. MFO DB 생성


install_pg9631.bat 을 한 번 수행해보면


0


이러하다


설치한 DB를 패키징에 포함한 후


이후 삭제하는데 


이 부분의 스크립트는 다음과 같다 ( 버전상관없음 )


detach_pg.bat


set PG_ROOT_HOME=C:\Database
set PG_HOME=%PG_ROOT_HOME%\pg94\bin
set PGDATA=%PG_ROOT_HOME%\data\pg94

sc stop PostgreSQL
sc delete PostgreSQL

%PG_ROOT_HOME%\uninstall\uninstall.exe --mode unattended
rm -rf %PG_ROOT_HOME%


주요 절차는 다음과 같고


1. PostgreSQL 서비스 down

2. PostgreSQL 서비스 remove

3. uninstaller 수행


실제 수행되는 동작은


0


이렇게 돌아간다



PS. PosgreSQL 10버전이 나온다고 한다.


 오라클 12C에 이어 18C도 놀라울 따름인데 세상 참 빠르다



Comments