Windows Server에서 pgadmin 4를 호스팅하는 방법

10655 단어 howtoiiswindowspython
저는 처음에 제 가정 실험실에서 PostgreSQL 데이터베이스 서버를 만들었습니다. 저는 먼저 Home Assistant을 사용할 계획입니다.홈 랩이기 때문에 Hyper-V의 Windows Server 2019 가상 시스템에 호스팅됩니다.😁 그리고 나는 어리석게도 내 컴퓨터에 pgadmin 4를 설치했다. 그 목적은 이 새 서버를 원격으로 관리하는 것이다. 나는 pgadmin III는 매우 유연한 응용 프로그램으로 설치 프로그램의 무게가 15MB도 안 되는 것을 기억한다.4년 후 pgadmin 4 설치 프로그램의 부피가 10배 증가했습니다. 이것은 브라우저에서 실행되는 Flask application입니다.🤷🏻‍♂️) 일단 서버가 시작되면 시간이 좀 걸릴 수 있습니다.
그래서 나는 이 팽창 소프트웨어를 내 컴퓨터가 아니라 네트워크 서버에 두어야 한다고 결정했다.일단 메뉴가 생기면 (물론 윈도에서의 경험도 있지만) 어렵지 않다.

성분


구성요소는 다음과 같습니다.
  • Windows 서버 컴퓨터.나는 Windows Server 2019를 사용하지만 적어도 Windows Server 2008 이전에는 모든 버전이 이와 같았음을 확신합니다.또는 Windows 8입니다.
  • 은 IIS의 예입니다.이것은 installed as a role inside Windows Server(또는 Windows 10의 기능)일 수 있습니다.

  • HttpPlatformHandler은 IIS 모듈로 서버의 모든 프로세스를 관리할 수 있습니다. (이 예에서 우리는 Python을 사용할 것입니다.) 그리고 역방향 에이전트를 충당할 수 있습니다.

  • pgAdmin 4 :
  • 은 어디에나 설치할 수 있지만 %ProgramFiles%은 보통 프로그램이 있는 위치입니다.
  • 요리책

  • Create an application pool
  • Create a website
  • Open the firewall
  • Configure the website
  • Grant rights
  • Start the website
  • 애플리케이션 풀 생성


    모범 사례로 a new Application Pool in IIS이 필요합니다. 이를 통해 애플리케이션을 전용 작업 프로세스에서 분리할 수 있습니다.나는 나의 수영장을 PgAdmin이라고 명명했다.

    웹 사이트 만들기


    그리고 우리는 새로운 사이트가 필요하다.
  • 새로 만든 애플리케이션 풀을 선택합니다.
  • C:\inetpub에서 pgadmin이라는 새 폴더를 만듭니다.
  • 필요에 따라 바인딩: 포트 3000에 액세스할 수 있도록 애플리케이션을 구성합니다.to change this later if necessary에 액세스할 수 있습니다.
  • 웹 사이트를 바로 시작하지 마십시오.

  • 방화벽을 열다


    애플리케이션이 opening the Windows Firewall if necessary을 통해 액세스할 수 있는지 확인합니다(예: TCP 포트 3000).

    웹 사이트 구성


    새로 만든 web.config 폴더의 pgadmin 파일에 다음과 같은 구성을 추가하여(Configure Python web apps for IIS 참조) 웹 사이트를 구성합니다(메모장 사용 가능).
    <?xml version="1.0" encoding="utf-8"?>
    <configuration>
      <system.webServer>
        <handlers>
          <add name="PythonHandler" path="*" verb="*" modules="httpPlatformHandler" resourceType="Unspecified"/>
        </handlers>
        <httpPlatform
           processPath="%ProgramFiles%\pgAdmin 4\v4\runtime\python.exe"
           arguments="&quot;%ProgramFiles%\pgAdmin 4\v4\web\pgAdmin4.py&quot;"
           stdoutLogEnabled="true"
           stdoutLogFile="C:\inetpub\logs\pgadmin\pgAdmin4.log"
           startupTimeLimit="60"
           processesPerApplication="1">
          <environmentVariables>
            <environmentVariable name="PGADMIN_INT_PORT" value="%HTTP_PLATFORM_PORT%" />
            <environmentVariable name="PYTHONHOME" value="%ProgramFiles%\pgAdmin 4\v4\venv" />
            <environmentVariable name="SERVER_MODE" value="True" />
          </environmentVariables>
        </httpPlatform>
        <modules>
          <remove name="WebDAVModule" />
        </modules>
      </system.webServer>
    </configuration>
    
    이것은 매우 간단하지만 주의해야 할 것은 다음과 같다.
  • 은arguments 속성을 인용하여 경로에 빈칸이 포함된 사실을 설명한다.
  • 이 프로세스는 C:\inetpub\logs\pgadmin이라는 폴더에서 로그를 출력하고 이 폴더는 미리 만들어야 합니다.
  • pgadmin은 handles a single process only으로 유명합니다.

  • HttpPlatformHandler는 Python을 사용하여 프로세스를 자동으로 만들고 HTTP_PLATFORM_PORT 환경 변수를 사용하여 전용 포트를 할당합니다.
  • 권리를 주다


    이제 IIS APPPOOL\PgAdmin이라는 애플리케이션 풀 사용자에게 적절한 권한을 부여하면 됩니다.

  • 폴더 %ProgramFiles%\pgAdmin 4을 읽고 실행합니다.

  • 폴더 C:\inetpub\pgadmin을 읽고 실행합니다.
  • pgAdmin이라는 하위 폴더를 만들고 사용자에게 완전한 제어권을 부여합니다.이것은 응용 프로그램이 데이터를 저장하는 곳이다.

  • 로그 폴더를 완전히 제어합니다. (제 예시에서 C:\inetpub\logs\pgadmin)

  • 웹 사이트 시작


    이제 너는 사이트를 시작할 수 있다.즐겨라!
    기본적으로 프로그램은 29시간마다 자동으로 순환합니다. 이것은 프로세스를 다시 시작할 때 다음 요청이 더 오래 걸린다는 것을 의미합니다.그 자체가 나쁜 것은 아니지만 분명히 this behaviour can be changed이다.
    로그 폴더는 항상 정리해야 합니다.
    업데이트 2021-05-29: 사이트 구성이 pgadmin 버전 5에 맞게 조정되었습니다.4! 버전 4 구성은 다음과 같습니다.
    <?xml version="1.0" encoding="utf-8"?>
    <configuration>
      <system.webServer>
        <handlers>
          <add name="PythonHandler" path="*" verb="*" modules="httpPlatformHandler" resourceType="Unspecified"/>
        </handlers>
        <httpPlatform
           processPath="%ProgramFiles%\pgAdmin 4\v4\runtime\python.exe"
           arguments="&quot;%ProgramFiles%\pgAdmin 4\v4\web\pgAdmin4.py&quot;"
           stdoutLogEnabled="true"
           stdoutLogFile="C:\inetpub\logs\pgadmin\pgAdmin4.log"
           startupTimeLimit="60"
           processesPerApplication="1">
          <environmentVariables>
            <environmentVariable name="PGADMIN_INT_PORT" value="%HTTP_PLATFORM_PORT%" />
            <environmentVariable name="PYTHONHOME" value="%ProgramFiles%\pgAdmin 4\v4\venv" />
            <environmentVariable name="SERVER_MODE" value="True" />
          </environmentVariables>
        </httpPlatform>
        <modules>
          <remove name="WebDAVModule" />
        </modules>
      </system.webServer>
    </configuration>
    

    좋은 웹페이지 즐겨찾기