Installasjon

Her beskrives hvordan CMS-et installeres under nginx med uwsgi som WSGI-server.

Oppgraderinger

Oppgraderinger gjøres slik:

sudo -u wagtail -i
cd /opt/wagtail
make deploy

Førstegangsinstallasjon

Opprett brukerkonto

Opprett en egen brukerkonto for wagtail:

addgroup --system wagtail
adduser --system --home /home/wagtail --shell /bin/bash \
        --gecos "Wagtail Server" --disabled-password \
        --ingroup wagtail wagtail

Generer SSH-nøkler

Generer SSH-nøkler for denne brukerkontoen:

sudo -u wagtail ssh-keygen -C wagtail@$(hostname)

Denne nøkkelen må gis tilgang til wagtail-repoet: Dette gjøres på GitHub, under Deploy keys.

Opprett applikasjonskatalog

Opprett applikasjonskatalog og gjør denne skrivbar for wagtail-brukerkontoen:

mkdir /opt/wagtail
chown wagtail:wagtail /opt/wagtail

Sett opp utviklingsmiljø

Sett deretter opp et utviklingsmiljø som beskrevet i Sette opp utviklingsmiljø og Konfigurere utviklingsmiljø.

OBS OBS! VIKTIG: Husk å sette DEBUG=False, og å sette ny SECRET_KEY.

Wagtail-brukerkontoen har ikke administratorrettigheter, så kommandoer som begynner med sudo må kjøres som root. De andre kommandoene kjøres som wagtail-brukeren.

Environmentvariablene bør settes automatisk ved innlogging.

Passende ~/.bash_profile:

test -f ~/.bashrc && source ~/.bashrc

Passende ~/.bashrc:

export PATH="$HOME/.local/bin:$PATH"

Last ned kildekoden

Klone repositoriet til ønsket sted (her /opt/wagtail), og pass på at .venv-katalogen finnes før pipenv kjøres:

git clone git@github.com:imfdrift/wagtail /opt/wagtail
cd /opt/wagtail
mkdir .venv
pipenv sync --dev

Hvis .venv-katalogen mangler, vil pipenv opprette python-miljøet under ~/.local/share/virtualenvs/, med et uforutsigbart navn.

Vi trenger å vite fullstendig sti til python-miljøet (denne må angis i uwsgi.ini), og ønsker derfor at python-miljøet havner i /opt/wagtail/.venv/.

Opprett database

Produksjonsdatabasen heter wagtail_prod. Utviklingsmiljøene har databaser med navn på formen wagtail_dev_HOSTNAVN, evt. wagtail_dev_HOSTNAVN_PORTNR hvis man har flere instanser på samme maskin.

SQL-brukerkontoen har samme navn som databasen.

På postgres-tjeneren:

sudo -u postgres createuser -P wagtail_prod
sudo -u postgres createdb wagtail_prod

Generer et langt, tilfeldig passord og bruk det samme passordet i DATABASE_URL i .env-fila.

Opprett databasestruktur

Aktiver python-miljøet og initialiser databasen:

cd /opt/wagtail
pipenv shell
cd src
./manage.py migrate
./manage.py createcachetable
./manage.py createsuperuser
exit

Obs

TODO Husk chown www-data ~www-data hvis applikasjonen kjøres under webserver-brukerkontoen (lualatex trenger å skrive til font-cache på hjemmekatalogen). Dette er ikke nødvendig hvis den kjører som wagtail-brukerkontoen.

Gjør førstegangs deploy

Generer staticfiles og dokumentasjon:

cd /opt/wagtail
make collectstatic docs

Installer systemd-tjeneste

Systemd-tjenesten installeres som root:

cp /opt/wagtail/wagtail.service /etc/systemd/system/
systemctl enable wagtail
systemctl start wagtail

For at wagtail-brukeren skal kunne restarte tjenesten legger vi inn en /etc/sudoers.d/wagtail med innhold:

wagtail ALL=(root) NOPASSWD: /bin/systemctl restart wagtail
wagtail ALL=(root) NOPASSWD: /bin/systemctl reload wagtail
wagtail ALL=(root) NOPASSWD: /bin/systemctl status wagtail
wagtail ALL=(root) NOPASSWD: /bin/systemctl start wagtail
wagtail ALL=(root) NOPASSWD: /bin/systemctl stop wagtail

Konfigurer nginx

Oppsett av nginx er utenfor omfanget av denne artikkelen, men relevant del av konfigurasjon er:

location / {
        include uwsgi_params;
        uwsgi_pass unix:/tmp/wagtail.sock;
}

location /docs {
        alias /opt/wagtail/docs/_build/html/;
        autoindex off;
}

location /static {
        alias /opt/wagtail/static;
        autoindex off;
}

Konfigurer Feide-innlogging

Hvis instansen skal bruke Feide til pålogging, må det konfigureres en tjeneste i Dataporten.

Følg instruksjonene på Feide-innlogging.

Logg deretter inn en gang med din personlige Feide-brukerkonto.

Etterpå kan du logge inn igjen som superbrukeren (som ble opprettet med manage.py createsuperuser) og tilordne administratorrettigheter til Feide-brukeren din. Når dette er gjort kan den lokale Django-superbrukeren slettes, slik at all administrasjon skjer via Feide-innloggede brukere.

Sette opp første nettsted

Logg inn i Wagtail admin og gå til Settings -> Sites.

Erstatt eksisterende site localhost med maskinens hostnavn eller tjenestenavn (f.eks wagtail.math.ntnu.no). Kryss av for Is default site.

Sette opp tilleggsnettsteder

Følg framgangsmåten beskrevet på Legge til nytt nettsted.