Ich habe Django auf meinem lokalen Rechner ausgeführt, aber ich bin an dem Punkt, wo ich meine Django-Site auf meinem Produktionsserver bereitstellen möchte. Mein Server ist ein Ubuntu 14.04 Server mit Apache 2.x, Python 2.7 und Django 1.8. Ich habe versucht, für Apache Django Grundkonfiguration mit und mod_wsgi link, aber ich bekomme immer folgende Fehlermeldung:Django Bereitstellung für die Produktion
Internal Server Error
The server encountered an internal error or misconfiguration and was unable to complete your request.
Hier ist der Fehler im Fehler Apache Log Ich erhalte:
mod_wsgi (pid=14962): Target WSGI script '/var/www/tmws/tmws/wsgi.py' cannot be loaded as Python module.,
mod_wsgi (pid=14962): Exception occurred processing WSGI script '/var/www/tmws/tmws/wsgi.py'.,
Traceback (most recent call last):,
File "/var/www/tmws/tmws/wsgi.py", line 21, in <module>,
application = get_wsgi_application(),
File "/usr/local/lib/python2.7/dist-packages/django/core/wsgi.py", line 14, in get_wsgi_application,
django.setup(),
File "/usr/local/lib/python2.7/dist-packages/django/__init__.py", line 18, in setup,
apps.populate(settings.INSTALLED_APPS),
File "/usr/local/lib/python2.7/dist-packages/django/apps/registry.py", line 85, in populate,
app_config = AppConfig.create(entry),
File "/usr/local/lib/python2.7/dist-packages/django/apps/config.py", line 86, in create,
module = import_module(entry),
File "/usr/lib/python2.7/importlib/__init__.py", line 37, in import_module,
__import__(name),
File "/var/www/tmws/django_tables2/__init__.py", line 2, in <module>,
from .tables import Table,
File "/var/www/tmws/django_tables2/tables.py", line 15, in <module>,
from . import columns,
File "/var/www/tmws/django_tables2/columns/__init__.py", line 1, in <module>,
from .base import library, BoundColumn, BoundColumns, Column,
File "/var/www/tmws/django_tables2/columns/base.py", line 10, in <module>,
from django_tables2.utils import Accessor, AttributeDict, OrderBy, OrderByTuple,
File "/var/www/tmws/django_tables2/utils.py", line 111, in <module>,
@six.python_2_unicode_compatible,
AttributeError: 'module' object has no attribute 'python_2_unicode_compatible',
Hier
ist meine apache2.conf Datei:
...
<Directory /var/www/tmws/tmws>
<Files wsgi.py>
Require all granted
</Files>
</Directory>
...
WSGIScriptAlias//var/www/tmws/tmws/wsgi.py
WSGIPythonPath /var/www/tmws
Das ist meine wsgi.py Datei:
import os, sys
from django.core.wsgi import get_wsgi_application
sys.path.append('/home/ubuntu/gather/src')
sys.path.append('/usr/local/lib/python2.7/dist-packages')
sys.path.append('/var/www/tmws')
sys.path.append('/var/www/tmws/tmws')
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "tmws.settings")
application = get_wsgi_application()
Dies ist meine Webseite Conf-Datei:
<VirtualHost *:80>
ServerAdmin xxxxxxxx
ServerName xxxxxxxxxxx
DocumentRoot /var/www/tmws
WSGIScriptAlias//var/www/tmws/tmws/wsgi.py
ErrorLog ${APACHE_LOG_DIR}/TMWSerror.log
CustomLog ${APACHE_LOG_DIR}/TMWSaccess.log combined
</VirtualHost>
Jede Hilfe wäre sehr geschätzt. Wenn es noch etwas gibt, das ich posten kann, um mir zu helfen, lass es mich wissen.
Betreiben Sie Django aus einer virtuellen Umgebung? Das solltest du wahrscheinlich sein. Das Problem ist, dass Sie eine alte Version von 'six' verwenden. – solarissmoke
Vielen Dank für Ihre Antwort. Nein, ich benutze keine virtuelle Umgebung, irgendwann möchte ich. Was ist sechs? – user908759
'sechs' ist eine Python-Bibliothek. Es sollte funktionieren, wenn Sie es mit 'pip install --upgrade six 'aktualisieren, aber dies für die Systempython-Pakete zu tun ist nicht ideal, da Sie Konflikte mit anderen Systempaketen riskieren - daher besser, eine virtuelle Umgebung zu verwenden. – solarissmoke