2014-02-10 4 views
5

내가 mod_wsgi와 술병을 설정하기 위해 노력하고있어 함께 술병을 설정하려고하지만 다음과 같은 오류를가 mod_wsgi에

(13)Permission denied: access to/denied (filesystem path '/home/ec2-user/myapp') because search permissions are missing on a component of the path 

테스트가 계속하면 플라스크 응용 프로그램에 유효한 경로입니다.
이것은 /etc/httpd/conf.d 폴더

WSGIRestrictStdout Off 
<VirtualHost *> 
    ServerName somewhere.compute-1.amazonaws.com 

    WSGIDaemonProcess flaskapp user=ec2-user group=ec2-user threads=5 
    WSGIScriptAlias//home/ec2-user/myapp/myapp.wsgi 

    <Directory /home/ec2-user/myapp> 
     WSGIProcessGroup flaskapp 
     WSGIApplicationGroup %{GLOBAL} 
     Order deny,allow 
     Allow from all 
    </Directory> 
    LogLevel notice 
</VirtualHost> 

이 내 myapp.conf 파일 내가 VIRTUALENV 사용하고 있지 않다 python 2.6.8
Apache/2.2.26입니다. 내가 아파치를 시작하면

내가의 error_log에 통보로 이것을 볼

[Mon Feb 10 14:33:00 2014] [notice] Apache/2.2.26 (Unix) DAV/2 mod_wsgi/3.2 Python/2.6.8 configured -- resuming normal operations 

이 내 myapp.wsgi 파일입니다 단지 python myapp.wsgi

오류가 말해 좋은 것 같다 작품 실행

from flask import Flask 
application = Flask(__name__) 

@application.route("/") 
def hello(): 
    return "Hello World!" 

if __name__ == "__main__": 
    application.run(host='0.0.0.0', port=80) 

일부 폴더에 대한 일부 사용 권한을 변경해야하지만 폴더가 무엇인지 잘 모릅니다.

답변

3

13PermissionDenied에 대한 Apache 문서를 확인하고 폴더에 대한 올바른 사용 권한을 설정해야합니다. 또한 수

chmod 755 /home/ec2-user/myapp/ 

:

cd /home/ec2-user/ 
ls -la 

어떤 출력합니다 모든 파일 및 소유자 : 폴더의 각 사용자 그룹에 대한 그룹 및 사용 권한. 평범하지 않은 것을 찾으십시오. WSGIDaemonProcess docs에서

:

사용자 = 이름 | user = # uid.rst

데몬 프로세스를 실행해야하는 사용자의 UNIX 사용자 이름 또는 숫자 사용자 uid를 정의합니다. 이 옵션을 지정하지 않으면 데몬 프로세스가 Apache가 하위 프로세스를 실행하고 User 지시문에 정의 된 것과 동일한 사용자로 실행됩니다.

Apache가 루트 사용자로 시작되지 않은 경우이 옵션은 무시됩니다.이 경우 설정에 관계없이 Apache가 시작된 사용자로 데몬 프로세스가 실행됩니다.

당신이 ec2-user로 실행되지 않고 apache 사용자가 모든 하위 디렉토리에 액세스 할 수 있어야하고 폴더 /home/ec2-user/를 포함 apache로 사용자를 실행하는 경우. 당신이 ec2-user의 홈 디렉토리의 권한을 이동하지 않아도

당신은 사용자 apache/var/www/, chown로 이동하고 거기에서 실행할 수 있습니다.

+0

나는 전체 폴더를 재귀 적으로 좌절감에서 벗어났다. 내 게시물에서 볼 수 있듯이, 내 error_log에 13PermissionDenied가 있는데, 어떤 폴더를 바꿀지 모릅니다. –

+0

@ WillemD'haeseleer - 어떤 사용자가 아파치를 실행하고 있습니까? '루트'? – Ewan

+0

나는 사용자 아파치로 실행하고 있지만 완전히 확신 할 수는 없지만 여전히 루트로 아파치 일 수 있습니다. –

1

이 질문은 mod_wsgi 메일 링리스트에서도 확인되었습니다. 메일 링리스트에 대한 토론을 참조하십시오.후속 조치는 메일 링리스트에 있습니다.

+0

안녕하세요 그레이엄, 귀하의 응답도 마찬가지입니다. 메일 링리스트에 대한 귀하의 답변도 문제를 이해하는 데 도움이되었습니다. –

0

영원히이 붙어있어하고 유용한 설명을 찾을 수 없습니다. 나는 파일 권한을 테스트하기 위해 임시 셸을 아파치에 제공하려했지만 여전히 아무데도 가지 않았다. 마지막으로 해결책을 찾았습니다. documented here.

요약하면이 오류는 SELinux가 해당 디렉토리/파일에 대한 액세스를 금지하도록 구성된 경우에도 생성 될 수 있습니다. 필요한 경우 audit.log를 확인하고 파일의 보안 컨텍스트를 변경하십시오.

chcon --user system_u --type httpd_sys_content_t -Rv /home/ec2-user/myapp/ 

이로 인해 발생할 수있는 보안 위험에 대해 명시 적 또는 묵시적으로 보장하지 않습니다. gcloud/CentOS7 기본 설정을 사용하여 문제가 발생 했었지만 플랫폼인지 배포판인지 여부는 알 수 없습니다.

행운을 빈다.

관련 문제