Ubuntu 16.04에서 Supervisor 설치 및 구성

Supervisor는 여러 UNIX 프로세스, 특히 프로젝트 또는 고객과 관련된 프로세스를 제어하는 ​​데 사용되는 클라이언트 / 서버 시스템입니다. 예를 들어, 수퍼바이저를 사용하여 웹 애플리케이션의 임의 수의 작업자 큐를 생성하고 모니터링 할 수 있습니다.

이 시스템의 구성 요소는 다음과 같습니다.

  • 감독자 : 시스템의 서버 부분.
  • supervisorctl : 서버와 상호 작용하는 데 사용되는 명령 줄 인터페이스입니다.
  • 웹 서버 : supervisorctl 과 비교하여 기본 기능을 갖춘 간단한 웹 서버 및 웹 사용자 인터페이스 .
  • XML-RPC 인터페이스 : 웹 클라이언트에서 사용하는 것과 동일한 HTTP 서버는 감독자 프로그램을 제어하는 ​​데 사용할 수있는 XML-RPC 인터페이스를 제공합니다.

이 튜토리얼에서는 최신 버전의 수퍼바이저를 설치하고을 통해 프로그램을 생성 및 관리하는 방법을 보여주고 프로그램 supervisorctl을 관리하기 위해 웹 인터페이스를 구성합니다.

설치 및 기본 구성

easy_install파이썬의 setuptools 기능인을 통해 supervisor를 설치할 것 입니다.

먼저 로컬 패키지 목록을 업데이트 한 다음 python을 설치하십시오 setuptools.

sudo apt-get update && sudo apt-get install python-setuptools

이제 관리자를 설치할 수 있습니다.

sudo easy_install supervisor

설치가 완료되면 구성 파일을 생성해야합니다. supervisorinside 라는 폴더를 만듭니다 /etc.

sudo mkdir /etc/supervisor

그런 다음 다음을 실행하십시오.

echo_supervisord_conf >  /etc/supervisor/supervisord.conf

root사용자로 로그인하지 않은 경우 Permission denied오류가 발생할 수 있습니다 (조차도 sudo). 이것은 리디렉션 때문입니다. 이를 극복하려면 root로 로그인하십시오.

sudo su

그런 다음 명령을 다시 실행할 수 있습니다.

echo_supervisord_conf > /etc/supervisor/supervisord.conf

이제 명령으로 root사용자를 떠날 수 있습니다 exit. 이 echo_supervisord_conf명령은 관리자 설치에 의해 제공되었습니다.

기본 구성

/etc/supervisor/supervisord.conf파일을 열고 내용을 확인하십시오. 이 구성 파일은 INI구문을 따르며 섹션으로 구분됩니다 (에서처럼 괄호로 표시 [section-name]).

감독자가 관리 할 프로그램을 추가하려면 적절한 [program]섹션 을 작성하면 됩니다. 그러나 프로그램을 추가 (또는 변경)해야 할 때마다 기본 구성 파일로 인한 혼란을 피하기 위해 [include]섹션을 사용합니다 . 이 섹션을 찾아서 주석을 해제 한 후 다음과 같이 편집하십시오.

[include]
files=conf.d/*.conf

이제 추가하려는 각 프로그램에 대해 디렉토리 .ini내에 파일을 작성합니다 /etc/supervisor/conf.d/. 이 폴더를 만들 수 있습니다.

sudo mkdir /etc/supervisor/conf.d

수퍼바이저 서버 시작

앞에서 언급했듯이 감독자는 서버와 서버에 연결된 클라이언트로 구성됩니다. 프로그램을 관리하고 제어하려면 서버를 시작해야합니다. 이를 위해 systemd시스템을 시작할 때 서버가 시작될 수 있도록 수퍼바이저 서버를에 등록합니다 .

그렇게하려면 디렉토리 supervisord.service���서 파일을 작성하십시오 /etc/systemd/system.

sudo touch /etc/systemd/system/supervisord.service

파일에 다음 내용을 추가하십시오.

[Unit]
Description=Supervisor daemon
Documentation=http://supervisord.org
After=network.target

[Service]
ExecStart=/usr/local/bin/supervisord -n -c /etc/supervisor/supervisord.conf
ExecStop=/usr/local/bin/supervisorctl $OPTIONS shutdown
ExecReload=/usr/local/bin/supervisorctl $OPTIONS reload
KillMode=process
Restart=on-failure
RestartSec=42s

[Install]
WantedBy=multi-user.target
Alias=supervisord.service

감독자 서비스를 활성화하십시오.

sudo systemctl start supervisord.service

서비스 파일이 /etc/systemd/system디렉토리 에있는 한 시스템 시작시 자동으로 시작됩니다.

서비스 상태를 확인할 수 있습니다.

systemctl status supervisord.service

또한 로그를 확인할 수 있습니다.

sudo journalctl -u supervisord.service

프로그램 추가

수퍼바이저가 제어하는 ​​프로그램 [program]은 구성의 다른 섹션으로 제공됩니다 . 관리하려는 각 프로그램에 대해 명령 실행 경로, 환경 변수, 종료시 수행 방법을 알려주는 독립형 구성 파일을 작성합니다.

먼저 타임 스탬프를 기록하는 간단한 스크립트를 만들어 봅시다. 파일을 작성하십시오 hello_supervisor.sh(원하는 곳에서이 스크립트의 전체 경로를 참조 함).

touch hello_supervisor.sh

이제 다음 내용을 넣습니다.

#!/bin/bash
while true
do 
    # Echo current timestamp to stdout
    echo Hello Supervisor: `date`
    # Echo 'error!' to stderr
    echo An error ocurred at `date`! >&2
    sleep 1
done

이제 그것을 실행 가능하게 만드십시오

chmod +x hello_supervisor.sh

실제적으로이 스크립트는 거의 쓸모가 없습니다. 그러나이를 사용하여 감독자의 힘을 보여줄 수 있습니다. 다음을 실행하여 해당 구성 파일을 작성하십시오.

sudo touch /etc/supervisor/conf.d/hello_supervisor.conf

이제이 파일에 다음 내용을 넣으십시오.

[program:hello_supervisor]
command=/home/USER/hello_supervisor.sh
autostart=true
autorestart=true
stderr_logfile=/var/log/hello_supervisor.err.log
stdout_logfile=/var/log/hello_supervisor.out.log

참고 : 사용자 이름 으로 바꾸 USER십시오.

이 구성을 단계별로 검토합니다.

[program:hello_supervisor]
command=/home/USER/hello_supervisor.sh

먼저 이름이 hello_supervisor 인 프로그램을 정의하여 구성을 시작합니다 . 또한 실행 파일의 전체 경로를 알려줍니다.

autostart=true

이 줄은 감독자가 시작될 때이 프로그램이 자동으로 시작되어야 함을 나타냅니다.

autorestart=true

어떤 이유로 든 프로그램이 종료되면이 줄은 관리자에게 프로세스를 자동으로 다시 시작하라고 알려줍니다.

stderr_logfile=/var/log/hello_supervisor.err.log
stdout_logfile=/var/log/hello_supervisor.out.log

이 행은 각각 stderr및 의 로그 파일 위치를 정의합니다 stdout.

프로그램 관리

이제 관리자를 설치 및 구성 했으므로 프로세스를 관리 할 수 ​​있습니다.

새 프로그램을 추가 한 후 다음 두 명령을 실행하여 서버에 구성 파일을 다시 읽고 변경 사항을 적용하도록 지시해야합니다.

sudo supervisorctl reread
sudo supervisorctl update

이제 supervisorctl클라이언트를 실행하십시오 .

sudo supervisorctl

등록 된 절차 목록이 표시됩니다. 당신은라는 였는지를 볼 수 hello_supervisor로모그래퍼 RUNNING상태.

hello_supervisor                 RUNNING   pid 6853, uptime 0:22:30
supervisor>

사용 help가능한 명령 목록을 입력하십시오 .

supervisor> help

default commands (type help <topic>):
=====================================
add    exit      open  reload  restart   start   tail   
avail  fg        pid   remove  shutdown  status  update 
clear  maintail  quit  reread  signal    stop    version

간단히 말해서, 우리가 할 수있는 start, stop그리고 restart각각의 명령에 대한 인수로 프로그램 이름을 전달하여 프로그램.

supervisor> stop hello_supervisor 
hello_supervisor: stopped
supervisor> start hello_supervisor 
hello_supervisor: started
supervisor> restart hello_supervisor 
hello_supervisor: stopped
hello_supervisor: started
supervisor> 

tail명령으로 프로그램 출력을 볼 수도 있습니다 .

supervisor> tail hello_supervisor 
Hello Supervisor: Mon Sep 25 19:27:29 UTC 2017
Hello Supervisor: Mon Sep 25 19:27:30 UTC 2017
Hello Supervisor: Mon Sep 25 19:27:31 UTC 2017

를 들어 stderr출력, 당신은 사용할 수 있습니다 tail뿐만 아니라.

supervisor> tail hello_supervisor stderr
An error ocurred at Mon Sep 25 19:31:12 UTC 2017!
An error ocurred at Mon Sep 25 19:31:13 UTC 2017!
An error ocurred at Mon Sep 25 19:31:14 UTC 2017!

status명령 을 호출하면 등록 된 모든 프로그램의 상태를 볼 수 있습니다.

완료되면 종료 할 수 있습니다.

supervisor> quit

웹 서버 클라이언트

감독자 웹 서버에 대한 액세스를 허용하려면 감독자 구성 파일을 열고 [inet_http_server]섹션을 찾으십시오 .

nano /etc/supervisor/supervisord.conf

이제이 섹션의 구성을 다음으로 업데이트하십시오.

[inet_http_server]
port=*:9001
username=your_username
password=your_password

교체 your_usernameyour_password수정 사항 및 다시 시작 supervisord 서비스 저장, 원하는 자격 증명.

sudo systemctl restart supervisord.service

방화벽 TCP의 포트 9001에 대한 액세스 를 허용 한 다음 http://{server-ip}:9001브라우저에서 액세스 해야합니다. 물었을 때, 당신의 제공 usernamepassword. 이제 웹에서 프로세스를 제어 할 수 있습니다.

결론

최신 버전의 관리자를 설치했으며 systemd를 사용하여 시스템 자동 시작을 위해이를 구성하는 방법을 배우고 기본 사용법도 검토했습니다 supervisorctl. 보다 고급 구성 및 사용 사례는 공식 감독자 설명서를 참조하십시오 .



Leave a Comment

AI가 랜섬웨어 공격의 증가와 싸울 수 있습니까?

AI가 랜섬웨어 공격의 증가와 싸울 수 있습니까?

랜섬웨어 공격이 증가하고 있지만 AI가 최신 컴퓨터 바이러스를 처리하는 데 도움이 될 수 있습니까? AI가 답인가? AI boone 또는 bane인지 여기에서 읽으십시오.

ReactOS: 이것이 Windows의 미래입니까?

ReactOS: 이것이 Windows의 미래입니까?

오픈 소스이자 무료 운영 체제인 ReactOS가 최신 버전과 함께 제공됩니다. 현대 Windows 사용자의 요구 사항을 충족하고 Microsoft를 무너뜨릴 수 있습니까? 이 구식이지만 더 새로운 OS 환경에 대해 자세히 알아보겠습니다.

WhatsApp 데스크톱 앱 24*7을 통해 연결 유지

WhatsApp 데스크톱 앱 24*7을 통해 연결 유지

Whatsapp은 마침내 Mac 및 Windows 사용자용 데스크톱 앱을 출시했습니다. 이제 Windows 또는 Mac에서 Whatsapp에 쉽게 액세스할 수 있습니다. Windows 8 이상 및 Mac OS 10.9 이상에서 사용 가능

AI는 어떻게 프로세스 자동화를 다음 단계로 끌어올릴 수 있습니까?

AI는 어떻게 프로세스 자동화를 다음 단계로 끌어올릴 수 있습니까?

인공 지능이 소규모 회사에서 어떻게 인기를 얻고 있으며 어떻게 인공 지능이 성장할 가능성을 높이고 경쟁자가 우위를 점할 수 있는지 알아보려면 이 기사를 읽으십시오.

macOS Catalina 10.15.4 추가 업데이트로 인해 해결보다 더 많은 문제가 발생함

macOS Catalina 10.15.4 추가 업데이트로 인해 해결보다 더 많은 문제가 발생함

최근 Apple은 문제를 해결하기 위해 macOS Catalina 10.15.4 추가 업데이트를 출시했지만 이 업데이트로 인해 Mac 컴퓨터의 브릭킹으로 이어지는 더 많은 문제가 발생하는 것 같습니다. 자세히 알아보려면 이 기사를 읽어보세요.

빅데이터의 13가지 상용 데이터 추출 도구

빅데이터의 13가지 상용 데이터 추출 도구

빅데이터의 13가지 상용 데이터 추출 도구

저널링 파일 시스템이란 무엇이며 어떻게 작동합니까?

저널링 파일 시스템이란 무엇이며 어떻게 작동합니까?

우리 컴퓨터는 모든 데이터를 저널링 파일 시스템이라고 하는 체계적인 방식으로 저장합니다. 검색을 누르는 즉시 컴퓨터에서 파일을 검색하고 표시할 수 있는 효율적인 방법입니다.https://wethegeek.com/?p=94116&preview=true

기술적 특이점: 인류 문명의 먼 미래?

기술적 특이점: 인류 문명의 먼 미래?

과학이 빠른 속도로 발전하고 우리의 많은 노력을 인수함에 따라 설명할 수 없는 특이점에 처할 위험도 높아집니다. 특이점이 우리에게 무엇을 의미할 수 있는지 읽어보십시오.

26가지 빅 데이터 분석 기법에 대한 통찰: 1부

26가지 빅 데이터 분석 기법에 대한 통찰: 1부

26가지 빅 데이터 분석 기법에 대한 통찰: 1부

2021년 의료 분야에서 인공 지능의 영향

2021년 의료 분야에서 인공 지능의 영향

의료 분야의 AI는 지난 수십 년 동안 큰 도약을 했습니다. 따라서 의료 분야에서 AI의 미래는 여전히 나날이 성장하고 있습니다.