Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Docker-asennus ja asennus ilman Dockeria #73

Merged
merged 4 commits into from
Dec 19, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .dockerignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
web/settings/local.py
2 changes: 1 addition & 1 deletion .github/workflows/continuous-integration.yml
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ jobs:
pip install robotframework
pip install robotframework-seleniumlibrary
- name: start SUT
run: docker run -d -p 3000:3000 kipa
run: docker run -d -p 3000:80 kipa
- name: wait SUT to start
run: while ! curl -s -f 'http://localhost:3000/kipa' ; do sleep 2; docker ps; done
shell: bash
Expand Down
31 changes: 23 additions & 8 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -1,11 +1,26 @@
FROM python:3.12
FROM ubuntu/nginx:1.24-24.04_beta

WORKDIR /app/web
RUN apt-get update \
&& apt-get install -y python3.12 python3.12-venv \
&& apt-get clean

ENTRYPOINT ["/app/docker-entrypoint.sh"]
EXPOSE 3000
CMD ["python", "./manage.py", "runserver", "0.0.0.0:3000"]
COPY web /app/
COPY --chown=nobody:nogroup web/media /media
COPY web/settings/docker.py.example /app/settings/docker.py
COPY requirements.txt /
COPY nginx.conf /etc/nginx/

COPY . /app/
COPY web/settings/docker.py.example /app/web/settings/docker.py
RUN pip install -r /app/requirements.txt
RUN python3.12 -m venv venv
ENV PATH="/venv/bin:$PATH"

WORKDIR /app

RUN rm -rf /app/media \
&& mkdir /db \
&& pip install -r /requirements.txt \
&& tr -dc A-Za-z0-9 < /dev/urandom | head -c 40 > /secret.txt \
&& python manage.py makemigrations tupa \
&& python manage.py migrate \
&& nginx -t \
&& echo "gunicorn --daemon --bind unix:/tmp/kipa.sock wsgi --error-logfile /tmp/errors " > /docker-entrypoint.d/gunicorn.sh \
&& chmod +x /docker-entrypoint.d/gunicorn.sh \
Empty file removed db/.keep
Empty file.
6 changes: 0 additions & 6 deletions docker-compose.yml

This file was deleted.

10 changes: 0 additions & 10 deletions docker-entrypoint.sh

This file was deleted.

149 changes: 59 additions & 90 deletions docs/installation.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,10 @@
### Lähiverkko

Kaikkien tietokoneiden pitää olla samassa verkossa niin että niillä on
verkkoyhteys palvelimelle johon Kipa on asennettu. Yhteyden toimivuutta voi
kokeilla vaikka ping \<IP osoite\> komennolla. Palvelimelle tarvitaan
portti 80 auki http-liikennöintiä varten. Jos kisatoimistosta ei ole pääsy
Internettiin kannattaa harkita palomuurin sammuttamisesta palvelimelta.
verkkoyhteys palvelimelle johon Kipa on asennettu. Palvelimelle tarvitaan
käytetty TCP-portti auki http-liikennöintiä varten. Jos kisatoimistosta ei
ole pääsyä Internettiin kannattaa harkita palomuurin sammuttamista
palvelimelta.

### Internet

Expand All @@ -22,89 +22,58 @@ riittävän hyvää verkkoyhteyttä.

## Docker-asennus

1. Luo itsellesi GitHubin personal access
token [täältä](https://github.com/settings/tokens) jakirjaudu
Docker-clientillä sisään GitHubin pakettivarantoon esimerkiksi
komennolla `docker login ghcr.io`
2. Aja komento `docker run -d -p 3000:3000 -v kipa_db:/app/db --name kipa -d ghcr.io/partio-scout/kipa:latest`
* Halutessasi voit myös käyttää kehitysversiota vaihtamalla `latest`-tagin sijaan `develop`in.
3. Mene selaimella osoitteeseen http://localhost:3000/kipa/ – voilá!

Yllä opastettu ajotapa käyttää kipa_db-nimisessä Docker-volumessa olevaa
SQLite-kantaa. Sen sijaan voit käyttää esimerkiksi MySQL-kantaa
mounttaamalla erillisen local.py-tiedoston tähän tapaan:
`-v /home/user/kipa/local.py:/app/web/settings/local.py`. Voit myös yliajaa
muita settings/__init__.py:ssä olevia määrityksiä em. tavalla, esimerkiksi
ottaa käyttöön välimuistituksen.

## macOS-asennus

Toimivaksi todettu macOS Montereylla (12.0), luultavasti toimii myös
uudemmilla käyttöjärjestelmillä. Huom! Tämä ohje asentaa Kipan
kehityspalvelimen (development server).

macOS sisältää valmiiksi kaiken muun, paitsi itse Djangon. Sen asennus on
hyvin yksinkertainen ja onnistuu keneltä tahansa pääkäyttäjän oikeuksilla.

1. Avaa Terminal klikkaamalla oikeasta yläkulmasta suurennuslasia ja
kirjoittamalla hakukenttään Terminal
2. Asenna Django kirjoittamalla terminaaliin
`sudo easy_install django==1.3.1`
Anna salasanasi, jos terminaali sitä kysyy. Tämä asentaa Djangon
uusimman saatavilla olevan version.
3. Hae Kipa GitHubista kirjoittamalla
`git clone https://github.com/partio-scout/kipa.git`
Jos et ole aiemmin käyttänyt Gittiä, tulee näytölle varmistus Command
Line Developer Toolsin asentamisesta. Hyväksy asennus ja aja käsky
uudelleen.
4. Hyväksy terminaalin mahdollinen kysymys palvelimen sertifikaatista.
5. Siirry Kipan web-hakemistoon kirjoittamalla `cd kipa/web`
6. Käynnistä Django ja Kipa `sudo python manage.py runserver`
7. Jos saat ilmoitukseksi “Development server is running at...”, voit avata
selaimen (esim. Safari) ja kirjoittaa osoitteeksi 127.0.0.1:8000/kipa/

Kun lopetat Kipan käytön, siirry terminaaliin ja paina Ctrl+C, joka
pysäyttää Djangon.

## Linux-asennus

Pohjalle tarvitaan moderni Linux-käyttöjärjestelmä, testattu Ubuntu
20.04:lla

Huom! Ohjeessa {{kipa_asennus}} viittaa kansioon, johon Kipa on asennettu
(eli 2. Kohdassa .zip tiedosto purettu).

1. Lataa Kipa
lähdekoodi [GitHubista](https://github.com/partio-scout/kipa/archive/refs/heads/master.zip)
2. Pura .zip tiedosto kansioon, johon haluat asentaa Kipa
3. Asenna tarvittavat paketit komennolla
`sudo apt install apache2 python libapache2-mod-python mysql-server libmysqlclient-dev python-dev build-essential`

* Pythonin asennuksen jälkeen asenna pip, katso esim.
ohjeet: https://stackoverflow.com/a/66719099
* Pip:n asennuksen jälkeen asenna vaadittava versio Djangosta ajamalla
kipa-kansiossa komento pip install -r requirements.txt

4. Lisää /etc/apache2/apache2.conf tiedoston loppuun seuraavat rivit

<Location "/kipa/">
SetHandler python-program
PythonHandler django.core.handlers.modpython
SetEnv DJANGO_SETTINGS_MODULE web.settings
PythonDebug On
PythonPath "['{{kipa_asennus}}/kipa', '{{kipa_asennus}}/kipa/web'] + sys.path"
</Location>

5. Aja seuraavat komennot

chown www-data {{kipa_asennus}}/kipa/web
chown www-data {{kipa_asennus}}/kipa/web/tupa.db
ln -s {{kipa_asennus}}/kipa/web/media /var/www/html/kipamedia

6. Käynnistä apache2 uudestaan komennolla `sudo systemctl restart apache2`
7. Kipa pitäisi toimia nyt osoitteessa localhost://kipa/

## Windows-asennus

Lataa [asennustiedosto](https://github.com/partio-scout/kipa/releases/tag/1.6.2)
ja aja se. Testattu toimivaksi Windows 10 ja Windows XP.
Suositeltu tapa ajaa Kipaa on Docker-kontissa ajaminen. Ainoa
ennakkovaatimus Kipa-koneelle on toimiva Docker-asennus tai vastaava.
Aloittelijaystävällisin tapa on Docker Desktop, jonka asennusohjeet
löytyy [täältä](https://docs.docker.com/desktop/).

Dockerin avulla Kipa-palvelin saadaan "eristettyä" omaksi kokonaisuudekseen
niin, ettei se häiritse muita koneen toimintoja. Kontti, johon Kipa on
valmiiksi asennettu, on saatavilla [GitHubin konttirekisteristä]
(https://github.com/partio-scout/kipa/pkgs/container/kipa).

Kipan saa käymään yksinkertaisimmillaan komennolla
`docker run -p 8000:80 --name kipa -d --volume kipa-volume:/db ghcr.io/partio-scout/kipa:latest`,
jonka jälkeen Kipan pitäisi löytyä selaimella osoitteesta
http://localhost:8000/kipa. Kipan käyttämä tietokanta tallennetaan
Docker-volumeen, eli Kipan kontin sammutaminen tai uudelleenkäynnistäminen
ei aiheuta tietokannan häviämistä.

Kipan sammuttaminen tapahtuu esimerkiksi komennolla `docker stop kipa`.
Uudelleenkäynnistys voidaan tämän jälkeen tehdä komennolla
`docker start kipa` tai sitten Kipa-kontti voidaan poistaa komennolla
`docker rm kipa`.

Mikäli haluaa käynnistää Kipasta kehitysversion se tapahtuu vaihtamalla
tagin `latest` tilalle `develop`.

## Asennus Nginx-proxyn taakse

Paremmin konfikuroitava ja joustavampi tapa ajaa Kipaa on ajaa sitä
WSGI-palvelin Gunicornin avulla käyttäen http-palvelin Nginx:ää proxynä.
Paikallisesti ajettuna Kipan SQLite-tietokannan sijainnin voi asettaa
johonkin sopivaksi katsottuun paikkaan: luo asetushakemistoon
`web/settings/` local.py, jossa asetetaan tietokannan polku. Tietokantana
voi myös käyttää jotakin muuta Djangon tukemaa tietokantaa.

Asennuksen vaiheet:

1. Asenna Nginx.
2. Asenna Kipan tukema Python.
3. Luo jonnekkin virtuaaliympäristö: `python -m venv /polku/venv`
4. Aktivoi virtuaaliympäristö: `source /polku/venv/bin/activate`
5. Asenna riippuvuudet: `pip install -r requirements.txt`
6. Siirry Kipan `web`-hakemistoon.
7. Aja Kipa gunicornin avulla:
`gunicorn --daemon --bind unix:/tmp/kipa.sock wsgi`
* Muilla kuin *unix pohjaisilla järjestelmillä voi bindata soketin
sijasta oletusarvoiseen http-porttiin 8000: `gunicorn --daemon wsgi`
8. Konfiguroi Nginx ohjaamaan liikenne valitusta portista Gunicornin
luomaan sokettiin tai sen kuuntelemaan TCP-porttiin.
9. Luo Nginx:än konfiguraatioon esim. alias, joka palvelee staattisten
tiedostojen kyselyjä (`/kipamedia/*`) hakemistosta `web/media/`,
varmista että Nginx-prosessin käyttäjällä on lukuoikeus kyseiseen
hakemistoon.

Esimerkki Nginx:än konfikuraatiosta löytyy repositorion juuresta tai
sitten [Gunicornin dokumentaatiosta](https://docs.gunicorn.org/en/latest/deploy.html).
11 changes: 0 additions & 11 deletions installer/linux/deb/DEBIAN/control

This file was deleted.

18 changes: 0 additions & 18 deletions installer/linux/deb/DEBIAN/postinst

This file was deleted.

13 changes: 0 additions & 13 deletions installer/windows/INSTRUCTIONS

This file was deleted.

Binary file removed installer/windows/Kipa_win_asennus_flow.dia
Binary file not shown.
4 changes: 0 additions & 4 deletions installer/windows/apache/INSTRUCTIONS

This file was deleted.

16 changes: 0 additions & 16 deletions installer/windows/install.cfg

This file was deleted.

Loading
Loading