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?