![pydoc 웹서버의 시작](https://rvso.com/image/1108669/pydoc%20%EC%9B%B9%EC%84%9C%EB%B2%84%EC%9D%98%20%EC%8B%9C%EC%9E%91.png)
제가 개발하고 있는 패키지의 웹서버가 항상 실행 upstart
되도록 사용하려고 합니다 . pydoc
명령줄에서 실행하는 경우:
pydoc -p 7464 /some_path/my_python_package
잘 작동하고 localhost:7464/my_python_package
문서가 표시됩니다. 그러나 이를 시작 스크립트에 넣으면 다음과 같습니다.
start on startup
start on runlevel [2,3,4,5]
stop on runlevel [0,1,6]
script
pydoc -p 7464 /some_path/my_python_package
end script
그런 다음 브라우저를 열면 localhost:7464/my_python_package
다음이 표시됩니다.
no Python documentation found for 'my_python_package'
localhost:7464
모든 표준 Python 패키지가 정상적으로 표시되므로 upstart가 경로를 올바르게 구문 분석하지 않는 것 같습니다 .
export PYTHONPATH='/some_path'
실행 줄을 넣고 변경해 보았지만 pydoc -p 7464 $PYTHONPATH/my_python_package
이것도 작동하지 않았습니다.
답변1
해당 작업에 지정한 구문이 올바르지 않습니다.
start on
' ' 스탠자가 여러 개 있습니다 .- 마지막 '
start on
' 스탠자가 고려되지만 런레벨 사이에 쉼표를 사용하기 때문에 귀하의 스탠자가 유효하지 않습니다('stop on
'도 같은 이유로 유효하지 않습니다).
당신은 다음과 같은 것을 원합니다 :
start on runlevel [2345]
stop on runlevel [016]
script
pydoc -p 7464 /some_path/my_python_package
end script
Upstart 버전 0.9.7 이상(즉, Ubuntu Natty 이상 - 참조)https://wiki.ubuntu.com/NattyNarwhal/TechnicalOverviewUpstartinit-checkconf
), 스크립트에 구문 오류가 있는지 확인하는 새로운 명령이 있습니다 . 사용법은 간단합니다:
$ init-checkconf myjob.conf
사용자 init-checkconf
(~ 아니다뿌리).
또한 이것을 시스템 작업으로 실행하고 있습니까(작업 파일은 /etc/init/에 있습니까?) 그렇다면 루트로 실행하려면 서비스가 정말로 필요합니까? 그렇지 않은 경우 다음을 참조하세요.
http://upstart.ubuntu.com/cookbook/#run-a-job-as-a-다른-사용자
그렇다면 해당 서비스를 루트 사용자로 실행해야 합니까?
마지막으로 Upstart Cookbook의 나머지 부분을 살펴보는 것이 좋습니다.