Развертывание Django с помощью Apache

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

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

до сих пор я иметь: - Установлен apache (и работает) - Установить mod_wsgi (и модуль загружается в Apache) - Поскольку мое веб-приложение Django находится в / home / myuser / www / myapp / (или, по крайней мере, там, где я храню manage.py файл, остальная часть приложения находится в /home/myuser/www/myapp/ myapp/), я попытался сделать точку apache там. Поэтому я создал (home/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 автоматически генерируется при создании нового проект в /home/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 webmaster@localhost

    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>

несмотря на мои усилия, описанные, когда я перехожу к localhost, я просто вижу веб-сайт apache по умолчанию, говоря: "это работает!'.

любая помощь, пожалуйста? Что я упускаю?

2 ответов


вы включили свой сайт "myapp" в Apache ?

a2ensite myapp

потому что, по-видимому, вы только что создали файл конфигурации в " sites-available/", этого недостаточно ;)

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

a2dissite default

надеюсь, что это помогает.


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