시작 시 Python 서버 실행

시작 시 Python 서버 실행

실행해야 하는 Python 기반 서버가 몇 개 있고 Ubuntu Server 상자를 시작할 때 자동으로 시작되기를 원합니다. 이와 같이 실행하는 가장 좋은 방법은 무엇입니까?

나는 Bash 스크립트를 작성하고 Screen을 사용하여 백그라운드에서 실행되도록 하여 때때로 확인할 수 있기를 바랐습니다.

echo screen -d -m python

잘 작동해요,

echo screen -d -m `sudo python /home/matt/tornadoServer/tornadoDeploy.py`

오류 메시지 없이는 그렇지 않습니다. 그게 공백과 관련이 있는 걸까요? 역따옴표로 묶었는데도요? 나는 또한 다음을 시도했습니다.

WEB="screen -d -m `sudo python /home/matt/tornadoServer/tornadoDeploy.py`"
echo $WEB

공간을 탈출하는 방법이지만 운이 좋지 않습니다. 이를 수행하는 Bash 스크립팅 방법은 무엇입니까?

Bash 스크립트가 작동하면 시작 시 실행되도록 어디에 배치할 수 있나요?

답변1

sudo비밀번호를 묻는 메시지가 표시되므로 실패합니다 . 열려 있는 TTY가 없으므로 사용자가 TTY를 입력하기를 기다리고 있거나 실제로 즉시 실패할 수 있습니다. 이것을 루트로 실행하는 경우 sudo로 시작할 필요가 없습니다.

그러나 당신이 원하는 것은 tornadoDeploy.py를 자체적으로 데몬화하도록 변경하는 것입니다. 즉, 자체적으로 분리하여 열린 세션에서 실행되지 않도록 하는 것입니다. 그만큼파이썬 데몬화 라이브러리이를 수행할 수 있는 쉬운 도구를 제공합니다. 이렇게 하면 화면을 처리할 필요가 없어지면서 프로세스를 데몬화할 수 있습니다.

답변2

놓다

sudo -n python /home/matt/tornadoServer/tornadoDeploy.py &

/etc/rc.d/rc.local 파일에 넣습니다. 또는 귀하의 배포판에 상응하는 것이 무엇이든 가능합니다.

귀하의 스크립트가 제대로 작동하는 데몬이고 스크립트를 실행하는 데 비밀번호가 필요하지 않도록 sudo를 설정했다고 가정합니다.

읽다이것시작 스크립트에 대해이것Python 데몬 라이브러리에 대해 그리고 토네이도를 달려야 하는 거 아냐?실제 http 서버 뒤에?

답변3

부팅 시 애플리케이션이 시작되도록 하는 Ubuntu(및 Debian) 방법은 update-rc.d를 사용하여 해당 애플리케이션을 시스템 서비스로 전환하는 것입니다. 지침은 여기를 참조하세요.http://www.debuntu.org/how-to-manage-services-with-update-rc.d

특히 다른 사용자가 이를 수정할 수 있는 경우 루트로 실행되는 모든 항목은 잠재적인 보안 취약점이라는 점을 기억하십시오.

답변4

rc.local에서 실행하는 경우 /etc/sudoers를 편집하고 다음 문자열에 주석을 달아야 합니다.

기본값이 필요합니다.

관련 정보