Installasjon
Her beskrives hvordan applikasjonen installeres under nginx med uwsgi som WSGI-server.
Oppgraderinger
Oppgraderinger gjøres slik:
sudo -u discourseconnect -i
cd /opt/discourseconnect/app
make deploy
Førstegangsinstallasjon
Opprett brukerkonto
Opprett en egen brukerkonto for discourseconnect:
addgroup --system discourseconnect
adduser --system --home /opt/discourseconnect --shell /bin/bash \
--gecos "WSGI-brukerkonto for Discourse SSO" --disabled-password \
--ingroup discourseconnect discourseconnect
Generer SSH-nøkler
Generer SSH-nøkler for denne brukerkontoen:
sudo -u discourseconnect ssh-keygen -C discourseconnect@$(hostname)
Denne nøkkelen må gis tilgang til discourseconnect-repoet: Dette gjøres på GitHub, under Deploy keys.
Opprett applikasjonskatalog
Opprett applikasjonskatalog og gjør denne skrivbar for discourseconnect-brukerkontoen:
mkdir /opt/discourseconnect
chown discourseconnect:discourseconnect /opt/discourseconnect
Opprett kataloger for dokumentasjon og statiske filer
Den automatisk genererte dokumentasjonen må ligge i en katalog som er åpen for webserveren:
mkdir /opt/discourseconnect/docs
chown discourseconnect:discourseconnect /opt/discourseconnect/docs
chmod a+rx /opt/discourseconnect/docs
Staticfiles må også ligge i en åpen katalog:
mkdir /opt/discourseconnect/static
chown discourseconnect:discourseconnect /opt/discourseconnect/docs
chmod a+rx /opt/discourseconnect/docs
Opprett katalog for logger
Loggene må ligge i en nedstengt katalog:
mkdir /opt/discourseconnect/logs
chown discourseconnect:discourseconnect /opt/discourseconnect/logs
chmod og= /opt/discourseconnect/logs
Sett opp utviklingsmiljø
Sett deretter opp et utviklingsmiljø som beskrevet i Sette opp utviklingsmiljø.
OBS OBS! VIKTIG: Husk å sette DEBUG=False
, og å sette ny SECRET_KEY
.
DiscourseConnect-brukerkontoen har ikke administratorrettigheter, så kommandoer
som begynner med sudo
må kjøres som root
.
De andre kommandoene kjøres som discourseconnect
-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/discourseconnect
), og pass på at
.venv
-katalogen finnes før pipenv
kjøres:
git clone git@github.com:imfdrift/discourseconnect /opt/discourseconnect/app
cd /opt/discourseconnect/app
mkdir .venv
pipenv sync
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/discourseconnect/app/.venv/
.
Opprett databasestruktur
Aktiver python-miljøet og initialiser databasen:
cd /opt/discourseconnect/app
pipenv shell
cd src
./manage.py migrate
./manage.py createsuperuser
exit
Gjør førstegangs deploy
Generer staticfiles og dokumentasjon:
cd /opt/discourseconnect/app
make collectstatic docs
Installer systemd-tjeneste
Systemd-tjenesten installeres som root
:
cp /opt/discourseconnect/app/discourseconnect.service /etc/systemd/system/
systemctl enable discourseconnect
systemctl start discourseconnect
For at discourseconnect
-brukeren skal kunne restarte tjenesten legger vi inn en
/etc/sudoers.d/discourseconnect
med innhold:
discourseconnect ALL=(root) NOPASSWD: /bin/systemctl restart discourseconnect
discourseconnect ALL=(root) NOPASSWD: /bin/systemctl reload discourseconnect
discourseconnect ALL=(root) NOPASSWD: /bin/systemctl status discourseconnect
discourseconnect ALL=(root) NOPASSWD: /bin/systemctl start discourseconnect
discourseconnect ALL=(root) NOPASSWD: /bin/systemctl stop discourseconnect
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/discourseconnect.sock;
}
location /docs {
alias /opt/discourseconnect/docs/html/;
autoindex off;
}
location /static {
alias /opt/discourseconnect/static;
autoindex off;
}
Konfigurer Feide-innlogging
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.
Konfigurer Django site
Logg inn i admingrensesnittet i Django og gå til Sites -> Sites.
Erstatt eksisterende site localhost
med maskinens hostnavn eller tjenestenavn
(discourse-sso.math.ntnu.no
).
Sette opp Single Sign-On for en Discourse-installasjon
Følg framgangsmåten beskrevet på Legge til nytt nettsted.