https://wiki.mydevil.net/api.php?action=feedcontributions&user=Samu&feedformat=atomMyDevil.net - Wiki - Wkład użytkownika [pl]2024-03-28T21:09:56ZWkład użytkownikaMediaWiki 1.27.3https://wiki.mydevil.net/index.php?title=Django&diff=2003Django2020-01-10T08:50:48Z<p>Samu: /* Pliki statyczne */</p>
<hr />
<div>''Django'' to otwarty, napisany w [[Python|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''.<br />
<br />
=== Wstępna konfiguracja ===<br />
<br />
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:<br />
<br />
* Dodano środowisko [[virtualenv]] dla pythona 3.X (lub 2.X przy starszych projektach) i zainstalowano Django - <code>pip install Django</code>.<br />
* Domena jest prawidłowo dodana i skonfigurowana w naszym systemie [[DNS]].<br />
* Została dodana [[WWW|strona WWW]] typu [[python]] oraz ścieżką do pliku binarnego <code class="directory>python</code> wewnątrz wcześniej skonfigurowanego środowiska.<br />
<br />
=== Projekt Django ===<br />
<br />
Głównym katalogiem projektu ''Django'' (tj. katalogiem, w którym znajduje się plik <code class="directory">manage.py</code>) musi być folder <code class="directory">/usr/home/''login''/domains/''domena''/public_python</code>. Nazwa projektu ''Django'' nie ma znaczenia, dopóki zachowana jest powyższa nazwa katalogu. Należy również usunąć plik index.html poleceniem <code>rm /usr/home/''login''/domains/''domena''/public_python/public/index.html</code><br />
<br />
==== Nowy projekt Django ====<br />
<br />
Nowy projekt Django należy utworzyć w katalogu <code class="directory">/usr/home/''login''/domains/''domena''/public_python</code> - najprostszym sposobem utworzenia odpowiedniego projektu jest wydanie następujących poleceń:<br />
<br />
cd /usr/home/''login''/domains/''domena''/<br />
rm -rf public_python<br />
django-admin.py startproject public_python<br />
<br />
W ostatnim poleceniu można zmienić nazwę <code class="directory">public_python</code> 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 <code class="directory">public_python</code>.<br />
<br />
==== Istniejący projekt Django ====<br />
<br />
Istniejący projekt ''Django'' należy umieścić jako katalog <code class="directory">/usr/home/''login''/domains/''domena''/public_python</code>. W przypadku gdy projekt nie nazywa się <code class="directory">public_python</code> należy zmienić jego nazwę.<br />
<br />
=== Konfiguracja ''Phusion Passenger'' ===<br />
<br />
Ostatnim krokiem jest konfiguracja modułu ''Phusion Passenger'', który jest odpowiedzialny za uruchomienie aplikacji ''Django''. Należy w katalogu projektu Django (<code class="directory">/usr/home/''login''/domains/''domena''/public_python</code>) utworzyć plik <code class="directory">passenger_wsgi.py</code> i umieścić w nim następującą zawartość (zależnie od wersji Django), modyfikując linijkę wskazującą nazwę aplikacji (oznaczoną komentarzem):<br />
<br />
==== Django 1.7 i nowsze ====<br />
<syntaxhighlight lang="python"><br />
import sys, os<br />
<br />
sys.path.append(os.getcwd())<br />
os.environ['DJANGO_SETTINGS_MODULE'] = "nazwa_aplikacji.settings" # zmienić 'nazwa_aplikacji' na<br />
# nazwę projektu Django <br />
<br />
from django.core.wsgi import get_wsgi_application<br />
application = get_wsgi_application()<br />
</syntaxhighlight><br />
<br />
==== Django do wersji 1.6 włącznie ====<br />
<syntaxhighlight lang="python"><br />
import sys, os<br />
<br />
sys.path.append(os.getcwd())<br />
os.environ['DJANGO_SETTINGS_MODULE'] = "nazwa_aplikacji.settings" # zmienić 'nazwa_aplikacji' na<br />
# nazwę projektu Django <br />
<br />
import django.core.handlers.wsgi<br />
application = django.core.handlers.wsgi.WSGIHandler()<br />
</syntaxhighlight><br />
<br />
==== Nazwa aplikacji ====<br />
<br />
Nazwę aplikacji (projektu ''Django'') można wyciągnąć z pliku <code class="directory">manage.py</code> poleceniem <code>grep DJANGO_SETTINGS_MODULE manage.py</code>.<br />
<br />
==== Testowanie konfiguracji ====<br />
<br />
Poprawność konfiguracji modułu ''Phusion Passenger'' można sprawdzić wydając polecenie <code>python passenger_wsgi.py</code> - jeśli aplikacja nie zwróci żadnych błędów to znaczy, że aplikacja powinna zostać prawidłowo uruchomiona przez passengera.<br />
<br />
{{Warning|Polecenie <code>python passenger_wsgi.py</code> 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.<br />
<br />
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.}}<br />
<br />
=== Restart aplikacji ===<br />
<br />
Restart aplikacji ''Django'' można wykonać za pomocą naszego [[DevilWEB|panelu zarządzania usługą]] w zakładce [[WWW]], lub przy użyciu polecenia [[Devil|systemu zarządzania kontem Devil]]: <code>devil www restart ''domena''</code>. Przy restarcie nie są usuwane pliki <code>.pyc</code>.<br />
<br />
=== Pliki statyczne ===<br />
<br />
Wszystkie pliki umieszczone w <code class="directory">/usr/home/''login''/domains/''domena''/public_python/public</code> 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 <code class="directory">/usr/home/''login''/domains/''domena''/public_python/public/robots.txt</code> będzie dostępny pod adresem http://''domena''/robots.txt.<br />
<br />
Aby umieścić wszystkie pliki statyczne django w <code class="directory">/usr/home/''login''/domains/''domena''/public_python/public</code>, należy w pliku <code class="directory">settings.py</code> dodać:<br />
<syntaxhighlight lang="python"><br />
STATIC_URL = '/static/'<br />
MEDIA_URL = '/media/'<br />
<br />
# Zmienna BASE_DIR powinna być utworzona przez Django w pliku settings.py<br />
# Build paths inside the project like this: os.path.join(BASE_DIR, ...)<br />
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))<br />
<br />
STATIC_ROOT = os.path.join(BASE_DIR, 'public', 'static') <br />
MEDIA_ROOT = os.path.join(BASE_DIR, 'public', 'media') <br />
# albo<br />
# STATIC_ROOT = '/home/login/domains/domain/public_python/public/static/'<br />
# MEDIA_ROOT = '/home/login/domains/domain/public_python/public/media/'<br />
</syntaxhighlight><br />
<br />
Po czym trzeba w konsoli wykonać polecenie <code>python manage.py collectstatic</code>.<br />
<br />
=== Czas życia aplikacji ===<br />
<br />
W przypadku braku ruchu na stronie przez 24h aplikacja jest wyłączana automatycznie i ponownie automatycznie uruchamiana przy pierwszym następnym wejściu. W przypadku zmiany w konfiguracji po naszej stronie również aplikacja jest automatycznie wyłączana i uruchamiana przy następnym pierwszym wejściu na stronę.<br />
<br />
=== Odnośniki zewnętrzne ===<br />
<br />
* [https://www.djangoproject.com/ Django project]<br />
* [https://www.phusionpassenger.com/ Phusion Passenger]<br />
[[Category:Python]]</div>Samu