Solaris에서 재부팅 후 시작 스크립트가 실행되지 않음

Solaris에서 재부팅 후 시작 스크립트가 실행되지 않음

/etc/rc3.d서버가 재부팅될 때 실행되지 않는 Apache를 시작하는 명령이 있습니다 . 스크립트의 이름은 입니다 S75Apache2. 누군가는 링크 이름에 대문자 "A"가 있고 이름을 로 변경하면 작동할 수 있기 때문이라고 추측했습니다 S75apache2.

누구든지 확인할 수 있습니까? 문서를 검색했지만 답변을 찾을 수 없습니다. 서버를 다시 재부팅하지 않고는 실제로 이것을 테스트할 수 없습니다(나는 그렇게 하고 싶지 않습니다).

답변1

Solaris 초기화 스크립트는 고통스럽습니다. 대문자 A는 중요하지 않습니다. 'S'로 시작 /etc/rc.d하는 모든 파일을 찾아서 /etc/rc3.d숫자 순서대로 실행하는 스크립트가 있습니다.

이제 기본부터 시작하겠습니다.

  1. 설정이 실행 가능 합니까 /etc/rc3.d/S75Apache2?

  2. 해당 스크립트에 '#!'이 있습니까? 선? 행이 정확합니까(인쇄되지 않는 바이트 등이 없음)?

  3. bash 또는 ksh 스크립트인 경우 ksh -n /etc/rc3.d/S75Apache2 start. 구문 오류가 있는지 알려줍니다.

  4. 해당 스크립트를 루트로 실행할 수 있으면 시도해 보십시오. 스크립트 /etc/rc3.d/S75Apache2 start가 시작되고 중지 /etc/rc3.d/S75Apache2 stop 되는지 주의 깊게 확인하십시오 . 최소한 'start' 및 'stop' 인수를 사용하여 스크립트를 직접 실행하십시오. 런타임에 스크립트가 수행하는 작업을 확인하는 데 사용됩니다 . 그것이 하는 일이 당신이 믿는 것과 일치하는지 확인하십시오.httpdhttpdset -x

  5. 주의 깊게 읽으십시오 /etc/rc3.d/S75Apache2. PATH부팅 시에는 드물게 채워지며 스크립트는 부팅 시 일부 실행 파일의 위치를 ​​알지 못하지만 부팅 후 실행할 때는 알 수 있습니다. 너무 많이 가정하지 마십시오. 존재한다고 생각하는 파일이 존재하지 않을 수도 있습니다.

  6. KnnApache2에 스크립트가 없는지 확인하세요 /etc/rc3.d. 나는 (예를 들어) 실행 레벨 3에서 실행 레벨 5로 전환되면 Solaris가 init실행될 것이라고 믿습니다.K76Apache2 stop

  7. 스크립트가 사용자 ID를 적절하게 변경하는지 확인하십시오. 스크립트가 apachectl start일부 프롤로그 명령을 사용하여 호출한다는 점을 고려하면 이는 Apache에서는 중요하지 않을 수 있습니다. 그러나 직접 실행하는 경우 결과 프로세스에 올바른 사용자 ID가 있는지 http확인하십시오 . 올바른 결과를 얻으려면 스크립트에서 또는 무언가를 httpd사용하세요 .sudo

답변2

시작 스크립트에 버그가 있는 것으로 나타났습니다. LD_LIBRARY_PATH 변수가 제대로 설정되지 않았습니다. 스크립트에서 이를 정의하면 문제가 해결됩니다.

나중에 참조할 수 있도록 문제 해결의 원인이 된 오류가 포함된 시작 메시지가 포함된 로그 파일이 있습니다. 파일은 다음과 같습니다

/var/svc/log/milestone-multi-user-server:default.log

/etc/rc3.d/README 파일에서 이에 대한 참조를 찾았습니다. 또 다른 날, 또 다른 지식 덩어리!

답변3

자신만의 Apache를 배포했습니까(즉, 소스 코드에서 컴파일했습니까?) 아니면 단순히 Solaris 10에 사전 설치된 Apache를 사용하고 있습니까?

글쎄요, 당신이 말하는 대로 Solaris 10(또는 그 이상)을 사용하고 있다면 그것은 별로 중요하지 않습니다.Solaris 초기화 스크립트를 전혀 사용하면 안 됩니다., SMF를 사용해야 합니다. (예, 기술적으로 init 스크립트는 여전히 지원되지만 지적했듯이 이는 고통스럽고 SMF가 훨씬 좋습니다)

Solaris 10과 함께 사전 설치되어 제공되는 Apache 2.2 웹 서버를 시작하려면(지금 및 재부팅 후에도 자동으로) 다음을 수행하십시오.

svcadm 활성화 /network/http:apache2

자체 Apache를 롤링한 경우 SMF 매니페스트를 생성하고 매니페스트를 가져온 다음 시작해야 합니다. Google에서 "SMF Solaris"를 검색하면 많은 레시피를 찾을 수 있습니다.

관련 정보