/*
-- Title : [PGS15.6] Postgresql 설치 매뉴얼 - ver.dbrang
*/
!!! 기존 9.4 버전에서 15.6 버전으로 설치 매뉴얼 업데이트
1. 서버 OS, CPU 체크
[root] # arch ㅌ86_64 [root] # cat /etc/redhat-release Rocky Linux release 9.3 (Blue Onyx) [root] # uname -a Linux localhost 5.14.0-362.8.1.el9_3.x86_64 #1 SMP PREEMPT_DYNAMIC Wed Nov 8 17:36:32 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux [root] # |
• x86, x64 확인(32bit, 64bit)
• OS Version 확인
2. 스토리지 체크
[root] # df -k Filesystem 1K-blocks Used Available Use% Mounted on devtmpfs 4096 0 4096 0% /dev tmpfs 1867752 0 1867752 0% /dev/shm tmpfs 747104 9336 737768 2% /run /dev/mapper/rl-root 13037568 6078728 6958840 47% / /dev/sda1 983040 305728 677312 32% /boot tmpfs 373548 100 373448 1% /run/user/0 /dev/sr0 52272 52272 0 100% /run/media/root/VBox_GAs_7.0.14 [root] # |
• Postgres 홈디렉토리 설치 용량 확인
• 데이터 및 아카이브 저장 위치 확인
3. PostgreSQL 다운로드 및 압축 해제
[root] # cd /usr/local/src [root] # wget https://ftp.postgresql.org/pub/source/v15.6/postgresql-15.6.tar.gz ... postgresql-15.6.tar.gz 100%[=======================================>] 28.90M 6.41MB/s in 4.5s 2024-04-27 23:10:08 (6.41 MB/s) - `postgresql-15.6.tar.gz' saved [30299236/30299236] [root] # tar zxvf postgresql-15.6.tar.gz |
• 사용할 PostgreSQL 버전 다운로드 및 압축 해제
4. OS 파라미터 수정
--// limits.conf 수정 [root] # vi /etc/security/limits.conf ... ### PostgreSQL Install 내용 추가 postgres soft nofile 65535 postgres hard nofile 65535 --// sysctl.conf 수정 [root] # vi /etc/sysctl.conf ... ### 아래 내용 추가 fs.file-max=65535 [root] # sysctl -p fs.file-max=65535 |
- Production 서비스를 위해서는 필수, 개발버전에서는 스킵 가능
5. 패키지 업데이트
[root] # yum -y install glibc make gcc gcc-c++ readline readline-devel zlib zlib-devel autoconf openssl openssl-devel uuid gettext gettext-devel python python-devel postgresql-libs |
6. postgres 사용자 생성
[root] # useradd -d /home/postgres postgres [root] # cat /etc/passwd -- 사용자 등록 확인 ... postgres:x:1001:1001::/home/postgres:/bin/bash [root] # passwd postgres -- 사용자 PWD 생성 [root] # pwconv -- PWD 반영 [root] # id postgres uid=1001(postgres) gid=1001(postgres) groups=1001(postgres) [root] # |
• postgres 홈디렉토리 : /home/postgres
7. bash_profile 변경
[root] # su - postgres [postgres] $ vi .bash_profile -- 아래 파란색 텍스트 붙여넣기 <BOF> # .bash_profile # Get the aliases and functions if [ -f ~/.bashrc ]; then . ~/.bashrc fi # User specific environment and startup programs PATH=$PATH:$HOME/bin POSTGRES_HOME=/home/postgres/pgsql LD_LIBRARY_PATH=/home/postgres/pgsql/lib PGDATA=$POSTGRES_HOME/data MANPATH=$MANPATH:$POSTGRES_HOME/man PATH=$POSTGRES_HOME/bin:$PATH export PATH export POSTGRES_HOME export PGDATA export MANPATH export LD_LIBRARY_PATH <EOF> [postgres] $ source .bash_profile [postgres] $ exit 로그아웃 [root] # |
8. PostgreSQL 설치
[root] # cd /usr/local/src/postgresql-15.6 [root] # ./configure --prefix=/home/postgres/pgsql --enable-depend --enable-nls=ko --with-python ... [root] # make [root] # make install |
• 설치디렉토리 : /home/postgres/pgsql
• 나머지 옵션은 그대로.
• 패키지 에러 발생시 # yum –y install로 해당 패키지 설치 후 재진행.
9. 데이터 디렉토리 추가/소유자 할당
[root] # mkdir –p /home/postgres/pgsql/data [root] # chown -R postgres.postgres /home/postgres/pgsql |
10. 데이터베이스 클러스터 생성
[root] # su - postgres [postgres] $ cd /home/postgres/pgsql/bin [postgres] $ ./initdb -E utf-8 -D /home/postgres/pgsql/data ... 작업완료. 이제 다음 명령을 이용해서 서버를 가동 할 수 있습니다: pg_ctl -D /home/postgres/pgsql/data -l 로그파일 start [root] # |
• 데이터디렉토리(PGDATA) : /home/postgres/pgsql/data
11. 데이터베이스 기동
[postgres] $ pg_ctl start 2024-04-27 23:38:04.841 KST [52989] 로그: 이제 데이터베이스 서버로 접속할 수 있습니다 완료 서버 시작됨 [postgres] $ |
12. Superuser 생성
[postgres] $ psql postgres=# CREATE USER <account> LOGIN PASSWORD '<비밀번호>' SUPERUSER; CREATE USER postgres=# \q |
13. postgresql.conf 변경
[postgres] $ vi /home/postgres/pgsql/data/postgresql.conf ... listen_addresses = 'localhost' → '*' 로 변경 |
14. pg_hba.conf 변경
PostgreSQL 서버에 어떤 사용자가 어떤 방식으로 연결할 수 있는지 정의하는 파일. 이 파일에 포함된 각 행은 연결 방법, 허용되는 사용자 및 호스트, 사용되는 인증 방식을 지정.
- md5 : PostgreSQL 9버전까지의 기본 암호 인증 방식, md5 해시 알고리즘 사용, 사용하지 않는게 좋음.
- password : PostgreSQL 10버전 이후 도입된 향상된 암호 인증 방식, SCRAM-SHA-26 알고리즘 사용
[postgres] $ vi /home/postgres/pgsql/data/pg_hba.conf ... #-- 아래 내용 추가 host all all 192.168.103.0/24 md5 #사용 지양 host all all 192.168.103.0/24 password #추가 #-- 가상 환경(NAT 네트워크)에서 HOST도 포함해 줘야 함 host all all 10.0.2.0/24 password #추가 |
15. DB 재시작
[postgres] $ pg_ctl restart ... 2024-04-27 23:50:34.519 KST [53033] 로그: 이제 데이터베이스 서버로 접속할 수 있습니다 완료 서버 시작됨 [postgres] $ |
16. 방화벽 오픈/재시작
[postgres] $ exit 로그아웃 --// 방화벽 상태 확인 [root] # systemctl status firewalld ... Active: active (running) since Sat 2024-04-27 22:45:51 KST; 1h 7min ago ... --// 영구 포트 허용 [root] # firewall-cmd --permanent --add-port=5432/tcp success --// 방화벽 리로드(필수) [root] # firewall-cmd --reload success [root] # |
17. 재부팅시 자동 시작 설정 및 재시작
[root] # vi /etc/rc.local ... su - postgres -c'pg_ctl -D ''/home/postgres/pgsql/data'' start' #추가 [root] # shutdown –r now ... 재부팅 |
- 중간Qutation 변환 주의
18. 재시작 확인
[postgres] $ pg_ctl status pg_ctl: 가동 중인 서버가 없음 [postgres] $ pg_ctl start ... 서버 시작됨 [postgres] $ pg_ctl status pg_ctl: 서버가 실행 중임 (PID: 2983) /home/postgres/pgsql/bin/postgres [postgres] $ psql postgres=# select version(); version ---------------------------------------------------------------------------------------------------------- PostgreSQL 15.6 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 11.4.1 20230605 (Red Hat 11.4.1-2), 64-bit (1개 행) postgres=# |
- Reboot 후 정상 '자동 시작'이 되지 않음. 확인 필요.