Hvordan utvikle på innsida.uka.no

Sette opp utviklings-instans

Lage lokal kopi

Man setter gjerne opp en utviklings-instans på cirkus, og vi ønsker en url alá http://innsida-herman.uka.no

Først tar vi en klone av master-branchen.

bruker@cirkus:~/dev$ git clone gitea@gitea.samfundet.no:ITK/innsida.git

Kopier local.py fra en annen som utvikler:

BRUKERNAVN@cirkus:~/dev$ cp /home/cassarossa/uka/theodorc/dev/innsida/innsida/settings/local.py innsida/innsida/settings/local.py

Lag virtualenvironment, og installer pakker

virtualenv -p $(which python3) --system-site-packages venv && source venv/bin/activate
pip install -r requirements_dev.txt

ACL-er

Husk å sette opp riktige rettigheter ved å følge noden acl permissions

Kjøre lokalt på egen datamaskin

For å kjøre lokalt kan du kjøre

bruker@maskin:~$ source venv/bin/activate
bruker@maskin:~$ python manage.py runserver

Kjøre på cirkus

I resten av noden skal BRUKERNAVN byttes ut med ditt brukernavn.

Apache-konfigurasjon

Kopier en fungerende config fra en annen på cirkus, og bytt ut brukernavnet deres med ditt eget alle steder det står. Apache-config-filene ligger i /etc/apache2/sites-available/ Pass på at DocumentRoot er riktig.

AssignUserID skal settes til uka-httpd uka-web

For å legge til denne i sites-enabled bruker vi følgende:

bruker@maskin:~$ sudo a2ensite innsida-BRUKERNAVN.uka.no

Før apacheconfigen lastes inn, må vi legge til en DNS-oppføring.

DNS

Følg instruksjonene i DNS-noden.

Reload Apacheconfigen:

bruker@cirkus:~$ sudo systemctl reload apache2

Kerberos

Du har kanskje gjort det allerede, og innsett at passord/brukernavnet ditt ikke virker. Vi må sette opp egen Kerberos-keytab for utviklings-instansen din.

Under kan det være greit å godta defaults. Følg det som står i "Opprette Kerberos-keytab" i itkaclbruk-artikkelen

Nå må vi redigere apache-configen til å bruke den nye keytaben

    <Location />
        AuthType Kerberos
        KrbAuthRealms AD.SAMFUNDET.NO
        Krb5Keytab /etc/apache2/krb5/innsida-BRUKERNAVN.keytab
        AuthName "Uka innsida"
        require itkacl /web/uka/admin
    </Location>

uwsgi

Nå må vi opprette en uwsgi config-fil. Kopier en annen person sin, bytt ut brukernavnet deres med ditt eget alle steder det står og endre den slik at den bruker din dev-instans.

bruker@cirkus:~$ cd /etc/uwsgi/apps-available
bruker@cirkus:~$ cp innsida-theodorc.uka.no.ini innsida-BRUKERNAVN.uka.no.ini
bruker@cirkus:~$ ln -s ../apps-available/innsida-BRUKERNAVN.uka.no.ini ../apps-enabled.custom/

Av sikkerhetsgrunner er det også viktig å sette uid og gid i configen til riktig bruker avhengig av hvilken side det er snakk om, eks uka sider er uid=uka-httpd, og gid=uka-web, tilsvarende for ufs er uid=ufs-httpd, og gid=ufs-web. Dette er fordi vi ikke vil ha uwsgi instanser kjørende som din personelige bruker siden denne har sudo tilgang.

Da må du også passe på at gruppen, eks uka-web har lesetilgang til kildekoden. NB kun gruppen uka-web skal ha lesetilgang, ikke uka-httpd.

Så må vi fortelle uwsgi om instansen din.

bruker@cirkus:~$ sudo systemctl enable uwsgi-custom@innsida-BRUKERNAVN.uka.no
bruker@cirkus:~$ sudo systemctl start uwsgi-custom@innsida-BRUKERNAVN.uka.no

https

Vi har lyst til å bruke https, se noden om Let's Encrypt

Når du har utviklet det du vil

Har du lagt til funksjonalitet pass på at du skriver tilhørende tester.

Det andre du må gjøre er å forsikre deg om at det ikke er endringer i det offisielle innsida-treet som har skjedd mens du utviklet, så kjør en update av mainline og gjør en merge fra mainline:

bruker@maskin:~/dev/innsida$ python manage.py test
bruker@maskin:~/dev/innsida$ git commit -m "[app] min commitmelding"
bruker@maskin:~/dev/innsida$ git pull –rebase
bruker@maskin:~/dev/innsida$ git push

Er det konflikter eller andre endringer under pull/push, løs opp og commit.

Prøv å gjøre commit-meldingene dine rimelig informative! Bare «merge fra –bruker» er veldig lite nyttig, prøv å få med i korte trekk hva som faktisk er skjedd. Gjerne tagg meldingene med [<navn på app du har gjort endringer på>]

Produksjonssetting

Innsida har et finfint deploy-script. Scriptet er ganske lettleselig så bare å kikke på det hvis man er litt usikker på hva den gjør.

bruker@cirkus:~$ ./deploy.sh deploy

FAQ

Arg, jeg får ikke logget inn i instansen min, får bare feilsiden. What to do?

Man må ha en bruker i databasen

BRUKERNAVN@cirkus:~/dev/innsida$ source venv/bin/activate
(venv)BRUKERNAVN@cirkus:~/dev/innsida$ python manage.py shell -i bpython
>>> from innsida.authentication.models import *
>>> User.objects.create(username='BRUKERNAVN')

Hvis du virkelig vil være fancy så kan du ta deg selv opp i UKA i mdb2_dev, gjerne ved bruk av en dev-instans. Deretter kjører du python manage.py pullmdbdata

Jeg har gjort steget over, men når jeg prøver å lage bruker for jeg en database-feil. How to fix?

Det skyldes at du har en eksisterende bruker, men den har blitt satt inaktiv. (is_active=false for din bruker i databasen). Du løser dette i Postgres, på cirkus, gjør følgende:

BRUKERNAVN@cirkus:~$ psql mdb2_dev
mdb2_dev=# SET search_path TO innsida;
mdb2_dev=# BEGIN;
mdb2_dev=# UPDATE authentication_user SET is_active = TRUE WHERE username='BRUKERNAVN';
mdb2_dev=# COMMIT;

Akk og ve, jeg får jo bare masse feilmeldinger når templaten rendres! "No such element" både her og der! Er det noe galt?

Nei, når Django kjører i debug-modus returnerer Jinja2 feilmeldingene når templaten rendres. Det gjør den ikke med debug=False i innsida/settings/local.py. Du bør helst utvikle så disse feilmeldingene unngås.

øhhh, testene vil ikke kjøre? Den finner ikke tabellen shiftmanager_shiftlocation

Eh, ja migreringene er litt føkkd. Dette kan hjelpe deg.

BRUKERNAVN@cirkus:~/dev/innsida$ sqlite3 innsida/project.db
sqlite> CREATE TABLE IF NOT EXISTS "shiftmanager_shiftlocation" ("id" integer NOT NULL PRIMARY KEY AUTOINCREMENT, "name" varchar(50) NOT NULL);
Eventuelt kan du fikse migreringene. Da hadde teddyc vært glad <3

øhh, jeg har ikke noe å gjøre og arbeidskvelden har akkurat starta?

Sjekk ut innsida todo. Der er det masse å ta tak i :)

Lenker: Start, utleggsys

Epost: itk@samfundet.no | Telefon: 992 15 925 | Sist endret: 2023-05-11 20:24 | Revisjon: 40 (historie, blame) | Totalt: 1905 kB | Rediger