2014-03-06 3 views
1

virtualenv (및 virtualenvwrapper)를 통해 내 사이트를 서비스하기 위해 아파치를 얻는 데 문제가 있습니다. 나는 walkthrough here를 시도했다. 참고로, 내가 읽은 Ubuntu Server v13.10을 사용하고 있는데 아직 Apache v2.2에 대한 기본 지원이 없으므로 연습에서 apache2.2-common을 설치할 수 없습니다. 그러나 아파치 오류 로그에 사용 권한 문제가 있음을 알리는 것과 같은 문제는 아니라고 생각합니다.Apache2 + VirtualEnv IOError : [Errno 13] 사용 권한이 거부되었습니다.

제 설정에서 가상 환경은 루트가 아닌 사용자의 홈 디렉토리에 있지만 아파치 서버는 루트로 실행됩니다 (정상적인 것 같습니다). namei을 사용하여 사용 권한을 추적하려고 시도했으며 chmod +rw을 사용하여 root으로 경로에 연결했습니다. 어떤 아이디어?

[Thu Mar 06 14:16:37.639031 2014] [mpm_event:notice] [pid 8771:tid 140338386122624] AH00489: Apache/2.4.6 (Ubuntu) mod_wsgi/3.4 Python/2.7.5+ configured -- resuming normal operations 
[Thu Mar 06 14:16:37.639144 2014] [core:notice] [pid 8771:tid 140338386122624] AH00094: Command line: '/usr/sbin/apache2' 
[Thu Mar 06 14:16:53.456622 2014] [:error] [pid 8775:tid 140338291197696] [client 192.168.XXX.XXX:50742] mod_wsgi (pid=8775): Target WSGI script '/var/www/www.mysite.org/index.wsgi' cannot be loaded as Python module. 
[Thu Mar 06 14:16:53.456735 2014] [:error] [pid 8775:tid 140338291197696] [client 192.168.XXX.XXX:50742] mod_wsgi (pid=8775): Exception occurred processing WSGI script '/var/www/www.mysite.org/index.wsgi'. 
[Thu Mar 06 14:16:53.456782 2014] [:error] [pid 8775:tid 140338291197696] [client 192.168.XXX.XXX:50742] Traceback (most recent call last): 
[Thu Mar 06 14:16:53.456830 2014] [:error] [pid 8775:tid 140338291197696] [client 192.168.XXX.XXX:50742] File "/var/www/www.mysite.org/index.wsgi", line 16, in <module> 
[Thu Mar 06 14:16:53.456918 2014] [:error] [pid 8775:tid 140338291197696] [client 192.168.XXX.XXX:50742]  execfile(activate_env, dict(__file__=activate_env)) 
[Thu Mar 06 14:16:53.456971 2014] [:error] [pid 8775:tid 140338291197696] [client 192.168.XXX.XXX:50742] IOError: [Errno 13] Permission denied: '/home/nrUser/Envs/mysite/bin/activate_this.py' 
(mysite)root:~# namei -m /home/nrUser/Envs/mysite/bin/activate_this.py 
f: /home/nrUser/Envs/mysite/bin/activate_this.py 
drwxr-xr-x/
drwxr-xr-x home 
drw-r--r-- nrUser 
drwxrwxr-x Envs 
drwxrwxr-x mysite 
drwxrwxr-x bin 
-rwxrwxr-x activate_this.py 
+0

@ ÖzgürEuroğlu : 나는 동의하지 않습니다. 아파치 사용자가 파일을 읽고 실행할 수있는 한, 소유자는 문제가되어서는 안됩니다. 그러나 파일에 액세스하려면 위의 모든 디렉토리에 x 비트가 있어야합니다./home/nrUser에서 x 비트가 누락 된 것 같습니다. –

+0

@ GuntramBlohm이 옳습니다. 나는 잘못된 말을 삭제했다. 감사. –

+0

@ GuntramBlohm : 질문에 정식으로 답변하고 싶다면 올바른 답을 제공했습니다. 나는 다른 튜토리얼에서 644로 퍼미션을 설정했다고 생각한다. 나는 이것이 실행 비트를 제거했다고 생각한다. 디렉토리에 실행 비트가 필요하다고 생각하지는 않았지만 디렉토리 내용을 읽으려고합니다. 로그 아웃하고 내 프로필 설정을로드 할 수없는 경우 확인되었습니다. 하지만 이제는 고쳐졌습니다. – James

답변

6

파일에 액세스하려면 아파치 소유자가 파일 위의 모든 디렉토리에서 적어도 x 비트를 필요로하고 파일 자체에서 r 비트를 필요로합니다. nrUser 디렉토리에 x 비트가 없습니다. chmod 755 /home/nrUser에서 문제를 해결해야합니다.

+3

공용 웹 서버에서이 작업을 수행하는 것이 안전 할 수 있습니까? 그렇지 않으면 보안이 깨질 수 있습니까? –

0

올바르게 기억하면 Apache 사용자/그룹은 디렉토리를 읽을 수있는 권한이 있어야합니다. sudo service apache2 restart를 사용하여 아파치 동안 nrUser의 홈 디렉토리

다시 시작을하고 당신이 당신의 웹 사이트에 액세스 할 수 있는지 - sudo chown -R <user>:www-data mysite <을 : 예를 들어, mysite 디렉토리에 chown을 적용 해보십시오.

+1

Serakiel, 당신은 아파치가 권한이 필요하다는 것은 맞지만, chown을 사용하는 것보다 더 좋은 방법이 있습니다. 특히 여러 고객을 대상으로 여러 웹 페이지를 호스팅하는 경우 다른 OS 사용자가 필요하며 파일을 개별 사용자에게 속하게 할 수 있습니다. 이 경우 그룹/다른 사람 수준에서 액세스 권한을 부여하는 것이 옳습니다. –

관련 문제