2017-01-12 11 views
1

변경 사항이있을 때 run.wsgi 스크립트를 동적으로 다시로드 할 수있는 mod_wsgi를 사용하고 있습니다. 내 응용 프로그램에는 많은 파일이 있지만 run.wsgi 만 변경 사항을 모니터링합니다. 모든 앱 파일이 변경되면 문서 도구에서 run.wsgi를 '터치'하는 것이 좋습니다. 제대로 작동합니다.다른 사용자가 touch-w로 wsgi 파일의 시간을 수정할 수있게합니다 -m

내가 겪고있는 문제는 내 응용 프로그램이 내 사이트의 문서 루트 (안전)와 다른 (전용) 사용자 디렉토리에 있고 특정 상황에서 사이트를 소유 할 수있는 사용자가 필요하다는 것입니다. 다른 사용자의 디렉토리에있는 run.wsgi 파일을 '만지십시오'(앱을 강제로 재로드). 그리고 사이트 사용자 수 없습니다 touch -m /home/app-user/app/run.wsgi 이미 같은 "일반적인"그룹 및 업데이트 권한 만든

touch: setting times of ‘/home/app-user/app/run.wsgi’: Operation not permitted 

:

usermod -a -G commongrp site-user 
usermod -a -G commongrp app-user 
chgrp commongrp run.wsgi 
chmod 770 run.wsgi 

사이트 사용자가 실제로 에게 WSGI를 수정할 수입니다 파일,하지만 난 그걸하고 싶지 않아. 나는 단지 수정하지 않고 파일의 "가짜"일종의 수정 싶어요. 리눅스 사용 권한으로이를 수행 할 수있는 안전한 방법이 있습니까? 아니면이를 수행하는 더 좋은 방법이 있습니까?

답변

1

sudo를 사용하여 사이트 사용자가 touch를 app-user로 실행할 수있게하는 것이 좋습니다. 당신의 sudoers가 visudo으로 파일을 편집하고이 같은 항목 작성 : 다음

site-user ALL=(app-user) NOPASSWD: /usr/bin/touch 

당신이 sudo를 사용하여 원하는 때마다 응용 프로그램 사용자로 실행 :

site-user$ sudo -u app-user /usr/bin/touch -m /home/app-user/app/run.wsgi 
1

임베디드 모드가 아닌 mod_wsgi의 데몬 모드 (기본 설정)를 사용하고 데몬 모드 프로세스가 시스템에 액세스 할 수있는 사용자로 실행되도록 설정되어있는 경우 대신 데몬 모드 프로세스에 대한 신호가 다시 시작되도록합니다. 표준 신호는 순서대로 종료 할 때 SIGINTSIGTERM을 사용할 수 있습니다. 데몬 모드 프로세스가 정상적인 시간 초과로 구성된 경우 SIGUSR1을 사용할 수도 있으며 프로세스가 종료되기 전에 요청이 완료 될 때까지 더 오랜 시간이 소요됩니다.

WSGI 스크립트 파일을 수정할 수있는 경우 요청을 처리하기 전에 데몬 모드 프로세스를 다시 시작해야하는지 여부를 결정하는 함수를 제공 할 수도 있습니다. 이는 다시 시작해야하는지 여부를 결정하기 위해 다른 파일의 타임 스탬프를 확인하는 기능을 코딩해야합니다.

mod_wsgi 메일 링리스트를 사용하는 것이 더 도움이됩니다.