2013-08-02 2 views
8

У меня уже работает веб-приложение Django, и я хочу сделать его видимым через Интернет. Я бы даже подумал об использовании Django в одиночку, так как это всего лишь прототип, который я хочу показать кому-то, и безопасность для меня сейчас не является приоритетом. Но так как это выглядит невозможным (или, по крайней мере, я не смог это сделать), я перехожу к Apache.Развертывание Django с Apache

Проблема в том, что есть много учебников, и каждый из них делает разные вещи.

До сих пор у меня нет: - Installed апача (и работы) - Установленные mod_wsgi (и модуль загружается в Apache) - Так как мой веб-приложение Django в/главная/MyUser/WWW/MyApp/(или в основном я храню файл manage.py, остальная часть приложения находится в/home/myuser/www/myapp/myapp /), я попытался сделать там apache. Так что я создал (дом/MyUser/WWW/MyApp/apache.conf/web.wsgi со следующим содержанием:

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 Я также имею WSGI Django автоматически генерирует при создании нового проекта в/главная/MyUser .. /www/myapp/myapp/wsgi.py Может быть, я должен использовать это, но ни один из учебников я не нашел до сих пор упоминают этот файл каким-либо образом, его содержание:

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) 

Наконец, я создал файл/etc/apache2/sites-available/myapp, используя шаблон по умолчанию в качестве шаблона и выглядит так:

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

Несмотря на мои усилия, описанные, когда я перехожу к локальному хосту, я просто вижу веб-сайт apache по умолчанию, говоря: «Это работает!».

Любая помощь пожалуйста? Что мне не хватает?

ответ

8

Вы включили свой сайт «myapp» в Apache?

a2ensite myapp 

Потому что вы, видимо, только что созданный файл конфигурации в «сайты-доступны /», что не хватает;)

EDIT: вы, вероятно, хотите отключить сайт по умолчанию, перед вводом указанной выше команды :

a2dissite default 

Надеюсь, что это поможет.

0

Похоже, что у вас включен сайт по умолчанию. Удалите/etc/apache2/sites-available/000-default (или что-то в этом роде, не помните ATM, но что-то со значением по умолчанию) и перезапустите apache.

Смежные вопросы