여기 참조

 

CentOS기준.

 

CentOS7에서는 sudo systemctl start supervisord 하면 supervisor 서비스 시작할 수 있다.

CentOS6에서는 sudo /etc/init.d/supervisord start

 

sudo supervisorctl 해서 사용

 

가끔 supervisor.sock no such file 이라는 오류가 나면,

/etc/supervisor/conf.d/안에 있는 config파일이 오류일수 있다.

오류나는 파일을 제거하고

sudo systemctl restart supervisord하면 됨

 

supervisor.sock refused connection이라고 뜨면 재시작시도해보고 supervisord.pid문제로 기다린다고 뜨면

해당 pid를 강제로 지워주고 재시작하면 된다.

 

program등록법

/etc/supervisor.conf 또는 /etc/supervisor/conf.d/ 밑에 있는 conf들에서 [program] 섹션에 있는것들이 등록된다.

등록후 아래 명령어를 통해 갱신해줘야 적용된다.

sudo supervisorctl reread
sudo supervisorctl update

sudo 암호입력없이 쓰는법

 

sudo visudo를 해서 /etc/sudoers에 계정을 추가해주면되는데

sevity  ALL=(ALL:ALL) NOPASSWD: /usr/bin/supervisorctl

 

주의할점은 맨 아래다 하지 않으면 아래와 같은 경우 덮어써진다는 점이다.

# sevity가 sudo그룹에 속할 경우 
# 규칙은 가장 마지막에 적혀있는 sudo에 대한 규칙이 적용됩니다
sevity  ALL:(ALL) NOPASSWD: ALL
%sudo    ALL:(ALL) ALL


NOPASSWD부분은 무시돼 버린다.

/var/run/supervisor.sock 파일에 아래내용을 넣으면 sudo를 항상 생략하고 쓸 수 있다.

[unix_http_server]
file=/var/run/supervisor.sock
chown=sevity:sevity
chmod=02770

chmod=02770는 파일 또는 디렉토리의 그룹에게만 모든 권한을 부여(77부분)

 

로그보는법

/var/log/supervisor/에 가면 로그들 모여있다.

 

docker와 함께 운용하는법

docker는 supervisorctl stop을 해도 docker stop이 잘 되지 않는다. (일반 프로세스와 좀 다른듯하다)

supervisor는 command는 지원하지만 stopcommand는 지원하지 않아서 종료시에 명령어를 명시적으로 주기 어렵다.

그래서 command 안에다가 다음처럼 bash로 trap을 설정해두면 이건 잘 동작한다.

$ cat docker_run.sh

#!/bin/bash

PORT=$1
trap 'docker stop frontend-service' EXIT
docker run --rm\
  --name frontend-service\
  --network host \
  -p $PORT:$PORT \
  -e PORT=$PORT \
  frontend-service
반응형

'Programming > Linux' 카테고리의 다른 글

리눅스 퍼미션 개념(파일 권한 관련)  (0) 2020.04.10
NTP설정  (0) 2020.03.30
ssh 자동로그인(ssh-key)  (0) 2020.03.10
scp관련  (0) 2019.12.05
mount관련  (0) 2019.12.05

+ Recent posts