2016-09-16 4 views
1

CentOS 6.8의 Apache 서버에서 서비스해야하는 django 웹 응용 프로그램이 있습니다. 이를 위해 mod_wsgi를 사용하고 있습니다.CentOS 6.8에서 mod_wsgi 및 apache를 사용하여 Django에서 파일 제공

내 프로젝트는/path/to/myproject에 있습니다. 바로 거기

나는이 다음 디렉토리 및 파일 : 내 setting.py이 지시자를 추가 한

- app1/ 
- db.sqlite3 
- myproject/ 
- myprojectenv/ 
- manage.py 
- static/ 

: STATIC_ROOT = os.path.join (BASE_DIR, "정적 /") 및 I' django 서버를 실행하려고 시도하고 내 응용 프로그램보기를 올바르게 볼 수 있습니다.

그 후, 나는 내 브라우저에서 청원서를 내 앱으로 보내려면 아파치 서버를 구성하려고 시도했지만 아파치는 403 금지 된 오류를 발생시킵니다. 나는 다음

단계는 다음과 같습니다 그런

- Add to httpd.conf the following information: 
    <VirtualHost *:80> 
     Alias /static /path/to/myproject/static 
     Alias /app1 /path/to/myproject/app1 

     <Directory /path/to/myproject/static> 
      Order allow,deny 
      Allow from all 
     </Directory> 

     <Directory /path/to/myproject/app1> 
      Order allow,deny 
      Allow from all 
     </Directory> 

     <Directory /path/to/myproject/myproject> 
      <Files wsgi.py> 
       Order allow,deny 
       Allow from all 
      </Files> 
     </Directory> 

     WSGIDaemonProcess myproject user=myuser group=mygroup python-path=/path/to/myproject:/path/to/myproject/myprojectenv/lib/python2.7/site-packages 
     WSGIProcessGroup myproject 
     WSGIScriptAlias//path/to/myproject/myproject/wsgi.py 
    </VirtualHost> 

, 나는 아파치 내 장고 프로젝트에 액세스 할 수 있도록하기 위해, 아파치 사용자에게 권한을 준 :

- sudo usermod -a -G myuser apache 
- chmod 710 /home/myuser 
- chmod 664 ~/myproject/db.sqlite3 
- sudo chown :apache ~/myproject/db.sqlite3 
- sudo chown :apache ~/myproject 

마지막으로, htttpd 서비스를 재시작하고 내 앱에 청원서를 보내려고했지만 "403 Forbidden error"가 있습니다.

그 후에 나는 django 프로젝트를 apache 디렉토리/var/www /에 복사하려고했는데 finnaly는 내 장고 파일을 볼 수 있었지만 파일처럼 아파치는 내 앱을 실행하지 않고 내보기를 보여줬다. 바르게.

나는이 문제가 아파치 사용자의 권한에 관한 것일 수 있다고 생각하지만, 내가 뭘 할 수 있는지 모른다.

내가 뭘 잘못하고 있니?

답변

1

브라우저의 403 오류가 아닌 Apache 오류 로그의 실제 오류는 무엇입니까?

대부분 홈 디렉토리가 710 인 것이 원인 일 수 있습니다. 즉, Apache 사용자와 같은 다른 사용자는 홈 디렉토리를 볼 수 없습니다. Apache 사용자가 URL을 WSGI 응용 프로그램에 매핑 할 수 있어야합니다. 변경 또한

from myproject.wsgi import application 

:

WSGIScriptAlias//path/to/myproject/myproject/wsgi.py 

    <Directory /path/to/myproject/myproject> 
     <Files wsgi.py> 
      Order allow,deny 
      Allow from all 
     </Files> 
    </Directory> 

어느 쪽의 홈 디렉토리 외부에서 전체 프로젝트를 이동하거나 거기에있다 /var/www/myproject 또는 이와 유사한에서 myproject.wsgi라는 별도의 WSGI 스크립트 파일을 작성,

대상 :

WSGIScriptAlias//var/www/myproject/myproject.wsgi 

    <Directory /var/www/myproject> 
     <Files myproject.wsgi> 
      Order allow,deny 
      Allow from all 
     </Files> 
    </Directory> 

아파치 u ser는 URL 매핑을 수행 할 때 WSGI 스크립트 파일을 볼 수 있어야합니다. 응용 프로그램 코드는 실제 사용자의 홈 디렉토리에서 내용을 읽을 수있는 myuser 사용자의 데몬 모드에서 실제로 실행됩니다.

코드가 myuser으로 실행되므로 디렉토리/파일의 소유권을 Apache 사용자로 변경할 필요가 없습니다.