Konfiguracja django w środowisku Ubuntu
Spis treści
Tematem wpisu jest szybki poradnik jak skonfigurować django 1.5 z MySQL na Ubuntu 14.04. Zapraszam!
0) Wstęp
Czym jest django
Django to stworzony w Pythonie, prosty i nowoczesny framework typu open source. Umożliwia on budowanie funkcjonalnych aplikacji webowych bez potrzeby pisania setek wierszy kodu. Został zaprojektowany w ten sposób, aby doskonale działać jako zwarta całość, ale jego składniki są ze sobą na tyle luźno powiązane, że z łatwością można dokonywać zmian, dodawać i aktualizować funkcjonalności.
Oto niektóre zalety django:
Model MVC – narzędzie umożliwia rozdzielenie od siebie modeli, widoków i logiki biznesowej aplikacji.
Mapowanie obiektowo-relacyjne (ORM) – pozwala na pisanie modeli w całości w Pythonie. Posiada bogaty, dynamiczny interfejs bazy. Można również w razie potrzeby używać czystego SQL.
Automatyczny interfejs administracyjny – framework udostępnia gotowy panel administracji danymi, w dużym stopniu modyfikowalny i rozszerzalny.
Ładne adresy URL – umożliwia projektowanie przyjaznych (zarówno użytkownikom, jak i pozycjonowaniu strony) adresów URL, nie będąc ograniczonym przez framework.
Wbudowany system szablonów – udostępnia rozszerzalny, przyjazny projektantom system szablonów, dzięki któremu można oddzielić layout i logikę biznesową pythona raz na zawsze.
Wsparcie społeczności – django posiada społeczność zainteresowaną rozwojem frameworka i przygotowującą różnego rodzaju pakiety, gotowe do pobrania i szybkiego dołączenia do pliku (REST, systemy CMS, migracje bazy danych, mailing, etc.)
Do wglądu na https://www.djangopackages.com/
Systemy cache’owania – jeśli potrzebna jest większa wydajności, można użyć memcache lub innych podsystemów cache’ujących.
Internacjonalizacja – django posiada wbudowane narzędzia do tworzenia aplikacji wielojęzycznych, ze specjalnymi lokalnymi funkcjonalnościami.
Czego potrzebujemy?
Virtualbox
Ubuntu 14.04
Edytor tekstu (nano)
Python 2.7.6
easy_install
pip
Baza danych MySQL
Django 1.5.4
Warm up!
Instalację proponuję wykonywać z poziomu superusera, za pomocą polecenia sudo
paul@paul:~$ sudo su [sudo] password for paul: root@paul:/home/paul#
Na początku odświeżamy listy dostępnych pakietów wykonując polecenie
root@paul:/home/paul# sudo apt-get update
1) Python
Sprawdzamy, czy posiadamy pythona w wersji 2.7
root@paul:/home/paul# python -V Python 2.7.6
Jeśli posiadasz już wersję 2.7.x, przejdź do następnego kroku. Jeśli, zainstaluj pythona w wersji 2.7.x poniższym poleceniem
root@paul:/home/paul# sudo apt-get install python
2) easy_install i pip
Zarówno easy_install i pip są managerami pakietów dla języka python. Pozwalają one znacznie łatwiej instalować pakiety i ich aktualizacje dla pythona (uwzględnia zależności pakietów).
Aby pobrać easy_install, wykonaj polecenie:
root@paul:/home/paul# wget https://bootstrap.pypa.io/ez_setup.py -O - | python (…) Installed /usr/local/lib/python2.7/dist-packages/setuptools-5.1-py2.7.egg Processing dependencies for setuptools==5.1 Finished processing dependencies for setuptools==5.1
Pip jest biblioteką korzystającą i opierającą się na pakiecie easy_install. Po zainstalowaniu easy_install, uruchom następujące polecenie, aby zainstalować pip
root@paul:/home/paul# easy_install pip (…) Installed /usr/local/lib/python2.7/dist-packages/pip-1.5.6-py2.7.egg Processing dependencies for pip Finished processing dependencies for pip
3) MySQL
Domyślnie django dostarczane jest z biblioteką SQLite. Jednakże w tym projekcie chcemy zainstalować i wykorzystywać MySQL. Aby to zrobić potrzebujemy serwera, klienta i biblioteki połączeniowej dla pythona do obsługi bazy danych MySQL.
Pobieramy serwer i klienta bazy danych. W trakcie instalacji ustawiamy hasło dla roota.
root@paul:/home/paul# sudo apt-get install mysql-server mysql-client
Przed zainstalowanie biblioteki połączeniowej do bazy danych dla pythona, musimy doinstalować wymaganą bibliotekę libmysqlclient-dev. Umożliwia ona komunikację aplikacji napisanych w pythonie z bazą danych MySQL.
root@paul:/home/paul# sudo apt-get install libmysqlclient-dev
Następnie instalujemy bibliotekę z nagłówkami plików i statycznymi bibliotekami dla python:
root@paul:/home/paul# sudo apt-get install python-dev
Teraz można zainstalować interfejs pythonowy dla bazy MySQL
root@paul:/home/paul# pip install MySQL-python Successfully installed MySQL-python
Testujemy, czy baza danych zainstalowana została prawidłowo. Logujemy się użytkownikiem root do bazy, tworzymy nową bazę o nazwie django_db i wyświetlamy bieżącą listę baz danych.
root@paul:/home/paul# mysql -u root -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 42 Server version: 5.5.37-0ubuntu0.14.04.1 (Ubuntu) mysql> create database django_db; Query OK, 1 row affected (0.00 sec) mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | django_db | | mysql | | performance_schema | +--------------------+ 4 rows in set (0.00 sec)
4) Instalacja django
W celu zainstalowania django wykorzystujemy manager pakietów pip.
root@paul:/home/paul# pip install django==1.5.4 (…) Successfully installed django
5) Konfiguracja django
Tworzymy nowy projekt o nazwie testowy
root@paul:/home/paul# django-admin.py startproject testowy
Edytujemy plik settings.py w katalogu testowy i dodaje informacje o korzystanej bazie danych.
root@paul:/home/paul# cd testowy/ root@paul:/home/paul/testowy# cd testowy/ root@paul:/home/paul/testowy/testowy# ls __init__.py settings.py urls.py wsgi.py root@paul:/home/paul/testowy/testowy# nano settings.py
DATABASES={ 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'django_db', 'USER': 'root', 'PASSWORD': 'twoje_haslo', } }
Uruchamiamy server django za pomocą polecenia:
root@paul:/home/paul/testowy# python manage.py runserver
Finalnie otwieramy przeglądarkę i sprawdzamy, czy pod adresem http://127.0.0.1:8000/ widoczny jest ekran powitalny django!
Więcej materiałów na:
https://www.djangoproject.com/
http://www.djangobook.com/en/2.0/index.html
http://django.pl/
https://www.djangopackages.com/
http://realdjango.com/