2010-11-16 49 views
5

Tôi gặp sự cố khi thiết lập wgsi với django. Tôi đang theo dõi số http://docs.djangoproject.com/en/dev/howto/deployment/modwsgi/ này. Tuy nhiên, tôi vẫn còn thực sự bối rối như nơi để đặt các tập tin .wsgi và nếu tôi cần phải thiết lập các sys.path. Tôi đã thử nó cả trực tiếp bên ngoài và bên trong web root và tôi không thể có được bất cứ điều gì để làm việc như mong đợi.Đường dẫn Django WGSI

# /home/ben/public_html/django_test/testproject/apache/django.wsgi: 

import os 
import sys 

os.environ['DJANGO_SETTINGS_MODULE'] = 'testproject.settings' 

import django.core.handlers.wsgi 
application = django.core.handlers.wsgi.WSGIHandler() 

Relivant apache conf:

DocumentRoot "/home/ben/public_html/django_test/testproject/" 
WSGIScriptAlias/"/home/ben/public_html/django_test/testproject/apache/django.wsgi" 

Apache Logs Lỗi (tiêu chuẩn apache 500 trang):

ImportError: Could not import settings 'testproject.settings' (Is it on sys.path? ... 

Tôi có thể ở get django ít nhất ném ra một lỗi của riêng của nó bởi sử dụng:

import os 
import sys 

path = '/home/ben/public_html/django_test/testproject' 
if path not in sys.path: 
    sys.path.append(path) 

os.environ['DJANGO_SETTINGS_MODULE'] = 'settings' 

import django.core.handlers.wsgi 
application = django.core.handlers.wsgi.WSGIHandler() 

mà dẫn đến trang này lỗi django:

ImportError at /admin/ 
No module named testproject.urls 

Trả lời

8

tôi đặt wsgi tại cùng cấp hơn settings.py, và trông như thế này:

import os 
import sys 

sys.path.insert(0,os.sep.join(os.path.abspath(__file__).split(os.sep)[:-2])) 


os.environ['DJANGO_SETTINGS_MODULE'] = 'yourprojectname.settings' 

import django.core.handlers.wsgi 
application = django.core.handlers.wsgi.WSGIHandler() 

này là file apache conf:

NameVirtualHost *:80 
<VirtualHost *:80> 
    ServerAdmin [email protected] 
    ServerName www.yourprojectname.com 
    Alias /media/ /home/diegueus9/workspace/yourprojectname/media/ 

    <Directory /home/diegueus9/workspace/yourprojectname/media/> 
     Order deny,allow 
     Allow from all 
    </Directory> 

    WSGIScriptReloading On 
    WSGIDaemonProcess yourprojectname 
    WSGIProcessGroup yourprojectname 
    WSGIApplicationGroup yourprojectname 
    WSGIPassAuthorization On 

    WSGIScriptAlias//home/diegueus9/workspace/yourprojectname/yourfile.wsgi 
    ErrorLog /var/log/apache2/yourprojectname-error.log 

    # Possible values include: debug, info, notice, warn, error, crit, 
    # alert, emerg. 
    LogLevel debug 

    CustomLog /var/log/apache2/yourprojectname-access.log combined 

</VirtualHost> 
+0

này đưa ra một apache 500. Cũng cố gắng thiết lập 'os.environ [' DJANGO_SETTINGS_MODULE '] =' testproject.settings ' '. nhưng không may mắn. – Keyo

+0

tôi chỉnh sửa câu trả lời của tôi. – diegueus9

1

Here is a nice tutorial cho bạn biết cách sử dụng mod_wsgi với Django và một số mục khác không liên quan đến câu hỏi này.

1

Là một sửa chữa nhanh chóng bạn có thể, bên cạnh việc thêm này để sys.path:

path = '/home/ben/public_html/django_test/testproject' 

cũng thêm này:

path2 = '/home/ben/public_html/django_test' 

Bạn cũng có thể thay đổi con đường Python trong Apache VirtualHost của bạn:

WSGIDaemonProcess [...] python-path=/home/ben/public_html/django_test 

Nhưng bạn cũng nên xem lại tài liệu mod_wsgi và tìm hiểu những gì Graham Dumpleton khuyên dùng ở đó.

0

Tôi vừa dành vài giờ khắc phục vấn đề này và sửa chữa của tôi là SELinux đã cấm truy cập vào thư mục /django/ của tôi.

Để kiểm tra xem SEStatus chặn truy cập của bạn, xem nhật ký tại /var/log/audit/audit.log

sửa chữa của tôi là một đơn giản:

restorecon -R /var/www/django/ 
Các vấn đề liên quan