Django¶
Django to otwarty, napisany w Pythonie framework przeznaczony do tworzenia aplikacji WWW. Na serwerach SMALL.PL 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 3.X (lub 2.7 przy starszych projektach) i zainstalowano Django poleceniem:
pip install Django
. - Domena jest prawidłowo dodana i skonfigurowana w naszym systemie DNS.
- Została dodana strona WWW typu python wraz ze ś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ć katalog /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 przygotowanie konfiguracji dla serwera 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()
Nazwa aplikacji¶
Nazwę aplikacji (projektu Django) można odczytać z pliku manage.py poleceniem: grep DJANGO_SETTINGS_MODULE manage.py
.
Testowanie konfiguracji¶
Poprawność konfiguracji dla serwera 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 serwer.
Uwaga
Polecenie python passenger_wsgi.py
sprawdzi jedynie poprawność konfiguracji dla serwera Phusion Passenger
- w przypadku błędów samej aplikacji Django, zostaną one obsłużone przez serwer, bądź samo Django.
Błąd uniemożliwiający start aplikacji sprawi, że na stronie zostanie wyświetlony generyczny błąd serwera 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
.
Limit procesów dla Phusion Passenger¶
Możliwość ustawienia ilości procesów dla stron typu python
. Składnia polecenia:
devil www options DOMENA processes <ILOŚĆ>
Gdzie:
- DOMENA oznacza domenę WWW typu python
- ILOŚĆ - ilość procesów w przedziale od 1 do 80% procesów
systemowych konta hostingowego
Opcja dostępna jest również w panelu DevilWEB:
Strony WWW
➡ Zarządzaj
(przy wybranej domenie) ➡ Szczegóły
➡ Limit procesów
➡ należy wpisać nową wartość oraz zapisać zmiany przyciskiem Zapisz zmiany
.
Pliki statyczne¶
Wszystkie pliki umieszczone w katalogu /usr/home/LOGIN/domains/DOMENA/public_python/public
są obsługiwane jak pliki statyczne. W tym katalogu najlepiej umieścić wszystkie obrazki, skrypty, style, itp. Żądania do plików znajdujących się w tym katalogu nie będą przetwarzane przez procesy Python 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/'
# Zmienna BASE_DIR powinna być utworzona przez Django w pliku settings.py
# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
STATIC_ROOT = os.path.join(BASE_DIR, 'public', 'static')
MEDIA_ROOT = os.path.join(BASE_DIR, 'public', 'media')
# albo
# STATIC_ROOT = '/home/LOGIN/domains/DOMENA/public_python/public/static/'
# MEDIA_ROOT = '/home/LOGIN/domains/DOMENA/public_python/public/media/'
Następnie trzeba w konsoli wykonać polecenie python manage.py collectstatic
.
Logi¶
Uwaga
Nie należy usuwać katalogu logs
, może to spowodować problemy z działaniem stron typu Node.js
, Ruby
, Python
.
Logi błędów zapisują się do pliku error.log
w katalogu /usr/home/LOGIN/domains/DOMENA/logs/
.
Czas życia aplikacji¶
W przypadku braku żądań do strony przez 24 godziny
aplikacja jest wyłączana automatycznie i ponownie automatycznie uruchamiana przy pierwszym następnym wejściu. W przypadku zmiany w konfiguracji strony również aplikacja jest automatycznie wyłączana i uruchamiana przy następnym pierwszym wejściu na stronę.