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

cloud cloud cloud
help
Tähtis küsimus jäi vastuseta? Küsi julgelt otse meie klienditoelt
Me aitame sul kindlasti oma küsimusele see tähtis vastus leida. Ja kui me seda teeme siis võtame kiiresti ühendust!
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