저는 Ubuntu ARM32에서 최신 버전의 PostgreSQL(17.4)을 성공적으로 컴파일 및 설치했습니다.

이 문서의 명령은 주로 PostgreSQL 공식 문서에서 가져왔습니다. 이 문서의 각 명령을 실제로 테스트했습니다.

여기에서 성공적으로 설치할 수 있는 시스템을 볼 수 있습니다. PostgreSQL 빌드 팜

PostgreSQL 17.4 컴파일 및 설치

1. 디렉터리 생성 및 이동

mkdir postgresql && cd postgresql
  • mkdir postgresql: postgresql이라는 새 디렉터리를 만듭니다.
  • cd postgresql: 방금 만든 postgresql 디렉터리로 이동합니다.

2. PostgreSQL 소스 코드 다운로드

wget https://ftp.postgresql.org/pub/source/v17.4/postgresql-17.4.tar.bz2
  • wget: 지정된 URL에서 파일을 다운로드합니다.
  • https://..../postgresql-17.4.tar.bz2: PostgreSQL 17.4 버전의 압축된 소스 코드 패키지 다운로드 링크입니다. 링크가 만료된 경우 새 링크를 직접 찾을 수 있습니다.

3. 소스 코드 패키지 압축 해제

tar xjf postgresql-17.4.tar.bz2
  • tar: .tar 압축 파일을 처리하는 데 사용됩니다.

  • xjf: tar 파일 압축을 해제하는 옵션:

    • x: 파일 압축을 해제합니다.
    • j: bzip2 압축 형식(.bz2)을 사용합니다.
    • f: 압축을 해제할 파일을 지정합니다.
  • postgresql-17.4.tar.bz2: 압축을 해제할 파일 이름입니다.

4. 압축 해제된 소스 코드 디렉터리로 이동

cd postgresql-17.4
  • 압축 해제된 PostgreSQL 17.4 소스 코드 디렉터리로 이동합니다.

5. 종속성 패키지 설치

sudo apt install libssl-dev libsystemd-dev libxml2-dev libreadline-dev
  • sudo apt install: apt 패키지 관리자를 사용하여 패키지를 설치합니다.
  • libssl-dev, libsystemd-dev, libxml2-dev, libreadline-dev: PostgreSQL 컴파일에 필요한 개발 라이브러리를 설치합니다. 각각 SSL 라이브러리, Systemd 라이브러리, XML 라이브러리 및 Readline 라이브러리입니다.

6. 컴파일 옵션 구성

./configure --prefix=/usr/local/pgsql --with-openssl --with-libxml --with-systemd
  • ./configure: PostgreSQL의 컴파일 환경을 준비합니다.
  • --prefix=/usr/local/pgsql: PostgreSQL 설치 디렉터리를 /usr/local/pgsql로 지정합니다.
  • --with-openssl: OpenSSL 지원을 활성화합니다.
  • --with-libxml: XML 지원을 활성화합니다.
  • --with-systemd: Systemd 지원을 활성화합니다.

7. 소스 코드 컴파일

make -j$(nproc)
  • make: 컴파일 프로세스를 시작합니다.
  • -j$(nproc): nproc(시스템의 CPU 코어 수)를 사용하여 컴파일 작업을 병렬로 실행하여 컴파일 프로세스를 가속화합니다.

8. PostgreSQL 설치

sudo make install
  • sudo make install: sudo를 사용하여 관리자 권한으로 설치를 실행합니다. make install은 컴파일된 파일을 시스템에 설치하고 이전 ./configure 명령에서 지정한 /usr/local/pgsql 디렉터리에 설치합니다.

9. 환경 변수 설정

텍스트 편집기를 사용하여 1. /etc/profile 파일 편집:

sudo nano /etc/profile
  • sudo: 슈퍼 사용자(관리자) 권한으로 명령을 실행함을 나타냅니다. /etc/profile 파일을 수정하려면 관리자 권한이 필요합니다.
  • nano: 터미널 환경에서 파일을 편집하는 데 자주 사용되는 텍스트 편집기입니다.
  • /etc/profile: 시스템 범위의 환경 변수 및 시작 구성을 설정하는 데 사용되는 전역 구성 파일입니다. 모든 사용자가 시스템에 로그인할 때 이 파일의 설정이 실행됩니다.
  1. 환경 변수 추가:
export PATH=/usr/local/pgsql/bin:$PATH
  • export: 현재 및 하위 프로세스에서 사용할 수 있도록 환경 변수를 설정하는 데 사용됩니다.
  • PATH: 시스템에서 실행 파일의 디렉터리 목록을 포함하는 환경 변수입니다. 시스템은 명령을 실행할 때 PATH 변수에 나열된 디렉터리에 따라 명령을 찾습니다.
  • /usr/local/pgsql/bin: PostgreSQL 데이터베이스의 실행 파일 디렉터리입니다. 이를 추가하면 해당 디렉터리의 실행 파일(예: psql)이 시스템에서 인식됩니다.
  • :$PATH: 여기서 $PATH는 원래 있던 경로를 나타냅니다. 새 경로 /usr/local/pgsql/bin을 원래 PATH 앞에 추가합니다. 이렇게 하면 시스템이 새 디렉터리를 먼저 확인한 다음 원래 경로를 확인합니다.

이 명령의 기능은 PostgreSQL 실행 파일 디렉터리를 시스템의 환경 변수 PATH에 추가하여 명령줄에서 전체 경로를 제공하지 않고도 PostgreSQL 명령(예: psql)을 직접 실행할 수 있도록 하는 것입니다. 수정된 설정은 모든 사용자에게 적용됩니다.

PostgreSQL 데이터베이스 초기화

이러한 명령은 PostgreSQL 시스템 사용자 생성, 데이터베이스 초기화, 데이터베이스 서비스 시작 및 systemd 서비스로 등록하여 부팅 시 자동 시작을 포함하여 Linux 서버에서 PostgreSQL 데이터베이스 서버를 수동으로 구성하는 데 주로 사용됩니다.

1. PostgreSQL 사용자 생성

sudo useradd -m -U -r -d /var/lib/postgresql -s /bin/bash postgres
  • sudo: 슈퍼 사용자 권한으로 명령을 실행합니다.
  • useradd: 새 사용자를 만듭니다.
  • -m: 사용자의 홈 디렉터리를 만듭니다.
  • -U: 사용자 이름과 동일한 사용자 그룹을 동시에 만듭니다.
  • -r: 시스템 사용자(시스템 사용자 UID는 1000 미만이며 로그인에 사용되지 않음)를 만듭니다.
  • -d /var/lib/postgresql: 홈 디렉터리를 /var/lib/postgresql로 지정합니다.
  • -s /bin/bash: 셸을 /bin/bash로 지정합니다.
  • postgres: 사용자 이름입니다.

이 명령은 PostgreSQL 전용 시스템 사용자 postgres를 만듭니다.


2. PostgreSQL 디렉터리의 소유자 변경

sudo chown postgres /usr/local/pgsql
  • chown postgres /usr/local/pgsql: /usr/local/pgsql 디렉터리의 소유자를 postgres 사용자로 변경하여 해당 디렉터리를 읽고 쓸 수 있도록 합니다.

3. PostgreSQL 사용자의 암호 설정

sudo passwd postgres
  • passwd postgres: postgres 사용자의 암호를 수정합니다.

4. PostgreSQL 사용자로 전환

su postgres
  • su postgres: PostgreSQL 관련 명령을 사용하기 위해 postgres 사용자로 전환합니다.

5. 데이터베이스 초기화

/usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data
  • initdb -D /usr/local/pgsql/data: /usr/local/pgsql/data 디렉터리에서 데이터베이스 스토리지를 초기화합니다.

6. PostgreSQL 데이터베이스 시작

/usr/local/pgsql/bin/postgres -D /usr/local/pgsql/data
  • postgres -D /usr/local/pgsql/data: postgres 프로세스로 데이터베이스를 시작합니다. 데이터는 /usr/local/pgsql/data 디렉터리에 저장됩니다.

7. 다른 터미널 세션에서 데이터베이스에 접속

su postgres
/usr/local/pgsql/bin/psql
  • psql: PostgreSQL의 명령줄 상호 작용 도구입니다. 데이터베이스 셸에 접속합니다.

8. 데이터베이스 사용자의 암호 설정

ALTER USER postgres WITH PASSWORD 'your_new_password';
  • 데이터베이스 사용자 postgres의 암호를 수정합니다.

9. systemd 서비스 생성

sudo nano /etc/systemd/system/postgresql.service
  • nano /etc/systemd/system/postgresql.service: systemd 구성 파일을 편집하여 PostgreSQL을 서비스로 실행할 수 있도록 합니다.

구성 파일 내용:

[Unit]
Description=PostgreSQL server
#Documentation=man:postgres(1)
After=network-online.target
Wants=network-online.target

[Service]
Type=notify
User=postgres
ExecStart=/usr/local/pgsql/bin/postgres -D /usr/local/pgsql/data
ExecReload=/bin/kill -HUP $MAINPID
KillMode=mixed
KillSignal=SIGINT
TimeoutSec=infinity

[Install]
WantedBy=multi-user.target
  • Description=PostgreSQL server: 해당 서비스가 PostgreSQL 서버임을 설명합니다.
  • After=network-online.target: 네트워크 연결을 사용할 수 있게 된 후 PostgreSQL을 시작합니다.
  • User=postgres: postgres 사용자로 실행합니다.
  • ExecStart=/usr/local/pgsql/bin/postgres -D /usr/local/pgsql/data: PostgreSQL 서버를 시작합니다.
  • ExecReload=/bin/kill -HUP $MAINPID: 다시 로드할 때 HUP 신호를 보냅니다.
  • KillMode=mixed: 혼합 종료 모드입니다.
  • KillSignal=SIGINT: PostgreSQL 프로세스를 종료하는 신호입니다.
  • TimeoutSec=infinity: 시간 초과를 무한대로 설정합니다.

10. systemd 서비스 활성화

sudo systemctl daemon-reload
sudo systemctl start postgresql
sudo systemctl status postgresql
sudo systemctl enable postgresql
  • daemon-reload: systemd 구성을 다시 로드하여 새 postgresql.service가 적용되도록 합니다.
  • start postgresql: PostgreSQL 서비스를 시작합니다.
  • status postgresql: PostgreSQL 실행 상태를 확인합니다.
  • enable postgresql: 부팅 시 PostgreSQL을 자동으로 시작합니다.

이러한 명령의 목적은 다음과 같습니다.

  1. PostgreSQL을 실행하는 데 전용으로 사용되는 postgres 사용자를 만듭니다.
  2. 데이터베이스 스토리지 디렉터리를 초기화합니다.
  3. PostgreSQL 데이터베이스를 시작하고 psql 대화형 명령줄에 접속합니다.
  4. systemd를 구성하여 PostgreSQL이 시스템 서비스로 실행되도록 하고 부팅 시 자동 시작을 지원합니다.

이렇게 하면 PostgreSQL 서버가 정상적으로 실행되고 시스템 시작 시 자동으로 시작할 수 있습니다.

참고 자료

PostgreSQL: Documentation: 17: Chapter 17. Installation from Source Code

이 웹 페이지의 다른 버전

이 문서에는 여러 언어 버전이 있습니다.

댓글을 게시하려면 다음 웹 페이지를 방문하세요.

ZH EN ZH-TW JA

이러한 웹 페이지는 탐색만 지원하며 댓글을 게시하거나 메시지를 남길 수 없지만 더 많은 언어 옵션을 제공하고 로드 시간이 더 짧습니다.

ZH EN ZH-TW JA RU KO CS ES AR FR PT DE TR IT NL SV DA FI PL UK HE RO HU EL HR TH HI BN ID SW VI NO

이 문서는 AI에 의해 중국어(간체)에서 한국어로 번역되었습니다.