2016-08-03 27 views
0

https://www.sitepoint.com/deploying-a-django-app-with-mod_wsgi-on-ubuntu-14-04/django deploy - ubuntu 14.04 und apache2

und

https://www.youtube.com/watch?v=hBMVVruB9Vs

Dies war das erste Mal, stelle ich eine Web site bekannt, das sind die Tutorials, die ich gefolgt.

Jetzt kann ich auf den Server (durch Eingabe von 10.231.XX.XX) von einem anderen Rechner zugreifen und die Apache2 Ubuntu Default Page sehen.

Dann habe ich versucht, auf mein Django-Projekt zuzugreifen. Ich betreibe:

Python manage.py runserver 8000 Validieren Modelle ...

0 Fehler 3. August gefunden, 2016 - 09.44.20 Django Version 1.6.1, mit Einstellungen 'Einstellungen' Starten des Entwicklungsservers unter http://127.0.0.1:8000/ Beenden Sie den Server mit CONTROL-C.

Dann tippe ich 10.231.XX.XX: 8000, um zu versuchen, auf die Django-Seite zuzugreifen. Aber ich habe versagt. Er sagte:

Diese Seite nicht

erreicht werden kann

10.231.XX.XX weigerte sich zu verbinden. Suche Google nach 231 8000 ERR_CONNECTION_REFUSED

Ich habe alles versucht, was ich kann, aber immer noch nicht verstehen, warum. (wie auf der Website gefolgt https://www.sitepoint.com/deploying-a-django-app-with-mod_wsgi-on-ubuntu-14-04/) Ich habe Apache Ordner in mysite Ordner und in override.py:

from mysite.settings import * 

    DEBUG = True 
    ALLOWED_HOSTS = ['10.231.XX.XX'] 

in wsgi.py:

import os, sys 
# Calculate the path based on the location of the WSGI script. 
apache_configuration= os.path.dirname(__file__) 
project = os.path.dirname(apache_configuration) 
workspace = os.path.dirname(project) 
sys.path.append(workspace) 
sys.path.append(project) 

# Add the path to 3rd party django application and to django itself. 
sys.path.append('/home/zhaojf1') 
os.environ['DJANGO_SETTINGS_MODULE'] = '10.231.52.XX.apache.override' 
import django.core.handlers.wsgi 
application = django.core.handlers.wsgi.WSGIHandler() 

und __init__py ist leer.

in /etc/apache2/sites-enabled/000-default.conf:

<VirtualHost *:80> 
# The ServerName directive sets the request scheme, hostname and port that 
# the server uses to identify itself. This is used when creating 
# redirection URLs. In the context of virtual hosts, the ServerName 
# specifies what hostname must appear in the request's Host: header to 
# match this virtual host. For the default virtual host (this file) this 
# value is not decisive as it is used as a last resort host regardless. 
# However, you must set it for any further virtual host explicitly. 
#ServerName www.example.com 

ServerAdmin [email protected] 
DocumentRoot /var/www/html 

# Available loglevels: trace8, ..., trace1, debug, info, notice, warn, 
# error, crit, alert, emerg. 
# It is also possible to configure the loglevel for particular 
# modules, e.g. 
#LogLevel info ssl:warn 

ErrorLog ${APACHE_LOG_DIR}/error.log 
CustomLog ${APACHE_LOG_DIR}/access.log combined 

# For most configuration files from conf-available/, which are 
# enabled or disabled at a global level, it is possible to 
# include a line for only one particular virtual host. For example the 
# following line enables the CGI configuration for this host only 
# after it has been globally disabled with "a2disconf". 
WSGIScriptAlias /msa.html /home/zhaojf1/Web-Interaction/apache/wsgi.py 

<Directory "/home/zhaojf1/Web-Interaction-APP"> 
<Files wsgi.py> 
    Require all granted 
</Files> 
</Directory> 

Ich habe auch Apache neu starten, nachdem ich alles tun.

Vielen Dank für Hilfe

+0

Können Sie zu Nginx wechseln. Nginx wird empfohlen, zusammen mit Django und uwsgi zu stapeln. – Aki003

+0

Alle Apache/mod_wsgi, Gunicorn und uWSGI sind gute Optionen. FWIW, die Django-Dokumentation empfiehlt weiterhin mod_wsgi. https://docs.djangoproject.com/de/1.10/howto/deployment/ Ändern der WSGI-Server in diesem Fall wird nicht unbedingt helfen, aufgrund von grundlegenden Fehlern, und Sie nur am Ende mit einer Reihe von neuen Problemen, die bei der Änderung gelöst werden . –

Antwort

0

Die Verbindung verweigert Fehler gehen zu kommen ist wahrscheinlich Apache für die VirtualHost falsch konfiguriert ist, oder Sie falsche Schnittstelle zugreifen. Sie haben auch andere grundlegende Fehler in Ihrer wsgi.py Datei.

Beginnend mit der wsgi.py Datei, die DJANGO_SETTINGS_MODULE Wert ist falsch:

os.environ['DJANGO_SETTINGS_MODULE'] = '10.231.52.XX.apache.override' 

Der Wert soll ein Python-Modul Pfad sein. Die IP-Adresse darin sieht sehr falsch aus und ist wahrscheinlich nicht das, was Sie brauchen.

Als nächstes sind Änderungen an sys.path. Der Speicherort Ihres Projekts und die Aktivierung einer beliebigen virtuellen Python-Umgebung wird besser durch die Optionen für mod_wsgi in der Apache-Konfigurationsdatei erreicht.

Dass Sie ein Home-Verzeichnis in den Pfad hinzufügen, ist auch ein Hinweis auf mögliche andere Probleme, die auftreten können. Insbesondere kann der Benutzer, den Apache so oft ausführt, die Home-Verzeichnisse nicht lesen, da die Home-Verzeichnisse für andere nicht lesbar/zugänglich sind. Möglicherweise müssen Sie das Projekt aus Ihrem Home-Verzeichnis verschieben.

In der Apache-Konfiguration fehlt VirtualHost eine ServerName Direktive. Wenn dies eine zusätzliche VirtualHost war, die Sie hinzugefügt haben, und nicht die Standardeinstellung (die erste, die beim Analysieren in der Apache-Konfiguration auftaucht), wird sie ignoriert, wobei alle Anfragen an die erste VirtualHost gehen. Sie zeigen dies wie in der Standard-Site-Datei, so dass Sie in Ordnung sind.

Trotzdem ist VirtualHost eingerichtet, um auf Port 80 aufgeführt zu werden. Sie versuchen, eine Verbindung zu Port 8000 herzustellen, also würde nichts zuhören. Die nächste Ausgabe ist die WSGIScriptAlias Zeile.

WSGIScriptAlias /msa.html /home/zhaojf1/Web-Interaction/apache/wsgi.py 

Es ist seltsam msg.html als Mountpunkt zu haben, als dass sie als erscheinen läßt, wenn Sie eine einzelne HTML-Seite zugreifen, aber Sie haben es zu einem ganzen Django-Projekt kartiert. Wenn Sie auf das Stammverzeichnis des Hosts zugreifen würden, würde es auch nicht zur Django-Anwendung durchgehen, da Sie es unter einer Sub-URL angehängt haben. So vielleicht verwenden müssen:

WSGIScriptAlias//home/zhaojf1/Web-Interaction/apache/wsgi.py 

Nächstes Problem ist, dass das Verzeichnis in Directory Direktive angegeben nicht überein, wo Sie sagte die wsgi.py Datei im WSGIScriptAlias existiert. Sie sollten übereinstimmen. Vielleicht meinte Sie:

<Directory /home/zhaojf1/Web-Interaction/apache> 

Selbst dann das ist nicht richtig, wie sieht, wo das apache Verzeichnis herkommt. Das letzte Verzeichnis im Pfad sollte normalerweise der Name des Django-Projekts sein.

Eine letzte Sache, müssen Sie möglicherweise auch ALLOWED_HOSTS ändern. Wenn Sie feststellen, dass Sie mit fehlerhaften Anforderungsfehlern konfrontiert werden, stimmt es wahrscheinlich nicht richtig überein. Ändern Sie es in ['*'], um zu sehen, ob das hilft.

So viele kleine Dinge falsch.

Vorschläge sind: