Ubuntu VPS에 Thin Ruby 애플리케이션 서버를 설정하려고 합니다. 특정 계정을 만들고 그 아래에 rbenv와 모든 gem을 설치했습니다.
나는 다음 목표를 달성하기 위한 편리한 방법을 찾고 있습니다.
- 권한이 없는 사용자 계정으로 Thin Rack 애플리케이션을 실행합니다.
- 애플리케이션을 데몬으로 실행하도록 설정
- 시스템 시작 시 데몬이 자동으로 실행되도록 합니다.
- 데몬 프로세스를 다시 시작 가능하게 만들기
- Unix 도메인 소켓을 통해 애플리케이션에 액세스하려면 Nginx를 활성화하세요.
목표 2와 3이 가장 까다롭습니다. 시스템이 시작될 때 해당 사용자로 실행되도록 사용자에 대한 스크립트를 정의할 수 있습니까?
답변1
부팅 시 시작하려면 사용자 crontab 파일에 다음 줄을 추가합니다( 사용 crontab -e
).
매개변수가 있는 @reboot /path/to/your/script
스크립트의 실제 내용은 필요에 따라 달라집니다. 단순히 데몬을 시작할 수도 있고 구성을 전달하는 더 똑똑한 에이전트를 시작할 수도 있습니다. 이렇게 하면 어떤 이유로 인해 서비스가 예기치 않게 종료된 경우 서비스를 자동으로 다시 시작할 수 있습니다.
답변2
배포판의 시작 스크립트 템플릿을 조정하기만 하면 됩니다. 나는 모든 사람이 그러한 템플릿을 가지고 있다고 믿습니다.
systemd를 사용하는 경우 단위 파일에서 사용할 사용자를 지정할 수 있습니다.
이전 init 스크립트를 사용하는 경우 스크립트는 startproc
또는 를 사용할 수 있습니다 start_daemon
. 이러한 래퍼에 매개변수를 추가하여 사용자 ID를 구성할 수 있습니다.
또는 프로그램을 SUID(루트가 아닌 대상 사용자)로 설정하고 실행 권한을 신뢰할 수 있는 사용자(또는 루트만)로 제한합니다.