여기 참조
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 |