Tämä ohje kuvaa yhden tavan ajaa Django-sovelluksia Kapsissa. Ohjeessa on huomioitu vuoden 2017 verkkosivu-uudistuksen tuomat muutokset.
Tässä ohjeessa pystytetään django-wiki julkiseen osoitteeseen
https://<tunnus>.kapsi.fi/kapsi-django-ohje
. Sovelluspalvelimena toimii gunicorn.
Pythonin, Djangon ja muiden kirjastojen versiot on valittu niin, että ne toimivat Kapsissa. Huolehdi itse, että "tuotantokäytössä" kirjastot ovat ajan tasalla niin vältyt tietoturvaongelmilta.
Aja kaikki komennot webapp1-palvelimella, ellei muuta mainita.
ssh <tunnus>@webapp1.kapsi.fi
Kloonaa tämä repo sites-hakemistoosi:
cd ~/sites/<tunnus>.kapsi.fi/
git clone https://github.com/suniala/kapsi-django-ohje.git
Luo paikallinen Python-ympäristö:
cd kapsi-django-ohje
virtualenv -p python3.4 env
Asenna paikalliseen ympäristöön Django ja django-wiki:
env/bin/pip install -r requirements.txt
Laita sovelluksen asetukset kuntoon. Kopioi mallista oma asetustiedostosi:
cd ~/sites/<tunnus>.kapsi.fi/kapsi-django-ohje/
cp kirja/settings.py.tmpl kirja/settings.py
Täytä puuttuvat kohdat kirja/settings.py
-tiedostoon. Löydät ne hakemalla sanaa "TODO".
Pystytä sitten tietokanta (mallikonfiguraatiossa käytetään paikkallista sqlite-kantaa). Huomaa,
että kätevyyden vuoksi manage.py
viittaa paikallisen ympäristömme python-komentoon, eikä
sitä tarvitse erikseen sanoa tässä:
cd ~/sites/<tunnus>.kapsi.fi/kapsi-django-ohje/
./manage.py migrate
Käynnistä sitten sovelluspalvelin. Tässä vaiheessa voit arpoa porttinumeron itse 30000 ja 40000 väliltä:
env/bin/gunicorn \
--bind webapp1.n.kapsi.fi:<portti> \
--chdir ~/sites/<tunnus>.kapsi.fi/kapsi-django-ohje \
--pythonpath kirja \
wsgi
Jos gunicorn käynnistyy ilman virheitä, pitäisi sovellukseen päästä kiinni Kapsin sisältä, esimerkiksi lakka-palvelimelta:
lynx http://webapp1.n.kapsi.fi:<portti>/kapsi-django-ohje/
Voit nyt sammuttaa gunicornin niin jatketaan säätämistä.
Internetistä ei pääse webapp1-palvelimella pyörivään sovellukseen suoraan käsiksi.
Yhteyksiä yhdistyksen palvelimille muualta internetistä on rajoitettu palomuurilla. Tämä estää palvelinohjelmien ajamisen ja IRC:n DCC-yhteydet. Jäsenet voivat kuitenkin pyytää ylläpidolta portteja käyttöönsä. https://www.kapsi.fi/palvelut/portit.html
Pyydä siis itsellesi porttia lähettämällä sähköpostiä ylläpidolle. Vastauksessa voi mennä pari päivää.
Kun ylläpito kertoo sinulle portin numeron, voit tehdä tarvittavan Apache-konfiguraation. Apache toimii
siis proxynä, joka välittää internetistä tulevat
pyynnöt sisäverkossa sovelusspalvelimellemme. Lisää tiedostoon sites/<tunnus>.kapsi.fi/www/.htaccess
:
RewriteEngine On
RewriteCond %{REQUEST_URI} ^/kapsi-django-ohje(.*)$
RewriteRule ^(.*)$ http://webapp1.n.kapsi.fi:<portti>/$1 [P]
Käynnistä gunicorn käyttäen saamaasi porttinumeroa ja mene selaimella osoitteeseen:
https://<tunnus>.kapsi.fi/kapsi-django-ohje
Tässä kohti kuvat ja tyylit vielä puuttuvat sivulta. Jos näyttää muuten toimivalta, niin tehdään vielä viimeiset silaukset.
Luo hakemistot tiedostojen jakamista varten. Nämä voi nimetä miten vaan mutta tässä on ollut ajatuksena, että static ja media-hakemistojen alla voisi olla useammankin sovelluksen tiedostoja:
mkdir -p ~/sites/<tunnus>.kapsi.fi/www/static/kapsi-django-ohje/
mkdir -p ~/sites/<tunnus>.kapsi.fi/www/media/kapsi-django-ohje/
Julkaise Django-sovelluksen tarvitsemat staattiset tiedostot:
cd ~/sites/<tunnus>.kapsi.fi/kapsi-django-ohje/
./manage.py collectstatic
Pääkäyttäjän tunnuksen voi luoda komentoriviltä. Tällä tunnuksella voi myös kirjautua django-wikiin. Luo tunnus:
./manage.py createsuperuser --username=<jokutunnus> --email=<jokusähköpostiosoite>
Tässä kohtaa kannattaa kokeilla gunicornin käynnistämistä uudestaan ja varmistaa, että sivustolla näkyy tyylit ja kuvat oikein. Kirjaudu sisään, luo uusi sivu, lataa sinne kuvatiedosto ja tarkista, että kuva näkyy tallennetulla sivulla. Näin varmistat, että myös media-hakemisto toimii.
Kokeile myös, että ylläpitosivusto toimii: https://<tunnus>.kapsi.fi/kapsi-django-ohje/yllapito
Käynnistetään sovelluspalvelin cronilla. Kopioi malliskripti:
cd ~/sites/<tunnus>.kapsi.fi/kapsi-django-ohje/
cp bin/run-gunicorn.sh.tmpl bin/run-gunicorn.sh
Muokkaa skriptiin puuttuvat tiedot. Luo myös flock-komennon tarvitsema hakemisto:
mkdir ~/.lock
Ajasta skriptin ajo. Ajastus voidaan tehdä vaikka jokaiselle minuutille koska skripti huolehtii
siitä, että gunicorn käynnistetään vain kerran. Aja crontab -e
ja täydennä:
* * * * * ~/sites/<tunnus>.kapsi.fi/kapsi-django-ohje/bin/run-gunicorn.sh
Palaute on tervetullutta vaikkapa Githubin kautta (issues, pull requests).