Ho già un'applicazione Web Django funzionante e volevo renderla visibile tramite Internet. Vorrei anche prendere in considerazione l'utilizzo di Django da solo, dal momento che è solo un prototipo che voglio mostrare a qualcuno, e la sicurezza non è una priorità per me al momento. Ma poiché questo sembra impossibile da realizzare (o almeno non sono stato in grado di farlo), mi sto spostando su Apache.Distribuzione di Django con Apache
Il problema è che ci sono molti tutorial e ognuno fa cose diverse.
Fino ad ora ho: - apache installata (e lavora) - mod_wsgi installata (e il modulo viene caricato in Apache) - Dato che il mio Django web app è in/home/myuser/www/frontend/(o Almeno questo è dove sto memorizzando il file manage.py, il resto dell'applicazione è in/home/myuser/www/myapp/myapp /), ho provato a fare il punto apache lì. Così ho creato (casa/myuser/www/frontend/apache.conf/web.wsgi con il seguente contenuto:
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 ho anche la WSGI Django genera automaticamente durante la creazione di un nuovo progetto in/home/myuser .. /www/myapp/myapp/wsgi.py Forse dovrei utilizzare questo, ma nessuno dei tutorial che ho trovato fino ad ora fare parlare di questo file Qualsiasi modo, il suo contenuto è:
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)
Infine, creato il file/etc/apache2/sites-available/myapp, usando quello predefinito come modello, e assomiglia a questo:
<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>
Nonostante i miei sforzi descritti, quando navigo su localhost vedo solo il web Apache predefinito, che dice "Funziona!".
Qualsiasi aiuto per favore? Cosa mi manca?