Pomoc

Django

(Przekierowano z Python/Django)

Django to otwarty, napisany w Pythonie framework przeznaczony do tworzenia aplikacji WWW. Na serwerach MyDevil.net możliwe jest uruchamianie stron opartych o ten framework dzięki zastosowaniu technologii Phusion Passenger.

Wstępna konfiguracja

Do uruchomienia strony napisanej w Django należy najpierw zadbać o prawidłową konfigurację środowiska oraz domeny. Przed przystąpieniem do dalszych kroków należy upewnić się, że:

  • Dodano środowisko virtualenv dla pythona 2.7 (lub 3.X) i zainstalowano Django - pip install Django.
  • Domena jest prawidłowo dodana i skonfigurowana w naszym systemie DNS.
  • Została dodana strona WWW typu python oraz ścieżką do pliku binarnego python wewnątrz wcześniej skonfigurowanego środowiska.

Projekt Django

Głównym katalogiem projektu Django (tj. katalogiem, w którym znajduje się plik manage.py) musi być folder /usr/home/login/domains/domena/public_python. Nazwa projektu Django nie ma znaczenia, dopóki zachowana jest powyższa nazwa katalogu. Należy również usunąć plik index.html poleceniem rm /usr/home/login/domains/domena/public_python/public/index.html

Nowy projekt Django

Nowy projekt Django należy utworzyć w katalogu /usr/home/login/domains/domena/public_python - najprostszym sposobem utworzenia odpowiedniego projektu jest wydanie następujących poleceń:

cd /usr/home/login/domains/domena/
rm -rf public_python
django-admin.py startproject public_python

W ostatnim poleceniu można zmienić nazwę public_python na dowolną nazwę projektu - należy wtedy pamiętać, że projekt zostanie utworzony w katalogu o tej właśnie nazwie, którą trzeba zmienić na public_python.

Istniejący projekt Django

Istniejący projekt Django należy umieścić jako katalog /usr/home/login/domains/domena/public_python. W przypadku gdy projekt nie nazywa się public_python należy zmienić jego nazwę.

Konfiguracja Phusion Passenger

Ostatnim krokiem jest konfiguracja modułu Phusion Passenger, który jest odpowiedzialny za uruchomienie aplikacji Django. Należy w katalogu projektu Django (/usr/home/login/domains/domena/public_python) utworzyć plik passenger_wsgi.py i umieścić w nim następującą zawartość (zależnie od wersji Django), modyfikując linijkę wskazującą nazwę aplikacji (oznaczoną komentarzem):

Django 1.7 i nowsze

import sys, os
 
sys.path.append(os.getcwd())
os.environ['DJANGO_SETTINGS_MODULE'] = "nazwa_aplikacji.settings"  # zmienić 'nazwa_aplikacji' na
                                                                   # nazwę projektu Django 
 
from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()

Django do wersji 1.6 włącznie

import sys, os
 
sys.path.append(os.getcwd())
os.environ['DJANGO_SETTINGS_MODULE'] = "nazwa_aplikacji.settings"  # zmienić 'nazwa_aplikacji' na
                                                                   # nazwę projektu Django 
 
import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()

Nazwa aplikacji

Nazwę aplikacji (projektu Django) można wyciągnąć z pliku manage.py poleceniem grep DJANGO_SETTINGS_MODULE manage.py.

Testowanie konfiguracji

Poprawność konfiguracji modułu Phusion Passenger można sprawdzić wydając polecenie python passenger_wsgi.py - jeśli aplikacja nie zwróci żadnych błędów to znaczy, że aplikacja powinna zostać prawidłowo uruchomiona przez passengera.

  Uwaga!

Polecenie python passenger_wsgi.py sprawdzi jedynie poprawność konfiguracji modułu Phusion Passenger - w przypadku błędów samej aplikacji Django, zostaną one obsłużone przez moduł, bądź samo Django.

Błąd uniemożliwiający start aplikacji sprawi, że na stronie zostanie wyświetlony generyczny błąd Phusion Passenger. Błędy w trakcie działania aplikacji zostaną złapane przez Django i ich obsługa jest zależna od konfiguracji samej aplikacji.

Restart aplikacji

Restart aplikacji Django można wykonać za pomocą naszego panelu zarządzania usługą w zakładce WWW, lub przy użyciu polecenia systemu zarządzania kontem Devil: devil www restart domena. Przy restarcie nie są usuwane pliki .pyc.

Pliki statyczne

Wszystkie pliki umieszczone w /usr/home/login/domains/domena/public_python/public są serwowane jak pliki statyczne. W tym katalogu najlepiej umieścić wszystkie obrazki, skrypty, style, itp. Żądania do plików znajdujących się w tym folderze nie będą przetwarzane przez skrypty Django i nie będą obciążać interpretatora. Na przykład plik /usr/home/login/domains/domena/public_python/public/robots.txt będzie dostępny pod adresem http://domena/robots.txt.

Aby umieścić wszystkie pliki statyczne django w /usr/home/login/domains/domena/public_python/public, należy w pliku settings.py dodać:

STATIC_URL = '/static/'
MEDIA_URL = '/media/'
 
ENV_PATH = os.path.abspath(os.path.dirname(__file__))
STATIC_ROOT = os.path.join(ENV_PATH, '../public/static/') 
MEDIA_ROOT = os.path.join(ENV_PATH, '../public/media/') 
# albo
# STATIC_ROOT = '/home/login/domains/domain/public_python/public/static/'
# MEDIA_ROOT = '/home/login/domains/domain/public_python/public/media/'

Po czym trzeba w konsoli wykonać polecenie python manage.py collectstatic.

Odnośniki zewnętrzne