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?