Drift/Wiki

From Programvareverkstedet
Jump to navigation Jump to search

OBS! Denne siden er utdatert.

Siden beskriver oppsett av MoinMoin-wikien. Denne ble erstattet av MediaWiki våren 2010.

Denne artikkelen er basert på at wikien kjører MoinMoin. Hvis den har blitt migrert til noe fornuftig siden da, pris deg lykkelig.

Harald har migrert wikien til MediaWiki. Pris Harald!

Pakkeaspektet

Det er en pakke assosiert med moin, python-moinmoin (før også moinmoin-common). Den oppdateres automatisk (typisk via pkgsync) og skaper mye moro. Dette fordi moin er basert på at ting skal brekke så mye som mulig hver gang man oppgraderer. F.eks. er default en URL med versjonsnummeret (p.t. /moin163) for statisk innhold. Filen som setter versjonen blir automatisk oppdatert med pakkene, men apache-aliaset blir selvfølgelig ikke det. Det er også lagt opp til at man skal kopiere noen filer ut av pakkeområdet og konfigurere dem, gjerne etterfulgt av at neste versjon av moin endret APIet så den kopierte versjonen ikke fungerer lenger. Good times, good times.

Men nok klaging.

python-moinmoin

Denne pakken dekker alt. (Pleide å være bare kjernefunken, dvs MoinMoin-modulen.)

  • /etc/moin - topnivås konfig
  • /usr/share/doc/python-moinmoin - docs
  • /usr/share/moin - forskjellige templates
    • /usr/share/moin/config - config templates
    • /usr/share/moin/data - user content
    • /usr/share/moin/htdocs - static content
    • /usr/share/moin/server - entry point templates
    • /usr/share/moin/underlay - builtin content
  • /usr/share/python-support/python-moinmoin - MoinMoin-modulen

Andre småting:

  • /usr/bin/moin-update-wikilist
  • /usr/sbin/moin-mass-migrate
  • /usr/share/lintian/overrides/python-moinmoin
  • /usr/share/man/man1/moin-update-wikilist.1.gz
  • /usr/share/man/man8/moin-mass-migrate.8.gz

moinmoin-common

Denne finnes ikke lenger. Ble flyttet inn i python-moinmoin i 1.7.

Kodesti

Kodestien som er anbefalt er som sagt en smule ... ustabil. Den går noe som dette:

  • Apache
    • Peker på htdocs via et Alias (e.g. /moin163 for 1.6.3)
    • (htdocs blir oppdatert av pakkene, så det er ikke lenge før /moin163 egentlig peker på innhold for 1.6.4 eller nyere)
    • Peker på server/moin.cgi via et ScriptAlias (/pvv)
  • moin.cgi
    • Ligger i en instans-directory og peker på farmconfig.py (toppnivåkonfig)
    • Siden moin.cgi er en kopi blir den ikke oppdatert, men APIet den jobber mot blir det.
  • farmconfig.py
    • Ligger i /etc/moin og fungerer ganske greit
    • ... men den krever egentlig at wikikonfigen ligger i samme directory
    • Den peker altså på <wikiconfig>.py (default mywiki.py, vi bruker pvv.py)
  • <wikiconfig>.py
    • Hører egentlig hjemme i instans-directoryen, men må ligge sammen med farmconfig.py pga pathhensyn
    • Peker på data og underlay (og cache)
  • data
    • Ligger i instans-directoryen, og hører hjemme der. Klarer seg fint.
  • underlay
    • Ligger i instans-directoryen, men hører ikke hjemme der.
    • Dette blir oppdatert ved wikioppdatering, så man må manuelt overskrive overlay hver gang
    • Og pga skrivetilgang og ting kan man ikke peke på den pakkestyrte overlayen

Forenklet oppsett

For å gjøre ting så enkelt som mulig er wikioppsettet på tvilling minimalisert.

  • Apache
    • Peker på /moin-static i stedet for /moin163 så vi unngår versjonshopp
    • (Bruk av /moin163 blir overstyrt i wikiconfig.py)
    • Peker på moin/server/moin.cgi (filen som skal kopieres) i stedet for en kopi
    • (Defaulten peker på /etc/moin, som er alt vi trenger.)
    • (Selv om vi kunne lagt til flere pekere er det fånyttes, siden de ikke blir lest av maintenancescript)
  • moin.cgi
    • Er nå pakkestyrt, og peker på /etc/moin/farmconfig.py
  • farmconfig.py
    • Er nesten pakkestyrt. Er endret til å peke på pvv.py i stedet for mywiki.py
    • (Vi kunne endret mywiki.py i stedet, men en av filene blir uansett ikke pakkestyrt, så en separat pvv-fil blir ryddigere.)
  • pvv.py
    • Ikke pakkestyrt, men den inneholder jo nettopp alle de tingene vi setter
    • Peker på /var/www/wiki.pvv.ntnu.no som inneholder data, underlay og cache
    • (Her overstyrer vi htdocs til å hete /moin-static uavhengig av versjon)

Altså er det hele pakkestabilt med unntak av:

  • /etc/moin/farmconfig.py må oppdateres manuelt og så settes til å lese pvv i stedet for mywiki.
    • Typisk vil det si å overskrive farmconfig.py med farmconfig.py.dpkg-new, og endre mywiki til pvv rundt linje 50 et sted.
  • /etc/moin/pvv.py må bare oppdateres hvis APIet endrer seg.
  • /var/www/wiki.pvv.ntnu.no/underlay må overskrives med /usr/share/moin/underlay hvis det skal oppdateres, veldig ikke-kritisk.
  • For nye/endrede plugins og noen andre filer i data må det også overskrives, tilsvarende ikke-kritisk.
  • Dataformatet bør også oppgraderes. Typisk ikke-kritisk, men veldig enkelt siden det er et innebygd script for det.
# Fikse mywiki -> pvv
mv /etc/moin/farmconfig.py.dpkg-new /etc/moin/farmconfig.py
$EDITOR /etc/moin/farmconfig.py

# Sjekk wiki-forsiden. Hvis den ikke fungerer må pvv.py kanskje oppdateres:
$EDITOR /etc/moin/pvv.py

# Nytt overlay, med backup i tilfelle noe går galt (bytt ut 1.7.1 med hva forrige versjon var)
mv /var/www/wiki.pvv.ntnu.no/overlay /var/www/wiki.pvv.ntnu.no/backup/overlay-1.7.1
cp -R /usr/share/moin/overlay /var/www/wiki.pvv.ntnu.no/

# Oppgradere dataformat
moin --config-dir=/etc/moin --wiki-url=wiki.pvv.ntnu.no/ migration data

# Sjekk om det er noen nye eller endrede filer av konsekvens (ikke så viktig)
diff -r /usr/share/moin/data/ /var/www/wiki.pvv.ntnu.no/data | egrep 'diff -r|Only in /usr'

1.6.3

Første omgang. Mye rot, tull og tøys.

1.7.1

Oppgraderingen var hovedsaklig smertefri. Ble litt rot med å få pakkesystemet til å innse at vi ikke har endret på visse conf-filer, men bare kosmetisk. Laget oppskrift for å slippe å rekonstruere alle operasjonene neste gang.