Wczoraj serdeczny Kolega mój dał mi zadanie – rozpoznać możliwość instalacji najnowszego Django na moim serwerku testowym. Myślałem, że temat okaże się prosty – apt-get install i po sprawie. Okazało się jednak (jak to zwykle bywa w „prostych” tematach), że Debian 8.0 posiada w repozytorium Django 1.7.7 (tak było na chwilę testów, czyli 2015-05-28). Dodatkowe życzenia to Python 3 i „ożenek” z Postgresem 9 (zamiast SQLite). Dodatkowo wymyśliłem sobie jeszcze, że podepnę to do już działającego Apacza. Co, ja, POLAK nie zrobię? Ciekawe wyzwanie, to i chęci zmierzenia się z nim napłynęły natychmiast :-) I przy okazji od razu zaznaczę – NIE JEST to instrukcja krok po kroku od zera. Na serwerze mam juz skonfigurowane i działające serwisy Apacza i Postgresa i w te tematy wgłębiał się nie będę.

     No to po tym przydługim wstępie nie zamierzam pisać rozwinięcia w nieskończoność i zanudzać Was, drodzy Czytelnicy, moimi zmaganiami i ślepymi uliczkami, w które wdepnąłem podczas tej zabawy, dlatego przejdę do konkretów (i wyjaśniał też nie będę wszystkiego, bo komendy wypowiedzą się za siebie). Se przygotowywałem to tak (SE, bo jestem z Kielc i mi wolno SE wszystko robić, co SE chcę ;-) ):

apt-get install python3 python3-dev python3-venv
mkdir /var/www/firstdjango
cd /var/www/firstdjango
pyvenv-3.4 env
source ./env/bin/activate
pip install django==1.8.2
pip install psycopg2
python
[tu mi pokazało upragnioną wersję Pythona 3.4]
>>> import django;print(django.get_version())
1.8.2
>>> exit()
./env/bin/django-admin.py startproject firstdjango .
./env/bin/python manage.py runserver 0.0.0.0:8000

W tym miejscu sprawdziłem czy coś zobaczę po podłączeniu do serwera testowego, dostarczanego z Django. Okazało się, że jestem skazany na sukces, gdyż zobaczyłem w przeglądarce „Zadziałało! Gratulujemy utworzenia Twojej pierwszej strony w Django.” ;-)
No to lecę dalej:

psql -Upostgres
postgres=# CREATE DATABASE firstdjangodb WITH ENCODING 'UTF8';
postgres=# CREATE USER firstdjangouser WITH PASSWORD 'firstdjangopassword';
postgres=# GRANT ALL ON DATABASE firstdjangodb TO firstdjangouser;
postgres=# \q
vim ./firstdjango/settings.py
# wykomentowałem domyślne wpisy i zastąpiłem następującymi:
DATABASES = {
     'default': {
     'ENGINE': 'django.db.backends.postgresql_psycopg2',
     'NAME': 'firstdjangodb',
     'USER': 'firstdjangouser',
     'PASSWORD': 'firstdjangopassword',
     'HOST': '127.0.0.1',
     'PORT': '5432',
     }
}
LANGUAGE_CODE = 'pl'
TIME_ZONE = 'Europe/Warsaw'

Tu postanowiłem zobaczyć czy syncdb coś robi i wykonałem:

python manage.py syncdb

Pomijając ostrzeżenie, że w wersji 1.9 Django nie będzie już dostępnej komendy syncdb, otrzymałem:

Operations to perform:
Synchronize unmigrated apps: messages, staticfiles
Apply all migrations: contenttypes, auth, sessions, admin
Synchronizing apps without migrations:
Creating tables...
Running deferred SQL...
Installing custom SQL...
Running migrations:
Rendering model states... DONE
Applying contenttypes.0001_initial... OK
Applying auth.0001_initial... OK
Applying admin.0001_initial... OK
Applying contenttypes.0002_remove_content_type_name... OK
Applying auth.0002_alter_permission_name_max_length... OK
Applying auth.0003_alter_user_email_max_length... OK
Applying auth.0004_alter_user_username_opts... OK
Applying auth.0005_alter_user_last_login_null... OK
Applying auth.0006_require_contenttypes_0002... OK
Applying sessions.0001_initial... OK
You have installed Django's auth system, and don't have any superusers defined.
Would you like to create one now? (yes/no): yes
Username (leave blank to use 'root'): superfajnyuzyszkodnik
Email address: superfajnyuzyszkodnik@localhost
Password:
Password (again):
Superuser created successfully.

Po tych zabiegach stwierdziłem, ze spróbuję od razu w Apaczu umieścić konfigurację dla mojego pierwszego projektu. A zrobiłem to tak:

apt-get install libapache2-mod-wsgi-py3
cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/001-djangotest.conf
ln -s /etc/apache2/sites-available/001-djangotest.conf /etc/apache2/sites-enabled/001-djangotest.conf
vim /etc/apache2/sites-available/001-djangotest.conf
<VirtualHost *:80>
     WSGIDaemonProcess firstdjango python-path=/var/www/firstdjango:/var/www/firstdjango/env/lib/python3.4/site-packages
     WSGIProcessGroup firstdjango
     WSGIScriptAlias / /var/www/firstdjango/firstdjango/wsgi.py
     ServerName JakasTamNazwaDomenowaWktorejBedzieProjekt.pl
     ServerAdmin webmaster@localhost
     DocumentRoot /var/www/firstdjango
     <Directory /var/www/firstdjango/>
          Options Indexes FollowSymLinks MultiViews
          AllowOverride All
          Order allow,deny
          allow from all
     </Directory>
     ErrorLog "|/usr/sbin/rotatelogs ${APACHE_LOG_DIR}/firstdjango/errorlog_firstdjango.%Y-%m-%d 86400"
     LogLevel warn
     CustomLog "|/usr/sbin/rotatelogs ${APACHE_LOG_DIR}/firstdjango/accesslog_firstdjango.%Y-%m-%d 86400" combined

O dziwo (a może i nie o dziwo) po restarcie Apacza i wejściu na stronę projektu zobaczyłem ten sam, cudowny napis „Zadziałało! Gratulujemy utworzenia Twojej pierwszej strony w Django.”. A po wejściu na podstronę administracyjną zobaczyłem opcje dodawania użytkowników i grup. Mej radości nie było i nie będzie końca ;-)
Aż do momentu jak mój serdeczny Kolega zacznie coś robić i wtedy dopiero okaże sie jakich modułów Pythona i innych, niezbędnych rzeczy jeszcze brakuje w tej konfiguracji.
Ale to już przyszłość pokaże i teraz, w godzinie triumfu, nie będę się nad tym zastanawiał ;-)

Leave a Reply


mcdsoft.pl - systemy informatyczne. Audyty bezpieczeństwa www. Projektowanie, testy systemów informatycznych, www i aplikacji.
Outsourcing programistów PHP, Java, Adobe Flex.