2013-08-02 6 views
8

Ich habe bereits eine Django-Webanwendung, und ich wollte es über das Internet sichtbar machen. Ich würde sogar darüber nachdenken, Django alleine zu benutzen, da es nur ein Prototyp ist, den ich jemandem zeigen möchte, und Sicherheit hat für mich momentan keine Priorität. Aber da dies unmöglich zu erreichen ist (oder zumindest ich es nicht geschafft habe), ziehe ich zu Apache um.Deployment von Django mit Apache

Das Problem ist, dass es viele Tutorials gibt, und jeder verschiedene Dinge tun.

Bis jetzt habe ich: - installierten Apache (und Werke) - Eingesetzt mod_wsgi (und Modul in Apache geladen) - Da meine Django Web-App in/home/myuser/www/myapp/(oder zumin Am wenigsten das ist, wo ich die Datei manage.py speichern, der Rest der Anwendung ist in/home/myuser/www/myapp/myapp /), ich habe versucht, Apache Punkt dort zu machen. Also habe ich (home/myuser/www/myapp/apache.conf/web.wsgi mit folgendem Inhalt:

import os, sys 
sys.path.append('/home/myuser/www/myapp/') 
os.environ['DJANGO_SETTINGS_MODULE'] = 'myapp.settings' 

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

BTW Ich habe auch die wsgi Django automatisch erzeugt, wenn ein neues Projekt in/home erstellen/myuser .. /www/myapp/myapp/wsgi.py Vielleicht sollte ich diese benutzen, aber keine der Tutorials, die ich bis jetzt gefunden haben, tun diese Datei erwähnen Jede Art und Weise, sein Inhalt ist:

import os 
# We defer to a DJANGO_SETTINGS_MODULE already in the environment. This breaks 
# if running multiple sites in the same mod_wsgi process. To fix this, use 
# mod_wsgi daemon mode with each site in its own daemon process, or use 
# os.environ["DJANGO_SETTINGS_MODULE"] = "myapp.settings" 
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "myapp.settings") 

# This application object is used by any WSGI server configured to use this 
# file. This includes Django's development server, if the WSGI_APPLICATION 
# setting points here. 
from django.core.wsgi import get_wsgi_application 
application = get_wsgi_application() 

# Apply WSGI middleware here. 
# from myapp.wsgi import MyAppApplication 
# application = MyAppApplication(application) 

Schließlich I erstellt die Datei/etc/apache2/sites-available/myapp, verwendet die Standardvorlage als Vorlage und sieht folgendermaßen aus:

<VirtualHost *:80> 
    ServerAdmin [email protected] 

    DocumentRoot /home/myuser/www/myapp/ 

    <Directory /> 
     Options Indexes FollowSymLinks MultiViews 
     AllowOverride All 
     Order allow,deny 
     allow from all 
     AddHandler mod_python .py 
     PythonHandler mod_python.publisher | .py 
     PythonDebug On 
    </Directory> 

    <Directory /home/myuser/www/myapp/> 
     Options Indexes FollowSymLinks MultiViews 
     AllowOverride None 
     Order allow,deny 
     allow from all 
    </Directory> 

    ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/ 
    <Directory "/usr/lib/cgi-bin"> 
     AllowOverride None 
     Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch 
     Order allow,deny 
     Allow from all 
    </Directory> 

    ErrorLog /home/myuser/www/myapp/error.log 

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

    CustomLog /home/myuser/www/myapp/access.log combined 
</VirtualHost> 

Trotz meiner Bemühungen, wenn ich zu localhost navigiere, sehe ich nur das Standard-Apache-Web und sage 'Es funktioniert!'.

Irgendwelche Hilfe bitte? Was vermisse ich?

Antwort

8

Haben Sie Ihre "myapp" -Seite in Apache aktiviert?

a2ensite myapp 

Weil offenbar einfach die Konfigurationsdatei erstellt in "sites-available /", das ist nicht genug;)

EDIT: Sie wahrscheinlich die Standard-Site deaktivieren möchten, bevor Sie den obigen Befehl eingeben :

a2dissite default 

Hoffe, das hilft.

0

Es klingt, als ob Sie die Standard-Site aktiviert haben. Entfernen Sie/etc/apache2/sites-available/000-default (oder etwas Ähnliches, ich kann mich nicht an ATM erinnern, aber etwas mit der Standardeinstellung) und Apache neu starten.