2009-11-24 2 views
4

로컬에서는 내 앱이 정상적으로 실행되고 로그에 기록됩니다.로그 파일이 쓰여지지 않고 있습니다 (승객)

내 프로덕션 서버에서 PassOS를 실행하는 Apache 서버로 CentOS를 실행하고 있습니다. 디버깅을 시도 할 때 로그 파일이 기록되지 않는 것으로 나타났습니다. 내가 한 첫 번째 일은 chmod 0666이며, 작동하지 않는다는 것을 알았을 때 나는 아파치 로그를 보았다. 레일스 오류 : 로그 파일에 액세스 할 수 없습니다. /var/www/vhosts/mysite.com/rails/exp/releases/20091124020342/log/production.log가 존재하고 chmod 0666인지 확인하십시오. 로그 수준이 WARN으로 올려졌으며 문제가 해결 될 때까지 출력이 STDERR로 지정되었습니다 고쳐 졌어.

(참고 : 나는 카피 스트라 노에 배포하고있다) 어쨌든

을, 나는 주위를 봤과는 SELinux에 문제의 말하는 사람을 발견, 그래서 승객의 문서에 모습이 발견 : 기본적으로 이렇게 말한다 http://www.modrails.com/documentation/Users%20guide.html#_my_rails_application_8217_s_log_file_is_not_being_written_to

을 chcon -R -h -t httpd_sys_content_t/path/to/your/rails/app

그러나 적절한 경로를 채울 때 다음과 같이 나타납니다.

꽤 난처한 아이디어 ... 어떤 아이디어?

+1

이 서버 장애에 더 나은 것인가? 프로그래밍 문제보다 행정 문제에 더 가깝습니다. – eswald

+0

좋은 생각은 거기에 넣을 것입니다. 감사합니다 – asdfasdfasdfasdf

답변

4

로그 파일에 "ls -l"의 결과는 무엇입니까? 우분투에서는 acl이 로그 파일에서 올바른지 확인해야합니다. 나는 보통 배포가 승객에서 실행되는 사용자입니다

sudo chown -R deploy:deploy /path/to/app 

를 사용하여 해당 해결. 내 우분투 10.x에서 서버와 동일한 문제로 실행

3

. 다음은 문제 해결 과정에서 배운 내용입니다.

  • 앞서 언급했듯이 Passenger는 rails ruby ​​프로세스를 config/environment.rb 파일의 소유자로 실행합니다. 특별한 일을하지 않았다면, 이것은 일반적으로 전체 레일 애플리케이션 디렉토리의 소유자와 같습니다. 카피 스트라 노 배포의 경우, 이것은 카피 스트라 노 사용자입니다. environment.rb에이 루트 (root로 배포되기 때문에 가장 가능성이)가 소유하고있는 경우
  • 는 승객 레일에게 당신은 프로세스가 최고 명령을 통해로 실행되는 사용자 볼 수 있습니다

'아무도'등의 프로세스를 실행 (또는 기타 여러 기술).

두 경우 모두 - 레일 프로세스가 로그 파일에 쓸 수 없다면 아무 것도 로그에 아무것도 표시되지 않습니다 (duh). Rails는이 권한 거부 오류를 무시하고 정상적으로 요청을 처리하려고합니다.

해결책은 레일스 루비 프로세스가 레일스 배포, config/environment.rb 파일 및 로그 디렉토리와 파일을 소유하는 사용자와 동일한 사용자로 실행되도록하는 것입니다.

문제의 파일과 디렉토리를 채우거나 아파치를 설정하고 루비 프로세스를 특정 사용자 (예 : nobody 대신 root)로 실행하도록 지시하는 deplyment 구성 단계가 될 수 있습니다.루트로 실행하는 것은 분명히 바람직하지 않습니다,하지만 당신은 어떤 이유로 그 일을하고, 제대로 기록 로그 레일을 볼 필요가있는 경우 루트로 배포되지 않은 경우, 다음과 같은

# in /etc/apache2/apache2.conf 
PassengerDefaultUser root 

를 추가하여이 작업을 수행 할 수 있습니다 (내가 가지고있는 다른 서버의 경우), 전형적인 시나리오는 비 루트 사용자가 레일즈 app 디렉토리를 소유하고 있고, 승객이 레일스 프로세스를 같은 사용자로 실행해야한다는 것입니다. 모든 것이 제대로 작동해야합니다.

[1] http://www.modrails.com/documentation/Users%20guide%20Apache.html#_the_rails_application_reports_that_it_8217_s_unable_to_start_because_of_a_permission_error

+0

PassengerDefaultUser 루트 설정을 추가하면 나를 위해 해결 된 것입니다. 전에는이 로그 오류가 완전히 신비스러워 보였습니다. 감사! http://stackoverflow.com/questions/31373281/rails-4-cannot-access-log-file을 참조하십시오. – julian