2013-08-02 11 views
8

Mam już działającą aplikację internetową Django i chciałem, aby była widoczna przez Internet. Chciałbym nawet rozważyć użycie samego Django, ponieważ jest to tylko prototyp, który chcę komuś pokazać, a bezpieczeństwo nie jest dla mnie teraz priorytetem. Ale ponieważ wydaje się to niemożliwe do zrealizowania (a przynajmniej nie byłem w stanie tego zrobić), przenoszę się do Apache.Wdrażanie Django z Apache

Problem polega na tym, że istnieje wiele tutoriali, a każdy z nich robi różne rzeczy.

Do tej pory mam: - Apache zainstalowany (i działa) - mod_wsgi zainstalowana (a moduł jest załadowany do Apache) - Ponieważ mój web app Django jest w/home/myuser/www/myapp/(lub w przynajmniej tam przechowuję plik manage.py, reszta aplikacji znajduje się w/home/myuser/www/myapp/myapp /), starałem się umieścić tam apache. Więc stworzyłem (home/myuser/www/myapp/apache.conf/web.wsgi o następującej treści:

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 Mam też WSGI Django automatycznie generuje podczas tworzenia nowego projektu w/home/myuser .. /www/myapp/myapp/wsgi.py Może powinienem użyć tego jednego, ale żaden z samouczków znalazłem do tej pory wspominają ten plik jakikolwiek sposób, jego zawartość jest:

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) 

Wreszcie utworzył plik/etc/apache2/sites-available/myapp, używając domyślnego szablonu jako szablonu i wygląda następująco:

<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> 

Pomimo moich wysiłków opisanych, kiedy przechodzę do localhosta, widzę tylko domyślną sieć Apache, mówiąc "Działa!".

Proszę o pomoc? czego mi brakuje?

Odpowiedz

8

Czy włączono witrynę "myapp" w Apache?

a2ensite myapp 

bo podobno właśnie utworzony plik konfiguracyjny w „strony-dostępna /”, to nie wystarczy;)

EDIT: prawdopodobnie chcesz wyłączyć domyślną witrynę, przed wpisaniem powyższego polecenia :

a2dissite default 

Mam nadzieję, że to pomoże.

0

Wygląda na to, że masz włączoną domyślną witrynę. Usuń/etc/apache2/sites-available/000-default (lub coś w tym stylu, nie pamiętam bankomatu, ale coś domyślnie) i zrestartuj apache.

Powiązane problemy