2013-08-02 23 views
8

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?

risposta

8

Hai abilitato il tuo sito "myapp" in Apache?

a2ensite myapp 

Perché a quanto pare appena creato il file di configurazione in "siti-disponibile /", questo non basta;)

EDIT: probabilmente si desidera disattivare il sito predefinito, prima di digitare il comando precedente :

a2dissite default 

Spero che questo aiuti.

0

Sembra che il sito predefinito sia abilitato. Rimuovi/etc/apache2/sites-available/000-default (o qualcosa del genere, non ricordo ATM, ma qualcosa con impostazione predefinita) e riavvia apache.

Problemi correlati