Windows IIS에서 pgAdmin 4 실행하기

Yogesh Mahajan
2025년 8월 22일

관계형 데이터베이스(특히 PostgreSQL)를 관리할 때, 직관적이고 사용하기 쉬운 인터페이스는 관리 및 개발 업무를 크게 단순화할 수 있습니다. pgAdmin 4는 PostgreSQL 및 EnterpriseDB의 EDB Advanced Server 같은 파생 데이터베이스를 위한 강력하고 무료 오픈소스 그래픽 관리 도구입니다.

pgAdmin은 두 가지 주요 모드로 설치할 수 있습니다:

  • 데스크톱 모드: 독립 실행형 애플리케이션으로 구동
  • 서버 모드: 웹 브라우저를 통한 원격 접근 지원

서버 모드에서는 Apache2 또는 Nginx 같은 웹 서버 뒤에 배치할 수 있어, 팀과 프로덕션 환경에서도 확장 가능한 솔루션을 제공합니다.

이번 글에서는 Windows IIS 뒤에서 pgAdmin을 서버 모드로 실행하는 방법을 안내합니다.


A. Windows에서 pgAdmin 4 서버 모드 설정

IIS 뒤에서 pgAdmin을 실행하려면 먼저 서버 모드에서 설정해야 합니다.

1. Python 및 pip 설치

pgAdmin은 Python 패키지로 배포되며 pip로 설치할 수 있습니다. 따라서 pgAdmin을 설치하기 전에 Windows에 Python과 pip가 있어야 합니다.

  • Python 공식 웹사이트에서 최신 버전 다운로드
  • 설치 시 “Add Python to PATH” 체크
  • 설치 후 다음 명령으로 버전 확인:
PS C:\Users\Administrator> python --version
Python 3.13.4

PS C:\Users\Administrator> pip --version
pip 25.2 from C:\Users\Administrator\AppData\Local\Programs\Python\Python313\Lib\site-packages\pip (python 3.13)


2. 가상 환경 생성 및 활성화

pgAdmin 설치를 다른 Python 패키지와 독립적으로 관리할 수 있도록 가상 환경을 생성한 뒤 활성화하세요.
PS C:\Users\Administrator> python -m venv pgadminVenv

PS C:\Users\Administrator> .\pgadminVenv\Scripts\Activate.ps1
(pgadminVenv) PS C:\Users\Administrat

3. pgAdmin 4 설치

(pgadminVenv) PS C:\Users\Administrator> pip install pgadmin4
Collecting pgadmin4
  Downloading pgadmin4-9.7-py3-none-any.whl.metadata (2.8 kB)


4. Waitress 설치

pgAdmin은 기본적으로 Werkzeug를 WSGI(Web Server Gateway Interface) 서버로 사용하지만, 이는 개발 환경용입니다.
운영 환경에서는 Waitress를 설치해 안정성을 강화합니다.

(pgadminVenv) PS C:\Users\Administrator> pip install waitress
Collecting pip

B. IIS 설치

  1. **제어판(Control Panel)**으로 이동하여 ‘Turn Windows features on or off'(Windows 기능 켜기/끄기) 옵션을 선택합니다.

2. **’Add Roles and Features'(역할 및 기능 추가)**를 선택하고 Next를 클릭합니다.

    3. ‘Role feature-based'(역할 기반 설치)를 선택합니다.

      4. 서버 풀을 선택하고 Next를 클릭합니다. **Web Server (IIS)**를 선택한 뒤 Next, 그리고 다시 Next를 클릭합니다.

      5. 여기에서 설치할 모듈들을 확인하고 Install을 클릭합니다. 설치가 성공적으로 완료되면 마법사를 닫습니다.

      6. httpPlatformHandler를 다운로드하여 설치합니다. httpPlatformHandler는 Python과 같은 외부 애플리케이션에 대한 요청을 관리하고 프록시하기 위해 필요하며, IIS를 연결하는 리버스 프록시 역할을 합니다.

      7. IIS Manager를 열고, Management 섹션에서 Configuration Editor를 선택합니다.


      8. system.webserver를 선택한 후, handler를 선택하고 오른쪽 패널에서 **‘Unlock section’**을 클릭합니다.

      9. Sites 컨텍스트 메뉴에서 **‘Add Website’**를 클릭합니다.

      10. 웹사이트 이름을 입력하고, venv 내부의 ‘pgadmin’ site package까지 물리적 경로를 선택합니다.

      11. 호스트, 포트 등에 따라 바인딩 설정을 변경합니다. 체크박스 **‘Start website immediately’**의 체크를 해제합니다.

      C. IIS 웹 서버 뒤에서 pgAdmin 배포

      IIS를 통해 pgAdmin에 접근하려면, IIS를 리버스 프록시로 구성해야 합니다. 이 설정을 통해 IIS는 들어오는 HTTP(S) 요청을 pgAdmin 웹 서버로 전달할 수 있습니다. 이렇게 하면 IIS의 기능(SSL 종료, 인증, 로드 밸런싱 등)을 활용하면서도 pgAdmin을 사용자에게 안전하게 노출할 수 있습니다.

      1. pgAdmin4.wsgi 파일을 복사하고, 원본과 같은 위치에 새 파일을 pgAdmin4_wsgi.py라는 이름으로 저장합니다.
      2. pgAdmin4_wsgi.py가 있는 디렉터리에 web.config 파일을 추가합니다. 아래는 전형적인 web.config 파일 예시입니다:
      <?xml version="1.0" encoding="UTF-8"?>
      <configuration>
          <system.webServer>
              <handlers>
                  <add name="httpPlatformHandler" 
                       path="*" 
                       verb="*" 
                       modules="httpPlatformHandler" 
                       resourceType="Unspecified" requireAccess="Script" />
              </handlers>
              <httpPlatform
                  stdoutLogEnabled="true" 
                  stdoutLogFile="C:\inetpub\logs\pgadmin\pgadmin.log" 
                  startupTimeLimit="10" 
                  processPath="C:\Users\Administrator\Desktop\pgadminVenv\Scripts\python.exe" 
                  arguments="-m waitress --port %HTTP_PLATFORM_PORT% wsgi:application" />
          </system.webServer>
      </configuration>
      
      1. 위에서 지정한 로그 파일 경로가 IIS APPPOOL\PgAdmin 사용자에게 쓰기 가능해야 합니다.
        (예: C:\inetpub\logs\pgadmin\ → 필요하다면 IIS_IUSRS 같은 일반 사용자에게 권한을 부여할 수도 있습니다.)
      2. IIS APPPOOL\PgAdmin 사용자에게 venv 폴더에 대한 읽기 및 실행 권한을 부여합니다.
        (예: C:\Users\Administrator\Desktop\pgadminVenv)
        ※ IIS APPPOOL\PgAdmin 사용자는 웹사이트 생성 후에만 나타납니다.
      3. IIS APPPOOL\PgAdmin 사용자에게 시스템 Python에 대한 읽기 및 실행 권한을 부여합니다.
        (예: C:\Users\Administrator\AppData\Local\Programs\Python\)
      4. ….\pgadminVenv\Lib\site-packages\pgadmin4 경로에 config_local.py 파일을 생성하고, DATA_DIR에 대한 사용자 지정 경로를 추가합니다.
        또한 해당 디렉터리에 IIS APPPOOL\PgAdmin 사용자에게 전체 권한을 부여해야 합니다.
        (예: DATA_DIR = "C:\Users\Administrator\Desktop\pgadminDatadir\")
      5. Python venv에서 pgadmin4 명령을 실행하고, 관리자 이메일과 비밀번호를 입력합니다:
      (pgadminVenv) PS C:\Users\Administrator> pgadmin4
      NOTE: Configuring authentication for SERVER mode.
      
      Enter the email address and password to use for the initial pgAdmin user account:
      
      Email address: edb@edb.com
      Password:
      Retype password:
      Starting pgAdmin 4. Please navigate to http://127.0.0.1:5050 in your browser.
       * Serving Flask app 'pgadmin'
       * Debug mode: off
      (pgadminVenv) PS C:\Users\Administrator>
      
      1. 프로세스를 종료합니다.

      D. pgAdmin 4 접속

      브라우저에서 바인딩 설정에 입력한 host:port로 접속합니다.
      이전에 설정한 이메일과 비밀번호를 사용해 로그인합니다.


      결론

      IIS를 pgAdmin 서버의 리버스 프록시로 설정하면 Windows 환경과의 통합성이 향상되고, 사용자 접근성도 강화됩니다. 문제가 발생할 경우 pgadmin-support@postgresql.org로 이메일을 보내거나 GitHub에 이슈를 등록할 수 있습니다.

      메일: salesinquiry@enterprisedb.com