웹사이트 검색

Ubuntu 18.04의 서버 모드에서 pgAdmin 4를 설치 및 구성하는 방법


소개

pgAdmin은 PostgreSQL 및 관련 데이터베이스 관리 시스템을 위한 오픈 소스 관리 및 개발 플랫폼입니다. Python 및 jQuery로 작성되었으며 PostgreSQL의 모든 기능을 지원합니다. pgAdmin을 사용하여 기본 SQL 쿼리 작성에서 데이터베이스 모니터링 및 고급 데이터베이스 아키텍처 구성에 이르기까지 모든 작업을 수행할 수 있습니다.

이 자습서에서는 최신 버전의 pgAdmin을 Ubuntu 18.04 서버에 설치 및 구성하고, 웹 브라우저를 통해 pgAdmin에 액세스하고, 서버의 PostgreSQL 데이터베이스에 연결하는 과정을 안내합니다.

전제 조건

이 자습서를 완료하려면 다음이 필요합니다.

  • Ubuntu 18.04를 실행하는 서버. 이 서버에는 sudo 권한이 있는 루트가 아닌 사용자와 ufw로 구성된 방화벽이 있어야 합니다. 이를 설정하는 데 도움이 필요하면 Ubuntu 18.04용 초기 서버 설정 가이드를 따르세요.
  • Ubuntu 22.04에서 Nginx를 역방향 프록시로 구성하는 방법의 1단계와 2단계에 따라 http://unix:/tmp/pgadmin4.sock에 대한 역방향 프록시로 Nginx를 설치 및 구성했습니다.
  • 서버에 설치된 PostgreSQL. Ubuntu 18.04에서 PostgreSQL을 설치하고 사용하는 방법에 대한 가이드를 따라 이를 설정할 수 있습니다. 이 가이드를 따를 때 pgAdmin을 PostgreSQL 인스턴스에 연결하려면 둘 다 필요하므로 새 역할과 데이터베이스를 생성해야 합니다.
  • Python 3 및 venv가 서버에 설치되었습니다. Ubuntu 18.04 서버에 Python 3 설치 및 프로그래밍 환경 설정 방법을 따라 이러한 도구를 설치하고 가상 환경을 설정하십시오.

1단계 - pgAdmin 및 종속 항목 설치

이 글을 쓰는 시점에서 pgAdmin의 최신 버전은 pgAdmin 4이고 공식 Ubuntu 리포지토리를 통해 사용할 수 있는 최신 버전은 pgAdmin 3입니다. 하지만 pgAdmin 3은 더 이상 지원되지 않으며 프로젝트 관리자는 pgAdmin 4 설치를 권장합니다. 이 단계에서 , 가상 환경 내에 최신 버전의 pgAdmin 4를 설치하고(프로젝트 개발 팀에서 권장하는 대로) apt를 사용하여 종속성을 설치하는 과정을 살펴보겠습니다.

시작하려면 최근에 수행하지 않은 경우 서버의 패키지 색인을 업데이트하십시오.

  1. sudo apt update

다음으로 다음 종속 항목을 설치합니다. 여기에는 다중 정밀도 산술 라이브러리인 libgmp3-dev가 포함됩니다. libpq-dev: 헤더 파일과 PostgreSQL 백엔드와의 통신을 돕는 정적 라이브러리를 포함합니다.

  1. sudo apt install libgmp3-dev libpq-dev

그런 다음 pgAdmin이 세션 데이터, 스토리지 데이터 및 로그를 저장할 몇 개의 디렉토리를 만듭니다.

  1. sudo mkdir -p /var/lib/pgadmin4/sessions
  2. sudo mkdir /var/lib/pgadmin4/storage
  3. sudo mkdir /var/log/pgadmin4

그런 다음 이 디렉토리의 소유권을 루트가 아닌 사용자 및 그룹으로 변경하십시오. 이것은 현재 루트 사용자가 소유하고 있기 때문에 필요하지만 루트가 아닌 사용자가 소유한 가상 환경에서 pgAdmin을 설치하고 설치 프로세스에는 이러한 디렉토리 내에 일부 파일을 만드는 작업이 포함됩니다. 그러나 설치 후 소유권을 www-data 사용자 및 그룹으로 변경하여 웹에 제공할 수 있습니다.

  1. sudo chown -R sammy:sammy /var/lib/pgadmin4
  2. sudo chown -R sammy:sammy /var/log/pgadmin4

다음으로 가상 환경을 엽니다. 프로그래밍 환경이 있는 디렉토리로 이동하여 활성화하십시오. 필수 Python 3 자습서의 명명 규칙에 따라 environments 디렉터리로 이동하여 my_env 환경을 활성화합니다.

  1. cd environments/
  2. source my_env/bin/activate

가상 환경을 활성화한 후 시스템에 최신 버전의 pip가 설치되어 있는지 확인하는 것이 좋습니다. 기본 Ubuntu 18.04 리포지토리에서 사용할 수 있는 pip 버전은 버전 9.0.1이고 최신 버전은 21.0.1입니다. 필수 Python 설치 자습서에 설명된 대로 python3-pip 패키지를 설치했지만 최신 버전으로 업그레이드하지 않은 경우 다음 단계에서 pgAdmin을 구성할 때 문제가 발생합니다.

pip를 최신 버전으로 업그레이드하려면 다음 명령을 실행하십시오.

  1. python -m pip install -U pip

그런 다음 pgAdmin 4 소스 코드를 컴퓨터에 다운로드합니다. 소스 코드의 최신 버전을 찾으려면 pgAdmin 4(Python Wheel) 다운로드 페이지로 이동하십시오. 최신 버전(이 글을 쓰는 시점에서 v6.10) 링크를 클릭한 후 다음 페이지에서 pip 읽기 링크를 클릭합니다. 이 파일 브라우저 페이지에서 Python 배포에 사용되는 표준 내장 패키지 형식인 .whl로 끝나는 파일 링크를 복사합니다. 그런 다음 터미널로 돌아가서 다음 wget 명령을 실행하여 링크를 PostgreSQL 사이트에서 복사한 링크로 바꾸십시오. 그러면 .whl 파일이 다운로드됩니다. 귀하의 서버에:

  1. wget https://ftp.postgresql.org/pub/pgadmin/pgadmin4/v6.10/pip/pgadmin4-6.10-py3-none-any.whl

다음으로 휠 패키징 표준의 참조 구현인 패키지를 설치합니다. Python 라이브러리인 이 패키지는 바퀴를 만들기 위한 확장 기능을 하며 .whl 파일 작업을 위한 명령줄 도구를 포함합니다.

  1. python -m pip install wheel

그런 다음 다음 명령을 사용하여 pgAdmin 4 패키지를 설치합니다.

  1. python -m pip install pgadmin4-6.10-py3-none-any.whl

다음으로, 이 자습서의 뒷부분에서 pgadmin 웹 인터페이스를 제공하기 위해 Nginx와 함께 사용할 Python WSGI 서버인 Gunicorn을 설치합니다.

  1. python -m pip install gunicorn

pgAdmin 및 해당 종속성 설치를 처리합니다. 그러나 데이터베이스에 연결하기 전에 프로그램 구성을 몇 가지 변경해야 합니다.

2단계 - pgAdmin 4 구성

pgAdmin이 서버에 설치되었지만 웹 인터페이스를 올바르게 제공하는 데 필요한 권한과 구성이 있는지 확인하려면 몇 가지 단계를 거쳐야 합니다.

pgAdmin의 기본 구성 파일인 config.py는 다른 구성 파일보다 먼저 읽습니다. 그 내용은 pgAdmin의 다른 구성 파일에서 지정할 수 있는 추가 구성 설정에 대한 참조 지점으로 사용할 수 있지만 예기치 않은 오류를 방지하려면 config.py 파일 자체를 편집해서는 안 됩니다. config_local.py라는 새 파일에 몇 가지 구성 변경 사항을 추가할 것입니다. 이 파일은 기본 파일 다음에 읽혀집니다.

원하는 텍스트 편집기를 사용하여 지금 이 파일을 만드십시오. 여기서는 nano를 사용합니다.

  1. nano my_env/lib/python3.10/site-packages/pgadmin4/config_local.py

편집기에서 다음 콘텐츠를 추가합니다.

LOG_FILE = '/var/log/pgadmin4/pgadmin4.log'
SQLITE_PATH = '/var/lib/pgadmin4/pgadmin4.db'
SESSION_DB_PATH = '/var/lib/pgadmin4/sessions'
STORAGE_DIR = '/var/lib/pgadmin4/storage'
SERVER_MODE = True

다음은 이 다섯 가지 지시어가 수행하는 작업입니다.

  • LOG_FILE: pgAdmin의 로그가 저장될 파일을 정의합니다.
  • SQLITE_PATH: pgAdmin은 사용자 관련 데이터를 SQLite 데이터베이스에 저장하고 이 지시문은 pgAdmin 소프트웨어가 이 구성 데이터베이스를 가리키도록 합니다. 이 파일은 영구 디렉터리 /var/lib/pgadmin4/ 아래에 있기 때문에 업그레이드 후에도 사용자 데이터가 손실되지 않습니다.
  • SESSION_DB_PATH: 세션 데이터를 저장하는 데 사용할 디렉토리를 지정합니다.
  • STORAGE_DIR: pgAdmin이 백업 및 보안 인증서와 같은 기타 데이터를 저장할 위치를 정의합니다.
  • SERVER_MODE: 이 지시문을 True로 설정하면 pgAdmin이 데스크톱 모드가 아닌 서버 모드에서 실행됩니다.

이러한 각 파일 경로는 1단계에서 만든 디렉터리를 가리킵니다.

이 줄을 추가한 후 파일을 저장하고 닫습니다. nano를 사용한 경우 CTRL + X를 누른 다음 Y를 누른 다음 ENTER를 누르십시오.

해당 구성이 준비되면 pgAdmin 설정 스크립트를 실행하여 로그인 자격 증명을 설정합니다.

  1. python my_env/lib/python3.10/site-packages/pgadmin4/setup.py

이 명령을 실행하면 이메일 주소와 비밀번호를 묻는 프롬프트가 표시됩니다. 나중에 pgAdmin에 액세스할 때 로그인 자격 증명으로 사용되므로 여기에 입력한 내용을 기억하거나 기록해 두십시오.

Output
. . . Enter the email address and password to use for the initial pgAdmin user account: Email address: sammy@example.com Password: Retype password:

이것으로 pgAdmin이 완전히 구성되었습니다. 그러나 프로그램이 아직 서버에서 제공되지 않으므로 액세스할 수 없습니다. 이 문제를 해결하기 위해 웹 브라우저를 통해 사용자 인터페이스에 액세스할 수 있도록 pgAdmin을 제공하도록 Gunicorn 및 Nginx를 구성합니다.

3단계 - Gunicorn 시작 및 Nginx 구성

Gunicorn을 사용하여 pgAdmin을 웹 애플리케이션으로 제공합니다. 그러나 응용 프로그램 서버인 Gunicorn은 로컬에서만 사용할 수 있으며 인터넷을 통해 액세스할 수 없습니다. 원격으로 사용하려면 Nginx를 리버스 프록시로 사용해야 합니다.

Nginx를 리버스 프록시로 설정하기 위한 전제 조건을 완료하면 Nginx 구성 파일에 다음이 포함됩니다.

server {
    listen 80;
    listen [::]:80;

    server_name your_domain www.your_domain;
        
    location / {
        proxy_pass http://unix:/tmp/pgadmin4.sock;
        include proxy_params;
    }
}

이 리버스 프록시 구성을 사용하면 로컬 브라우저에서 Gunicorn 서버에 액세스할 수 있습니다. pgAdmin 애플리케이션으로 Gunicorn 서버를 시작합니다.

  1. gunicorn --bind unix:/tmp/pgadmin4.sock --workers=1 --threads=25 --chdir ~/environments/my_env/lib/python3.10/site-packages/pgadmin4 pgAdmin4:app
Output
[2022-08-29 00:19:11 +0000] [7134] [INFO] Starting gunicorn 20.1.0 [2022-08-29 00:19:11 +0000] [7134] [INFO] Listening at: unix:/tmp/pgadmin4.sock (7134) [2022-08-29 00:19:11 +0000] [7134] [INFO] Using worker: gthread [2022-08-29 00:19:11 +0000] [7135] [INFO] Booting worker with pid: 7135

참고: 이러한 방식으로 Gunicorn을 호출하면 프로세스가 터미널에 연결됩니다. 보다 장기적인 솔루션을 위해 Supervisor와 같은 프로그램으로 Gunicorn을 호출하십시오. Ubuntu 및 Debian VPS에서 Supervisor를 설치하고 관리하는 방법에 대한 이 자습서를 따를 수 있습니다.

Nginx 리버스 프록시에서 액세스할 수 있는 애플리케이션 서버 역할을 하는 Gunicorn을 사용하면 웹 브라우저에서 pgAdmin에 액세스할 준비가 된 것입니다.

4단계 - pgAdmin 액세스

로컬 컴퓨터에서 원하는 웹 브라우저를 열고 서버의 IP 주소로 이동합니다.

http://your_server_ip

그러면 다음과 유사한 로그인 화면이 표시됩니다.

2단계에서 정의한 로그인 자격 증명을 입력하면 pgAdmin 시작 화면으로 이동합니다.

이제 pgAdmin 인터페이스에 액세스할 수 있음을 확인했으므로 남은 작업은 pgAdmin을 PostgreSQL 데이터베이스에 연결하는 것입니다. 그러나 그렇게 하기 전에 PostgreSQL 수퍼유저 구성을 약간 변경해야 합니다.

5단계 - PostgreSQL 사용자 구성

전제 조건인 PostgreSQL 자습서를 따랐다면 새로운 수퍼유저 역할 및 데이터베이스 설정과 함께 서버에 PostgreSQL이 이미 설치되어 있어야 합니다.

기본적으로 PostgreSQL에서는 "Identification Protocol\ 또는 "ident\ 인증 방법을 사용하여 데이터베이스 사용자로 인증합니다. 여기에는 PostgreSQL이 클라이언트의 Ubuntu 사용자 이름을 가져와 허용된 데이터베이스 사용자 이름으로 사용하는 것이 포함됩니다. 이렇게 하면 많은 경우에 보안을 강화할 수 있지만 pgAdmin과 같은 외부 프로그램이 데이터베이스 중 하나에 연결하려는 경우 문제가 발생할 수도 있습니다. 이 문제를 해결하기 위해 pgAdmin이 데이터베이스에 연결할 수 있도록 이 PostgreSQL 역할에 대한 암호를 설정합니다.

터미널에서 수퍼유저 역할로 PostgreSQL 프롬프트를 엽니다.

  1. sudo -u sammy psql

PostgreSQL 프롬프트에서 선택한 강력한 암호를 갖도록 사용자 프로필을 업데이트합니다.

  1. ALTER USER sammy PASSWORD 'password';

그런 다음 PostgreSQL 프롬프트를 종료합니다.

  1. \q

그런 다음 브라우저에서 pgAdmin 4 인터페이스로 돌아가서 왼쪽에서 브라우저 메뉴를 찾습니다. 서버를 마우스 오른쪽 버튼으로 클릭하여 상황에 맞는 메뉴를 열고 생성 위로 마우스를 가져간 다음 서버...를 클릭합니다.

이렇게 하면 서버, 역할 및 데이터베이스에 대한 정보를 입력하는 창이 브라우저에 팝업됩니다.

일반 탭에서 이 서버의 이름을 입력하십시오. 이것은 당신이 원하는 무엇이든 될 수 있지만, 설명적인 것으로 만드는 것이 도움이 될 수 있습니다. 이 예에서 서버 이름은 Sammy-server-1입니다.

다음으로 연결 탭을 클릭합니다. 호스트 이름/주소 필드에 localhost를 입력합니다. 포트는 기본적으로 5432로 설정되어야 하며 PostgreSQL에서 사용하는 기본 포트이므로 이 설정에 적합합니다.

유지 관리 데이터베이스 필드에 연결하려는 데이터베이스의 이름을 입력합니다. 이 데이터베이스는 서버에 이미 생성되어 있어야 합니다. 그런 다음 사용자 이름 및 암호 필드에 이전에 구성한 PostgreSQL 사용자 이름과 암호를 각각 입력합니다.

다른 탭의 빈 필드는 선택 사항이며 필요한 특정 설정이 있는 경우에만 입력하면 됩니다. 저장 버튼을 클릭하면 브라우저 메뉴의 서버 아래에 데이터베이스가 나타납니다.

pgAdmin4를 PostgreSQL 데이터베이스에 성공적으로 연결했습니다. PostgreSQL 프롬프트에서 수행하는 모든 작업을 pgAdmin 대시보드에서 수행할 수 있습니다. 이를 설명하기 위해 예제 테이블을 만들고 웹 인터페이스를 통해 몇 가지 샘플 데이터로 채울 것입니다.

6단계 - pgAdmin 대시보드에서 테이블 생성

pgAdmin 대시보드에서 창 왼쪽에 있는 브라우저 메뉴를 찾습니다. 서버(1) 옆에 있는 더하기 기호(+)를 클릭하여 그 안에 있는 트리 메뉴를 확장합니다. 그런 다음 이전 단계에서 추가한 서버(이 예에서는 Sammy-server-1)의 왼쪽에 있는 더하기 기호를 클릭한 다음 데이터베이스, 추가한 데이터베이스의 이름(이 예에서는 sammy)을 확장한 다음 스키마(1). 다음과 같은 트리 메뉴가 표시되어야 합니다.

테이블 목록 항목을 마우스 오른쪽 버튼으로 클릭한 다음 생성 위로 커서를 이동하고 테이블…을 클릭합니다.

Create-Table 창이 열립니다. 이 창의 일반 탭에서 테이블 이름을 입력하십시오. 이것은 원하는 대로 지정할 수 있지만 간단하게 하기 위해 table-01이라고 합니다.

그런 다음 열 탭으로 이동하고 창의 오른쪽 상단 모서리에 있는 + 기호를 클릭하여 일부 열을 추가합니다. 열을 추가할 때 이름과 데이터 유형을 지정해야 하며 선택한 데이터 유형에 필요한 경우 길이를 선택해야 할 수도 있습니다.

또한 공식 PostgreSQL 설명서에는 테이블에 기본 키를 추가하는 것이 일반적으로 모범 사례라고 명시되어 있습니다. 기본 키는 테이블의 행에 대한 특수 식별자로 사용할 수 있는 특정 열 또는 열 집합을 나타내는 제약 조건입니다. 필수 사항은 아니지만 하나 이상의 열을 기본 키로 설정하려면 맨 오른쪽에 있는 스위치를 아니요에서 예로 전환합니다.

저장 버튼을 클릭하여 테이블을 생성합니다.

지금까지 테이블을 만들고 몇 개의 열을 추가했습니다. 그러나 열에는 아직 데이터가 포함되어 있지 않습니다. 새 테이블에 데이터를 추가하려면 브라우저 메뉴에서 테이블 이름을 마우스 오른쪽 버튼으로 클릭하고 커서를 스크립트 위에 놓고 스크립트 삽입을 클릭합니다.

그러면 대시보드에 새 패널이 열립니다. 상단에는 적절한 테이블 및 열 이름과 함께 부분적으로 완료된 INSERT 문이 표시됩니다. 계속해서 물음표(?)를 일부 더미 데이터로 교체하고 추가하는 데이터가 각 열에 대해 선택한 데이터 유형과 일치하는지 확인하십시오. 다음 예제와 같이 각 괄호 집합을 쉼표로 구분하여 새 괄호 집합에 각 행을 추가하여 여러 데이터 행을 추가할 수도 있습니다.

원하는 경우 부분적으로 완료된 INSERT 스크립트를 다음 예제 INSERT 문으로 교체해도 됩니다.

INSERT INTO public."table-01"(
    col1, col2, col3)
    VALUES ('Juneau', 14, 337), ('Bismark', 90, 2334), ('Lansing', 51, 556);

옆 삼각형 아이콘(▶)을 클릭하여 INSERT 문을 실행합니다. 이전 버전의 pgAdmin에서는 실행 아이콘이 대신 번개 모양(⚡)입니다.

테이블과 그 안의 모든 데이터를 보려면 브라우저 메뉴에서 테이블 이름을 다시 한 번 마우스 오른쪽 버튼으로 클릭하고 커서를 데이터 보기/편집 위에 놓고 모든 행을 선택합니다.

그러면 또 다른 새 패널이 열리며 아래 패널의 데이터 출력 탭에서 해당 테이블에 포함된 모든 데이터를 볼 수 있습니다.

이를 통해 테이블을 성공적으로 생성하고 pgAdmin 웹 인터페이스를 통해 일부 데이터로 채웠습니다. 물론 이것은 pgAdmin을 통해 테이블을 생성하는 데 사용할 수 있는 한 가지 방법일 뿐입니다. 예를 들어 이 단계에서 설명한 GUI 기반 방법 대신 SQL을 사용하여 테이블을 만들고 채울 수 있습니다.

결론

이 가이드에서는 Python 가상 환경에서 pgAdmin 4를 설치하고 구성하고 Gunicorn 및 Nginx를 사용하여 웹에 제공하고 PostgreSQL 데이터베이스에 연결하는 방법을 배웠습니다. 또한 이 가이드에서는 테이블을 만들고 채우는 데 사용할 수 있는 한 가지 방법을 살펴보았지만 pgAdmin은 테이블을 만들고 편집하는 것보다 훨씬 더 많은 용도로 사용할 수 있습니다.

pgAdmin의 모든 기능을 최대한 활용하는 방법에 대한 자세한 내용은 해당 주제에 대한 커뮤니티 자습서를 검토하는 것이 좋습니다.