Črkozmed
Črkozmed je spletna storitev za generiranje naključnih nalog iz slovenskega jezika osnovana na podobni storitvi Nadlogar.
Spletno okolje omogoča uporabnikom ustvarjanje delovnih listov in urejanje nalog, ki jih ti vsebujejo. Intuitivni uporabniški vmesnik omogoča dodajanje in odstranjevanje nalog, dodajanje in odstranjevanje primerov pri nalogah in urejanje vrstnega reda nalog.
Po končanem urejanju lahko uporabnik delovni list izvozi v obliki pdf
. Primere generiranih delovnih listov lahko najdemo tukaj.
Navodila za namestitev
Črkozmed za svoje delovanje potrebuje naslednjo programsko opremo:
- HTTP strežnik -
nginx
- WSGI strežnik -
gunicorn
- Python3.6+
Za serviranje statičnih datotek se uporablja HTTP strežnik (npr. nginx ali apache), za serviranje aplikacije pa WSGI strežnik (npr. gunicorn).
Djangova dokumentacija za postavitev produkcijskega strežnika je na voljo tukaj.
Konfiguracija nginx HTTP strežnika
Pri konfiguraciji nginx strežnika, je potrebno nastaviti poti do statičnih in uporabniško naloženih datotek.
Pri tem je potrebno v nastavitvah aplikacije (config/settings.py
) nastaviti pot, kjer se datoteke na disku nahajajo z naslednjima parametroma
STATIC_ROOT = '/var/www/crkozmed.stvari.si/static/'
MEDIA_ROOT = '/var/www/crkozmed.stvari.si/media/'
Poleg tega je potrebno nastaviti še URL naslova, na katerih se nahajajo statične oziroma medijske datoteke.
STATIC_URL = 'http://crkozmed.stvari.si/static/'
MEDIA_URL = 'http://crkozmed.stvari.si/media/'
Primer konfiguracije
Preden poženemo storitev črkozmed, je potrebno pognati ukaz python manage.py collectstatic --settings config.local_settings
, ki kopira statične datoteke iz mape projekta v nastavljen STATIC_ROOT
, kjer so nato na voljo za prenos s pomočjo HTTP strežnika.
Primer konfiguracije za nginx je podan spodaj.
- statične datoteke se nahajajo v
/var/www/crkozmed.stvari.si/static
in so uporabnikom na voljo na URL naslovuhttp://crkozmed.stvari.si/static/
. - uporabniško naložene datoteke se nahajajo v
/var/www/crkozmed.stvari.si/media
in so uporabnikom na voljo na URL naslovuhttp://crkozmed.stvari.si/media/
. - vse ostale poizvedbe se preusmerijo na notranji URL (s pomočjo
proxy_pass
), kjer dejansko teče Črkozmed python aplikacija.
server {
listen 80;
listen [::]:80;
server_name crkozmed.stvari.si;
location /static {
alias /var/www/crkozmed.stvari.si/static;
}
location /media {
alias /var/www/crkozmed.stvari.si/media;
}
location / {
proxy_set_header Host $http_host;
proxy_pass http://127.0.0.1:8000/;
}
}
Dokumentacijo za konfiguracijo komunikacije med nginx in gunicorn lahko najdemo tukaj.
Lokalne nastavitve aplikacije Črkozmed
Po prenosu je za delovanje APIja potrebno strežnik najprej konfigurirati. To lahko storimo tako, da uredimo datoteko nadlogar/config/local_settings.py
.
- SECRET_KEY - ključ, ki se uporablja za kriptografsko podpisovanje. Novega lahko generiramo tukaj.
- ALLOWED_HOSTS - seznam domen, ki jih Django lahko servira. Med njimi naj bosta lokalni domeni
127.0.0.1
inlocalhost
ter zunanja domena, ki je dostopna iz aplikacije (npr.crkozmed.zrc-sazu.si
). FRANCEK_API_KEY
- Ključ za komunikacijo s spletno storitvijo franček.si. Če je ključ dodan, se v aplikaciji omogoči prijava z uporabnikovim Franček računom.POT_DO_SLOVARJEV
- mapa v kateri se nahajajo slovarji, ki jih aplikacija uporablja za delovanje. Privzeto je to mapanadlogar/slovarji/
. Slovarji zaradi avtorskih pravic niso vključeni v aplikacijo.PRAZEN_DOKUMENT
- Python slovar z dvema poljema:naslov
- privzeti naslov praznega dokumenta, ki se ustvari ob kliku na gumb "Nov dokument" inopis
- privzeti opis praznega dokumenta, ki se ustvari ob kliku na gumb "Nov dokument".STEVILO_DELOVNIH_LISTOV_NA_STRAN
- število delovnih listov, ki jih uporabniku prikažemo na strani s seznamom vseh delovnih listov uporabnika.
Generiranje pdf dokumentov
Za generiranje pdf
dokumentov, storitev Črkozmed uporablja program latex
. V operacijskem sistemu Ubuntu lahko latex
in vse potrebne pakete namestimo z naslednjimi ukazi.
# Namestimo osnovni latex
sudo apt-get install texlive
# Namestimo paket lastpage
sudo apt-get install texlive-latex-extra
# Namestimo latex paket za slovenski jezik
sudo apt-get install texlive-lang-european
Generirani pdf dokumenti bodo shranjeni v mapo definirano v MEDIA_ROOT
.
V mapo MEDIA_ROOT
je potrebno kopirati datoteko nadlogar/media/izpit.cls
.
# Kopiramo datoteko izpit.cls v ustrezno mapo
cp media/izpit.cls /var/www/crkozmed.stvari.si/media/izpit.cls
Namestitev
Primer namestitve aplikacije Črkozmed na Ubuntu strežnik lahko vidimo spodaj.
# Namestitev python3.6
# sudo add-apt-repository ppa:deadsnakes/ppa
# sudo apt-get update
# sudo apt install python3.6 python3.6-venv
# Namestitev pip3.6
# curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
# python3.6 get-pip.py
# Namestitev nginx streznika
sudo apt-get update
sudo apt-get install nginx
# Priprava map za staticne in medijske datoteke
sudo mkdir --parents /var/www/crkozmed.stvari.si/static
sudo mkdir --parents /var/www/crkozmed.stvari.si/media
# TODO: Ustvari novo konfiguracijsko datoteko za nginx in jo uredi
# sudo vim /etc/nginx/sites-available/crkozmed
# sudo ln -s /etc/nginx/sites-available/crkozmed /etc/nginx/sites-enabled/crkozmed
# sudo service nginx restart
# Namestimo latex in vse potrebovane pakete
sudo apt-get install texlive
# Namestimo paket lastpage
sudo apt-get install texlive-latex-extra
# Namestimo latex paket za slovenski jezik
sudo apt-get install texlive-lang-european
# Prenos Crkozmed repozitorija
git clone https://github.com/drobilc/nadlogar.git
cd nadlogar/nadlogar
# TODO: Urejanje nastavitev Crkozmed
# vim config/settings.py
# Ustvarimo in aktiviramo virtualno okolje za python
python3.6 -m venv venv
source ./venv/bin/activate
# Namestitev zahtev crkozmeda
pip3.6 install -r ./requirements.txt
# Namestitev gunicorn WSGI streznika
pip3.6 install gunicorn
# Ustvarimo bazo podatkov
python3.6 manage.py migrate
# Kopiramo staticne datoteke v mapo definirano v nastavitvah
python3.6 manage.py collectstatic
# Kopiramo datoteko izpit.cls v ustrezno mapo
cp media/izpit.cls /var/www/crkozmed.stvari.si/media/izpit.cls
# Pozenemo crkozmeda z uporabo gunicorn
gunicorn config.wsgi