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