Inittab 프로세스 항목을 단축하는 방법, 즉 init에서 볼 수있는 환경 변수를 어디에 두어야합니까?

StackOverflow https://stackoverflow.com/questions/865706

문제

Nginx를 사용하여 Ruby 및 PHP 응용 프로그램을 호스팅하기 위해 Debian Etch 서버를 설정하고 있습니다. recawn 동작으로 부팅에서 PHP-CGI 프로세스를 시작하도록 InitTab을 성공적으로 구성했습니다. 1000 개의 요청을받은 후, PHP-CGI 작업자 프로세스는 죽고 Init에 의해 부활합니다. InitTab 레코드는 다음과 같습니다.

50:23:respawn:/usr/local/bin/spawn-fcgi -n -a 127.0.0.1 -p 8000 -C 3 -u someuser -- /usr/bin/php-cgi

처음에는 프로세스 항목 (세 번째 콜론 이후의 모든)을 별도의 스크립트 (단순히 길기 때문에)에 inittab 레코드에 넣었지만 스크립트가 한 줄을 실행하고 죽기 때문에 Syslog가 채워졌습니다. 다음과 같은 오류로 :

May  7 20:20:50 sb init: Id "50" respawning too fast: disabled for 5 minutes

따라서 스크립트 파일을 제거하고 전체 줄을 Inittab에 넣었습니다. 따라서 Syslog에는 오류가 표시되지 않습니다.

이제 나는 똑같이 시도하고 있습니다 얇은 Rails 신청서를 제공합니다. 이 명령을 실행하여 얇은 서버를 성공적으로 시작할 수 있습니다.

sudo thin -a 127.0.0.1 -e production -l /var/log/thin/thin.log -P /var/run/thin/thin.pid -c /path/to/rails/app -p 8010 -u someuser -g somegroup -s 2 -d start

-d (daemonize) 플래그를 사용하든 아니든 그것은 정확히 동일하게 작동합니다. 명령 줄 컨트롤은 즉시 다시 돌아옵니다 (프로세스는 데몬 화되었습니다). 해당 전체 명령 (Sudo를 빼고 절대 경로)을 Inittab에 넣으면 init는 프로세스 항목이 너무 길다 고 불만을 제기하므로 옵션을 /etc /프로파일의 내보내기 환경 변수에 넣습니다. 이제 다음과 같이 서버를 성공적으로 시작할 수 있습니다.

sudo thin $THIN_OPTIONS start

하지만 이걸 Respawn Action과 함께 inittab 레코드에 넣었을 때

51:23:respawn:/usr/local/bin/thin $THIN_OPTIONS start

로그는 환경 변수가 INT로 보이지 않음을 분명히 나타냅니다. 마치 명령이 단순히 "얇은 시작"인 것처럼 보입니다.

InitTab 프로세스 항목을 어떻게 단축 할 수 있습니까? Thin_Options 환경 변수를 설정할 수있는 /etc /프로파일 이외의 다른 파일이 있습니까? PHP-CGI에 대한 나의 이전 경험은 전체 명령을 별도의 스크립트에 넣을 수 없다고 말합니다.

도움이 되었습니까?

해결책

init.d 스크립트

스크립트를 사용하십시오

/etc/rc.d/init.d

런 레벨을 설정하십시오

다음은 몇 가지 예입니다 얇고 루비, 아파치

http://articles.slicehost.com/2009/4/17/centos-apache-rails-and-thin

http://blog.fiveruns.com/2008/9/24/rails-automation-at-slicehost

http://elwoodicious.com/2008/07/15/nginx-haproxy-thin-fastcgi-p5-load-balanced-rails-with-php-support/

사용될 예제 initscripts를 제공합니다.

편집하다: Asker는 이것이 다시 뿌리는 것을 허용하지 않을 것이라고 지적했다. 나는 Init 스크립트에서 포킹을 제안하고 프로세스를 제거 할 것을 제안하여 Init이 걸리지 않도록 (스크립트 자체가 점검 할 수 있음). 그런 다음 서버 프로세스에서 대기하는 무한 루프를 생성하여 죽고 다시 시작합니다.

edit2: Init가 스크립트를 포크 할 것 같습니다. 루프 만해야합니다.

다른 팁

그리고 옵션으로 얇아지는 래퍼를 부르지 않는 이유는 무엇입니까?

start_thin.sh :
#!/bin/bash
/usr/local/bin/thin -a 127.0.0.1 -e 프로덕션 -l /var/log/thin/thin.log -p /var/run/thin/thin.pid -c/path/to/Rails/App -p 8010 -u someuser -g 몇 가지 그룹 -S 2 -D 시작

그리고:
51 : 23 : respawn :/usr/local/bin/start_thin

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top