Drift av andre gjengers nettsider

Det hender at gjenger på huset ønsker å ha en nettside på Samfundets tjenere. Dette er ikke en av hovedoppgavene til ITK, men det pleier å være gjennomførbart. Det forutsetter riktig nok at nettsiden utformes på en slik måte at den lett kan integreres i vår eksisterende infrastruktur. Dersom dette ikke gjøres riktig helt fra begynnelsen risikerer man å pådra seg mye ekstraarbeid, eller i verste fall en situasjon hvor man ikke kan ha nettsiden på Samfundets tjenere. Denne noden beskriver hvordan man lager en nettsiden som vellykket kan hostes fra Samfundet.

Generelt

Det er et par gyldne regler det er kjekt å følge.

Minst mulig rammeverk

De aller fleste gjengnettsider har som oppgave å presentere statisk informasjon, og enkelte inkluderer også internsystemer. Før man begynner å lage nettsiden er det viktig å tenke over hvilket problem man ønsker å løse, og deretter velge verktøy som gjør akkurat det. Selv om det kan være fristende å benytte seg av rammeverk som løser "alt" for deg, vil du merke at også verktøyene i seg selv krever vedlikehold. Merarbeidet som ligger i dette bør ikke undervurderes.

Minst mulig prosess

Det er moderne med kontinuerlig integrasjon, testrammeverk og automatisert utrulling. Hold deg unna dette. Det stjeler tid og er ikke noe som støttes på våre tjenere.

Minst mulig kompleksitet

De færreste gjenger har faste webutviklere. Det betyr at selv om du er dedikert til å vedlikeholde en avansert nettside med alskens funksjonalitet, vil eventuelle problemer etterhvert havne i hendene på fremtidige kull. Dersom de ikke har noen programmeringskyndig person vil de slite. Derfor er det viktig at du holder siden så enkel som mulig. Finn ut hvilket problem nettsiden skal løse, og løs bare akkurat det. Da reduserer du sjansen for at siden brekker, og mangler som oppstår blir enkle å utbedre.

Valg av språk

Det er i hovedsak tre språkmuligheter for hosting av nettsider på Samfundets tjenere.

HTML

Dersom nettsiden bare skal presentere informasjon er det enkleste å servere statiske HTML-filer med tilhørende CSS og eventuelt Javascript.

Perl, PHP eller lignende

Hvis nettsiden skal gjøre noe, er Perl (med CGI eller PHP gode valg. Disse språkene kan tolkes direkte av webserveren, og krever ikke noe fancy oppsett. En klar favoritt for de fleste prosjekter.

Django

Dersom nettsiden skal gjøre ganske mye, kan man vurdere å bruke python3 med rammeverket Django. Dette er litt mer styr, men gjør også en del oppgaver enklere. Merk at spesielt innlogging med Samfundet-brukernavn og -passord er ekstra kinkig med Django.

Oppsett

Filer

Gjengens nettside legges typisk under /home/cassarossa/gjeng/web, eid av gruppen gjeng-web og eksportert under samba-sharet \gjeng-web.

git

Vi bruker git som versjonkontrollverktøy. Repoet kan bo på våre tjenere eller man kan bruke github.

Backend

Felles for Samfundets nettsider er at de serveres av webserveren apache2 med en eventuell PostgreSQL-database i backend.

Dersom nettsiden bruker Django gjør apache en ProxyPass til uWSGI som kommuniserer med Django-instansen. Hvis nettsiden derimot er skrevet i Perl, PHP eller lignende, håndteres dette direkte av apache.

Autentisering/autorisering

Dersom noen skal kunne logge inn med Samfundet-brukernavn på nettsiden må man bruke ITKACL. Når en URI legges bak ITKACL vil man måtte logge inn med Samfundet-brukernavnet og -passordet sitt (se Samfundet-wikien for et eksempel). Deretter setter apache SERVER-headeren REMOTE_USER, som kan leses av nettsidekoden. Hvis man bruker Django må man lage en autentiseringsmodul som leser denne headeren – dette er litt styr, så vurder å droppe unna Django hvis du trenger brukerinnlogging.

Autoriseringsbiten gjøres med ITKACL-biblioteket – det eksisterer bindinger til hvert språk som er aktuelt i denne sammenhengen.

Lenker: Start

Mail: itk@samfundet.no | Telefon: 992 15 925 | Sist endret: 2019-05-07 14:06 | Revisjon: 3 (historie, blame) | Totalt: 1547 kB | Rediger