Django rakenduste kasutamine

Virtualenv tööriista abil saab luua isoleeritud Pythoni keskkondi. Virtualenv loob kataloogi, milles hoitakse Pythoni projekti jaoks paigaldatud moodulite koodi. See võimaldab serverisse paigaldada ka selliseid mooduleid, mida ei ole eelinstalleeritud.

Virtualenvi tuleb kasutada SSH keskkonnas käsurealt. SSH ligipääsu saab lisada iseteenindusest.

Loome kõikide virtualenv'ide jaoks kataloogi:

mkdir ~/.virtualenvs

 

Loome konkreetse projekti virtualenvi, nimetame selle "website":

virtualenv ~/.virtualenvs/website

 

Aktiveerime projekti virtualenvi:

source ~/.virtualenvs/website/bin/activate

 

Nüüd saab paigaldada vajalikke mooduleid. Selleks võtame appi tööriista pip. Paigaldame soovitud django versiooni:

pip install Django==5.0

 

Soovitavalt tuleks virtualenvi kohe ära paigaldada Django jooksutamiseks vajalik flup moodul:

pip install flup6

 

Hea praktika on hoida projekti kood htdocs kataloogist kataloogi võrra ülevalpool ehk juurkataloogis. Liigume sinna kataloogi:

cd ~

 

Kasutame django-admin tööriista uue django projekti alustamiseks, nimetame selle "djangoveeb":

~/.virtualenvs/website/bin/django-admin startproject djangoveeb

 

Siseneme projekti kataloogi.

cd ~/djangoveeb

 

Loome uue rakenduse djangoveebi projekti, nimega "home":

python manage.py startapp home

 

Avame faili djangoveeb/urls.py

Lisame uue impordi importide juurde:

from home import views

 

Lisame urlpatternsitesse uue lingi reegli, mis käsitleks avalehte (url(r'^$', views.index),):

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^, views.index),
]

Avame faili ~/djangoveeb/home/views.py

Lisame uued impordid importide juurde:

from django.http import HttpResponse
from django import get_version

Lisame avalehe funktsiooni index, mis tagastab jooksva django versiooni info.

# Create your views here.
def index(request):
    return HttpResponse("Running django " + get_version())

Muudame ~/djangoveeb/settings.py faili.

Lisame oma domeeni ALLOWED_HOSTS listi (asenda domeen.ee oma domeeni nimega, kus leht jooksma hakkab):

ALLOWED_HOSTS = ['domeen.ee']

 

Kommenteerime andmebaasi osa, kuna selle rakenduse puhul andmebaasi ei kasutata:

DATABASES = {
#'default': {
#       'ENGINE': 'django.db.backends.sqlite3',
#       'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
#   }
}

Andmebaasi kasutava rakenduse puhul tuleb tavapärase "localhost" asemel kasutada hostina IP-aadressi 127.0.0.1.

'HOST': '127.0.0.1', # not localhost

 

Veebiserverites on pythonis kirjutatud koodi jooksutamine vaikimisi lubatud. Seda tuleb teha läbi FastCGI, mille rakendamise saab seadistada .htaccess faili kaudu.

Vaikimisi on FastCGI kasutamine seadistatud veebilehe ~/htdocs/cgi-bin kataloogi sees (kui seda ei ole, siis loo see). Selleks, et django FastCGI kaudu tööle panna, tuleb luua ~/htdocs/cgi-bin kataloogi fail django.fcgi:

#!/usr/bin/env python3.9
import sys, os
DOMAIN = "domeen.ee" # Teie domeeni nimi (ilma www.-ta)
APPNAME = "djangoveeb" # Django applikatsiooni nimi
PREFIX = "/www/apache/domains/www.%s" % (DOMAIN,)
# Add a custom Python path.
sys.path.insert(0, os.path.join(PREFIX, APPNAME))
sys.path.insert(0, os.path.join(PREFIX, ".virtualenvs/website/lib/python3.9/site-packages/"))
# Switch to the directory of your project. (Optional.)
os.chdir(os.path.join(PREFIX, APPNAME))
# Set the DJANGO_SETTINGS_MODULE environment variable.
os.environ['DJANGO_SETTINGS_MODULE'] = "%s.settings" % (APPNAME,)
import django
django.setup()
from flup.server.fcgi import WSGIServer
from django.core.handlers.wsgi import WSGIHandler
WSGIServer(WSGIHandler()).run()

Failile tuleb anda käivitamise õigus:

chmod +x ~/htdocs/cgi-bin/django.fcgi

 

NB! Veendu, et failides (näiteks django.fcgi sees) oleksid kasutusel UNIX reavahetused. Muidu ei hakka django rakendus tööle.

Järgmiseks tuleb ~/htdocs/.htaccess faili lisada reeglid, mis lubavad .fcgi failide tuvastamise FastCGI skriptina ja suunavad veebipäringud django.fcgi faili.

Options +ExecCGI
AddHandler fcgid-script .fcgi
RewriteEngine On
RewriteRule ^(media.*)$ $1 [QSA,L,PT]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ cgi-bin/django.fcgi/$1 [QSA,L]

Avades veebilehe, peaks seal kuvatama "Running django x.y.z".

E-kirjade saatmine djangost

E-kirjade saatmiseks installime mooduli:

pip install django_sendmail_backend

 

Lisame ~/djangoveeb/djangoveeb/settings.py faili lõppu:

EMAIL_BACKEND = 'django_sendmail_backend.backends.EmailBackend'

 

Lisame ~/djangoveeb/home/views.py index funktsiooni enne return HttpResponse("Running django " + get_version()) rida:

send_mail(u'test', 'test', 'no-reply@domeen.ee', ['saaja@domeen.ee'])

 

Abistavad tähelepanekud

Koodimuudatuste rakendumine

Kui veebilehte on juba avatud, võib django protsess jooksmas olla ja koodi muutmise järel ei kajastu need muudatused uuel lehe laadimisel koheselt. Seetõttu tuleks pärast koodimuudatusi jooksev pythoni protsess peatada, et see saaks lehe värskendamisel värske koodiga tööle hakata.

pkill -f dispatch.fcgi

 

Pythoni versioon

Näidiskood kasutab pythoni vaikimisi versiooni, milleks on juhendi kirjutamise hetkel python 3.9. Kui soovid kasutada python 3.10/3.11/3.12 versiooni, siis tuleks virtualenv tekitada järgnevalt:

python3.10 -m venv ~/.virtualenvs/website

 

ja kasutada django.fcgi faili alguses:

#!/usr/bin/env python3.10

 

ning samas failis python 3.10 virtualenvi pakkide teekonda:

sys.path.insert(0, os.path.join(PREFIX, ".virtualenvs/website/lib/python3.10/site-packages/"))

 

Pythoni veateadete logi

Veebiserveri pealogile pole kahjuks klientidele võimalik ligipääsu tekitada. Seetõttu pythoni koodi veateateid vaadata ei saa, kuid abiks võib olla koodi käsitsi käivitamine käsurealt:

python ~/htdocs/cgi-bin/django.fcgi

 

Flup

Kui serveris puudub uue django jooksutamiseks vajalik flup moodul, siis saab selle ise virtualenvis paigaldada:

pip install flup6

Seotud juhendid

Sinu tagasiside on oluline

Enim esitatud küsimused

Enim loetud juhendid

Juhendid alustajale

Klienditeenindus
Lisasime diili sinu ostukorvi, said ikka mega hea diili!

Vali paketi periood

1 kuu põhine arveldus

Kuus 12.08

Kokku 12.08

3 kuu põhine arveldus

Kuus 12.08

Kokku 36.24

6 kuu põhine arveldus

Kuus 12.08

Kokku 72.48

1 aasta põhine arveldus

Säästad 20% ehk -24.16

Kuus 10.07

Kokku 120.80

1 aasta
0.00
2 aastat
0.00
3 aastat
0.00
4 aastat
0.00
5 aastat
0.00
6 aastat
0.00
7 aastat
0.00
8 aastat
0.00
9 aastat
0.00
10 aastat
0.00