Hvordan utvikle på uka.no

Uka.no utvikles i git. For mer informasjon om git og grunnleggende bruk oppfordres følgende node: git

Hvordan sette opp en utviklings-instans

Start med å klone uno-repoet fra /home/cassarossa/itk/felles/git/ukano (eller uno_apps) til et sted du finner passende. Det er også en fordel å legge seg selv til i gruppene uka-dev og uka-web før du begynner å utvikle.

Følg så "Sette opp utviklings-instans" delen av oppskriften medlemsdb2, hvordan utvikle. Bytt ut "samfundet" og "mdb2.samfundet" med "uka" overalt. Pass også på å sette ProxyPass i Apache-configen til å peke på en port som ikke allerede er i bruk. Dette kan f. eks sjekkes ved søke igjennom uWSGI-configene i /etc/uwsgi/apps-available, foreksempel ved å bruke

 sudo cat /etc/uwsgi/apps-available/* | grep -Po "1:\K.+" | sort -r 

Et nyttig triks for å sjekke om det skjer noe på en port er

 lsof -i :8080 
(bytt ut 8080 med porten du vil sjekke.)

Deretter må vi sette opp en uWSGI instans. Det enkleste er å kopiere noen andres config, følge det som står i uWSGI-noden.

Vi må så legge til en ny konfigurasjonsfil, som (stort sett) skal inneholde de Django relaterte instillingene som er unike for din utviklings-instans.

Start med å kopiere noen andres local.py fil. Denne filen kan bli funnet i uno/settings/. Bytt ut BASE_URL med URLen til din utviklingsinstans, og pass på at databasen som blir definert i den samme filen er en dev-database.

Kjør tilslutt:

 python manage.py collectstatic 
Denne kommandoen samler hovedsaklig alle de statiske filene på et sted, slik at de blir lettere for Apache å håndtere. I utviklingsmiljøet vil dette vanligvis derimot ikke være nødvendig, ettersom Django selv håndterer disse filene.

Hvordan sette opp en lokal utviklingsinstans

Begynn med å opprette et virtual environment

  virtualenv -p /usr/bin/python2.7 venv # Opprett et virtual environmentet kalt «venv»
  source venv/bin/activate              # Aktiver virtual environmentet
  pip install -r requirements.txt       # Installer avhengighetene som trengs for å starte uka.no
Husk å aktivere virtual environment hver gang du skal utvikle.

Ettersom enkelte instillinger er spesifike for din utviklingsinstans, må du deretter opprette en fil som inneholder lokale instillinger.

  cp uno/settings/local_devel.py uno/settings/local.py
Fyll ut seksjonene i local.py merket med «# TODO» før du fortsetter.

Opprett deretter databasen ved å kjøre

  python manage.py syncdb   # (skriv "no" når du blir spurt om å opprette superbruker)
  python manage.py migrate

Dersom du ikke bruker sqllite, kan du se bort fra det følgende. Siden vi i noen tilfeller ikke ønsker å bruke mdb2_dev, kan du opprette noen mock-Billig tabeller ved å kjøre

  python manage.py dbshell
  .read local_dev_sql/billig_tables.sql

For å samle de statiske filene som uka.no trenger må du så kjøre

  python manage.py collectstatic

For å så starte en lokal server som serverer uka.no kan du kjøre

  python manage.py runserver

Når du har utviklet det du vil

Det første du må gjøre er å forsikre deg om at ditt utviklings-tre er oppdatert med det offisielle uno-treet.

bruker@maskin:~/dev/uno$ git commit -m "En flott beskrivelse av endringene jeg har gjort"
bruker@maskin:~/dev/uno$ git pull
bruker@maskin:~/dev/uno$ 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.

Utrulling på uka.no

Utrulling gjøres ved hjelp av et fabric script som automatisk ssh-er til cirkus, puller master fra repoet, kjører kommandoene som trengs (collect static og migrate), kjører tester og restarter uwsgi.

Fra roten av din instans av repoet, kjør:

fab deploy

og svar på spørsmålene den stiller.

Manuell utrulling på uka.no

Start med å ssh-e til cirkus. Gjør deretter dette:

bruker@cirkus:~$ cd /var/www/uka.no/www/uno
bruker@cirkus:~$ sudo -u uka-httpd git pull

Det er viktig at du spesifiserer '-u uka-httpd'. Hvis ikke kjøres git som root, og filer, både i working directory og metafiler under .git, kan få root som eier. Dette fører til problemer for nestemann som skal rulle ut endringer.

Det vil til tider også være nødvendig å reloade uWSGI, ettersom dette blant annet reloader hele Django-configen.

Manuell utrulling på uka.no

Triks for å debugge litt når applikasjonen din kjører på uWSGI. Du ønsker ofte å printe litt til stderr for å finne ut av ting. Da kan det være lurt å importere sys, og slenge på file=sys.stderr i print-funksjonen din.

import sys

print("Jeg havner i uwsgi-loggen (:", file=sys.stderr)

Lenker: Start, uka-no

Mail: itk@samfundet.no | Telefon: 992 15 925 | Sist endret: 2018-10-01 20:05 | Revisjon: 48 (historie, blame) | Totalt: 1469 kB | Rediger