Kapsin logo

Kapsi Internet-käyttäjät ry

Django-ympäristön asentaminen

Vanhentunut ohje
Tämä ohje on joko osin tai kokonaan vanhentunut. Ohjetta saattaa kyetä soveltamaan uudemmilla www-palvelimilla, mutta toiminnasta ei ole takeita.

Django on Python-pohjainen www-sovellusten kehitysympäristö. Djangon asennukseen on useita menetelmiä, joista tässä neuvotaan fcgi-pohjainen asennustapa. Ohjeen komennot kannattaa ajaa Lakka-palvelimella, vaikka itse www-sivut palvellaankin Karviaiselta.

Djangon ajaminen sovelluspalvelimena

Joustavin tapa ajaa Djangoa on käyttää omaa sovelluspalvelinta, esimerkiksi gunicorn:ia. Tällöin pystyt itse asentamaan uusimmat versiot Djangosta ja haluamistasi Python-kirjastoista.

Tämä ohje neuvoo kuitenkin fcgi-pohjaisen lähestymistavan. Tässä on se etu, ettei tarvita erikseen ajettavaa sovelluspalvelinta. Tämä ei kuitenkaan ole yhtä laajasti käytetty tapa kuin gunicorn, joten ohjeen toiminnassa on ollut ajoittain ongelmia eri Django-versioita käytettäessä.

Djangon ajaminen FCGI:nä

Asennuspaketin lataaminen ja purkaminen

Lataa asennuspaketti Djangon sivuilta ja pura se esimerkiksi kotihakemiston alle. Purettavan hakemiston ei tarvitse olla www-juuren alla.

Djangon asennus setup.py:n kautta vaatisi pääkäyttäjän oikeudet. Sen sijaan luodaan itse asennetuille python-moduuleille oma hakemisto, tässä ohjeessa python-modules kotihakemiston alla. Kopioidaan paketista Django-x.xx:n alle purkautunut django-niminen hakemisto python-modules:n alle.

Fcgi-asetukset

Sivustoa varten luodaan mysite.fcgi, johon pyynnöt ohjataan mod_rewritellä.

Alla esimerkkinä Djangon ohjeiden perusteella tehty mysite.fcgi Djangon omia esimerkkiohjelmia varten. Tiedostossa on määritetty edellä luodun python-modules-hakemiston polku, ja projektin koodien juurihakemisto.

#!/usr/bin/python
import sys, os

# Add a custom Python path.
sys.path.insert(0, "/home/users/.../python-modules/")

# Add path to django project
sys.path.insert(1,"/home/users/.../django-testaus/")

# Switch to the directory of your project. (Optional.)
os.chdir("/home/users/.../django-testaus/")

# Set the DJANGO_SETTINGS_MODULE environment variable.
os.environ['DJANGO_SETTINGS_MODULE'] = "examples.settings"

from django.core.servers.fastcgi import runfastcgi
runfastcgi(method="threaded", daemonize="false")

Lisäksi fcgi-tiedostolle täytyy antaa suoritusoikeus, eli esimerkiksi oikeudet 755.

FastCGI pitää ohjelman n. 10 minuuttia käynnissä viimeisen sivunhaun jälkeen, joten myöhemmät muutokset eivät välttämättä heti päivity. Muutoksien jälkeen ajettu touch mysite.fcgi auttaa tähän.

Tässä vaiheessa sivut toimivat osoitteessa http://.../mysite.fcgi/ (huomioi viimeinen kauttaviiva). Jotta osoitteet toimisivat ilman .fcgi-tiedoston nimeä, luodaan .htaccess-niminen tiedosto samaan hakemistoon mysite.fcgi:n kanssa ja lisätään siihen seuraavat rivit:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ mysite.fcgi/$1 [QSA,L]

Sivuston testaus

Testaukseen voi käyttää Djangon esimerkkiohjelmia, joita varten kopioidaan examples-hakemisto projektin juurihakemistoon. Yllä mysite.fcgi:ssä määritelty examples.settings kertoo asetusmoduulin, josta Django osaa ladata esimerkkiohjelmien tiedot.

Djangon työkaluskriptien käyttö

Djangon apuskriptejä (kuten django-admin.py) komentoriviltä käytettäessä täytyy asettaa ympäristömuuttuja $PYTHONPATH, jotta järjestelmän oletusversioiden sijaan käytetään kotihakemistoon asennettuja python-moduuleita. Polun voi määrittää komennolla:

export PYTHONPATH=~/python-modules

Komennon voi myös lisätä komentotulkin käynnistystiedostoon .bash_profile.