2013-05-10 104 views
0

現在已經搜索了很多,並遵循django文檔..仍然不會工作,但我認爲我很接近..我知道有很多關於此的信息,但即使是tho我已經嘗試了一些指南,它仍然無法正常工作,我想我已經測試了其他主題中建議的大多數內容..部署django項目得不到結果

我試圖在我的服務器上部署我的django網站,開發模式(從shell)。所以當運行python manage.py runserver時沒問題,但是當試圖讓apache2服務器運行django時,首先我得到了「請求的URL /在這個服務器上找不到」,現在我得到了apache的error.log :

[client 192.168.1.49] mod_wsgi (pid=5606): Exception occurred processing WSGI script '/home/Webmod/www/djangojquerycontroller/Server/Server/wsgi.py'. 
[client 192.168.1.49] Traceback (most recent call last): 
[client 192.168.1.49] File "/usr/local/lib/python2.7/dist-packages/django/core/handlers/wsgi.py", line 236, in __call__ 
[client 192.168.1.49]  self.load_middleware() 
[client 192.168.1.49] File "/usr/local/lib/python2.7/dist-packages/django/core/handlers/base.py", line 45, in load_middleware 
[client 192.168.1.49]  for middleware_path in settings.MIDDLEWARE_CLASSES: 
[client 192.168.1.49] File "/usr/local/lib/python2.7/dist-packages/django/conf/__init__.py", line 53, in __getattr__ 
[client 192.168.1.49]  self._setup(name) 
[client 192.168.1.49] File "/usr/local/lib/python2.7/dist-packages/django/conf/__init__.py", line 48, in _setup 
[client 192.168.1.49]  self._wrapped = Settings(settings_module) 
[client 192.168.1.49] File "/usr/local/lib/python2.7/dist-packages/django/conf/__init__.py", line 134, in __init__ 
[client 192.168.1.49]  raise ImportError("Could not import settings '%s' (Is it on sys.path?): %s" % (self.SETTINGS_MODULE, e)) 
[client 192.168.1.49] ImportError: Could not import settings 'Server.settings' (Is it on sys.path?): No module named Server.settings 

所以我已經安裝中提到的所有東西https://docs.djangoproject.com/en/dev/howto/deployment/wsgi/

那麼首先我有我的網站位於的:/首頁/ Webmod/WWW/djangojquerycontroller /服務器

(的名稱該網站是服務器..)所以這裏是模板,靜態和媒體文件夾以及正在完成大部分工作的應用程序dataManager。 在文件夾/ home/Webmod/WWW/djangojquerycontroller /服務器/服務器,我們發現:

django.wsgi:(此文件我不得不手動創建,不知道是否奏效好吧..)

import os 
import sys 

path = '/home/Webmod/www/djangojquerycontroller/' 
if path not in sys.path: 
    sys.path.append(path) 

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "Server.settings") 

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

wsgi.py:(!從這個文件,我可以寫錯誤信息,所以這個文件運行())

import sys, os 
print >>sys.stderr, "hej from wsgi.py" 
sys.path.append('/home/Wedmod/www/djangojquerycontroller/Server') 
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "Server.settings") 

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

settings.py:

import warnings 
import exceptions 
# PROJECT_ROOT = os.path.realpath(os.path.dirname(__file__)) 
warnings.filterwarnings("ignore", category=exceptions.RuntimeWarning, module='django.db.backends.sqlite3', lineno=50) 

DEBUG = True 
TEMPLATE_DEBUG = DEBUG 

DATABASES = { 
    'default': { 
     'ENGINE': 'django.db.backends.sqlite3', # Add 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'. 
     'NAME': '/home/Webmod/www/djangojquerycontroller/Server/Server/db/database', # Or path to database file if using sqlite3. 
     # The following settings are not used with sqlite3: 
     'USER': '', 
     'PASSWORD': '', 
     'HOST': '',      # Empty for localhost through domain sockets or '127.0.0.1' for localhost through TCP. 
     'PORT': '',      # Set to empty string for default. 
    } 
} 

ALLOWED_HOSTS = [] 

TIME_ZONE = 'Europe/Stockholm' 

LANGUAGE_CODE = 'en-us' 

SITE_ID = 1 

USE_I18N = True 

USE_L10N = True 

USE_TZ = True 

MEDIA_ROOT = '/home/Webmod/www/djangojquerycontroller/Server/media' 

MEDIA_URL = 'media/' 

FILE_UPLOAD_PERMISSIONS = 755 

STATIC_ROOT = '/home/Webmod/www/djangojquerycontroller/Server/static' 

STATIC_URL = '/static/' 

STATICFILES_DIRS = (
    '/home/Webmod/www/djangojquerycontroller/Server/static/', 
) 

STATICFILES_FINDERS = (
    'django.contrib.staticfiles.finders.FileSystemFinder', 
    'django.contrib.staticfiles.finders.AppDirectoriesFinder', 
    'django.contrib.staticfiles.finders.FileSystemFinder', 
    'django.contrib.staticfiles.finders.AppDirectoriesFinder', 
    #'django.contrib.staticfiles.finders.DefaultStorageFinder', 
) 

ADMIN_MEDIA_PREFIX = '/admin_media/' 

# List of callables that know how to import templates from various sources. 
TEMPLATE_LOADERS = (
    'django.template.loaders.filesystem.Loader', 
    'django.template.loaders.app_directories.Loader', 
    #'django.template.loaders.eggs.Loader', 
) 

MIDDLEWARE_CLASSES = (
    'django.middleware.common.CommonMiddleware', 
    'django.contrib.sessions.middleware.SessionMiddleware', 
    'django.middleware.csrf.CsrfViewMiddleware', 
    'django.contrib.auth.middleware.AuthenticationMiddleware', 
    'django.contrib.messages.middleware.MessageMiddleware', 
) 

ROOT_URLCONF = 'Server.urls' 

# Python dotted path to the WSGI application used by Django's runserver. 
WSGI_APPLICATION = 'Server.wsgi.application' 

TEMPLATE_DIRS = (
    '/home/Webmod/www/djangojquerycontroller/Server/templates', 
) 

INSTALLED_APPS = (
    'django.contrib.auth', 
    'django.contrib.contenttypes', 
    'django.contrib.sessions', 
    'django.contrib.sites', 
    'django.contrib.messages', 
    'django.contrib.staticfiles', 
    'dataManager', 
    'django.contrib.admin', 
    'django.contrib.admindocs', 
    'django_evolution', 
) 

LOGGING = { 
    'version': 1, 
    'disable_existing_loggers': False, 
    'filters': { 
     'require_debug_false': { 
      '()': 'django.utils.log.RequireDebugFalse' 
     } 
    }, 
    'handlers': { 
     'mail_admins': { 
      'level': 'ERROR', 
      'filters': ['require_debug_false'], 
      'class': 'django.utils.log.AdminEmailHandler' 
     } 
    }, 
    'loggers': { 
     'django.request': { 
      'handlers': ['mail_admins'], 
      'level': 'ERROR', 
      'propagate': True, 
     }, 
    } 
} 

https.conf。然後我都試過兩個版本的/ etc/apache2的:

Alias /static/ /home/Webmod/www/djangojquerycontroller/Server/static/ 

<Directory /home/Webmod/www/djangojquerycontroller/Server/static> 
    Order deny,allow 
    Allow from all 
</Directory> 

WSGIScriptAlias//home/Webmod/www/djangojquerycontroller/Server/Server/django.wsgi 

<Directory /usr/local/django/mysite/apache> 
    Order deny,allow 
    Allow from all 
</Directory> 

二測:

WSGIScriptAlias//home/Webmod/www/djangojquerycontroller/Server/Server/wsgi.py 
WSGIPythonPath /home/Webmod/www/djangojquerycontroller:/usr/local/lib/python2.7/dist-packages/django 
<Location "/Server"> 
    SetHandler python-program 
    PythonHandler django.core.handlers.modpython 
    SetEnv DJANGO_SETTINGS_MODULE Server.settings 
    PythonOption django.root /Server 
    PythonPath "['/home/Webmod/www/djangojquerycontroller/',  '/home/Webmod/www/djangojquerycontroller/Server','/home/Webmod/www/djangojquerycontroller/Server/dataManager', '/home/Webmod/www/djangojquerycontroller/'] + sys.path" 
    PythonDebug On 
</Location> 

的/ etc/apache2/sites-available/django.conf

<VirtualHost *:80> 

WSGIScriptAlias//home/Webmod/www/djangojquerycontroller/Server/Server/wsgi.py 

ServerName localhost 

Alias /media/ /home/Webmod/www/djangojquerycontroller/Server/static/ 
Alias /static/ /home/Webmod/www/djangojquerycontroller/Server/static/ 

<Directory /home/Webmod/www/djangojquerycontroller/Server/> 
Order allow,deny 
Allow from all 
</Directory> 

</VirtualHost> 

所以問題是,這有什麼問題?爲什麼Apache不能運行它,因爲它應該是..如果可能的話,它將是真正的史詩般的一些很酷的終端突擊隊員,我可以複製粘貼,然後它就像魔術一樣工作! =)

任何想法來解決這將是非常好的!

回答

1

您只需添加settings.py文件所在位置的路徑,然後將環境變量設置爲settings即可。對wsgi文件進行以下更改。

sys.path.append('/home/Wedmod/www/djangojquerycontroller/Server') 
os.environ["DJANGO_SETTINGS_MODULE"]="settings" 
+0

您好,感謝尖實際購買我已經在wsgi.py,但我用'os.environ.setdefault(「DJANGO_SETTINGS_MODULE」,「Server.settings」)'代替,想你行了,但它不起作用。但sys.path.append部分已經完成,如果我打印sys。路徑看起來不錯。 – Straider 2013-05-10 13:02:43

+0

這仍然沒有解決..任何人有一些想法什麼嘗試?謝謝 – Straider 2013-05-15 08:36:34