
나는 django와 celery를 기반으로 한 Python 서버를 가지고 있습니다. 컴퓨터가 다시 시작될 때마다 apache2가 시작되어 내 서버가 작동하지만 셀러리를 수동으로 다시 시작해야 합니다(내 프로젝트 디렉터리로 이동하여 "python prepare.py celeryd" 실행). 생산을 위한 올바른 솔루션은 무엇입니까? 셀러리를 데몬으로 시작할 가능성이 있습니까?
여기http://github.com/ask/celery/tree/master/contrib/debian/init.d/apache2를 시작하는 apache2 스크립트와 같이 /etc/init.d/에 있어야 할 것처럼 보이는 두 개의 스크립트를 발견했습니다. 그러나 나는 그것들을 /etc/init.d/에 넣었고 아무것도 바뀌지 않았습니다.
답변1
GUI가 시작될 때 시작하려면 /etc/rc5.d/에서 /etc/init.d 스크립트를 수동으로 심볼릭 링크할 수 있습니다. 그리고 종료하려면 또 다른 것이 필요합니다.
하지만 데비안에는 더 발전된(그리고 더 나은) 방법이 있습니다. 이는 개별 런레벨 초기화 스크립트에서 링크되는 항목을 제어합니다. 이것이 해당 스크립트 상단의 주석 섹션에서 "BEGIN INIT INFO"가 사용되는 이유입니다.
실제로 Debian을 사용하고 있다면 리소스 중 하나의 스크립트를 사용하는 대신 다음을 사용해 보세요.
update-rc.d 셀러리비트 기본값 update-rc.d 셀러리드 기본값
답변2
Celery는 다음을 위한 샘플 구성을 제공합니다.감독자, 프로젝트 관련 작업 및 데몬을 처리하는 데몬입니다. Debian Unstable에는 이미 감독자의 패키지 버전이 있습니다. 이를 설치하는 경우 셀러리(contrib/supervisor에 있음)에서 샘플 구성을 수정하고 /etc/supervisor/conf.d/에 놓기만 하면 됩니다.
답변3
어떤 배포판을 사용하고 있는지 언급하지 않았습니다. 시작 스크립트는 distro마다 상당히 다르기 때문에 이를 아는 것이 중요합니다. Redhat/CentOS를 사용한다고 가정하면...
이상적으로는 init.d 스크립트를 추적해야 합니다. 이는 데몬을 안전하게 종료하고, 구성을 다시 로드하고, 다시 시작하는 데에도 사용되기 때문에 더 나은 옵션입니다. 하지만 빠르고 쉬운 솔루션을 원한다면 파일 python manage.py celeryd
끝에 " "를 붙이기만 하면 됩니다 /etc/rc.local
.
편집: 귀하의 예에서 경로 이름을 보면 데비안을 사용하고 있다는 것을 알 수 있습니다. 데비안에 /etc/rc.local 파일이 있는지 잘 모르겠습니다. 하지만 혹시라도 그럴 경우나 이 정보가 다른 사람에게 유용할 경우를 대비해 이 답변을 남겨 두겠습니다.