diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 00000000..98037882 --- /dev/null +++ b/.dockerignore @@ -0,0 +1 @@ +web/settings/local.py diff --git a/.github/workflows/continuous-integration.yml b/.github/workflows/continuous-integration.yml index 34a02ffc..c5f45305 100644 --- a/.github/workflows/continuous-integration.yml +++ b/.github/workflows/continuous-integration.yml @@ -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 diff --git a/Dockerfile b/Dockerfile index 46ad8b45..de834b30 100644 --- a/Dockerfile +++ b/Dockerfile @@ -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 \ diff --git a/db/.keep b/db/.keep deleted file mode 100644 index e69de29b..00000000 diff --git a/docker-compose.yml b/docker-compose.yml deleted file mode 100644 index afbbc6c4..00000000 --- a/docker-compose.yml +++ /dev/null @@ -1,6 +0,0 @@ -version: '3' -services: - web: - build: . - ports: - - 3000:3000 diff --git a/docker-entrypoint.sh b/docker-entrypoint.sh deleted file mode 100755 index 9727dbcd..00000000 --- a/docker-entrypoint.sh +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/bash - -if [ ! -f "/app/db/secret.txt" ]; then - tr -dc A-Za-z0-9 < /dev/urandom | head -c 40 > /app/db/secret.txt -fi -if [ ! -f "/app/db/kipa.db" ]; then - cp /app/docs/initial.db /app/db/kipa.db -fi - -exec "$@" diff --git a/docs/installation.md b/docs/installation.md index a950aab2..38002b86 100644 --- a/docs/installation.md +++ b/docs/installation.md @@ -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 \ 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 @@ -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 - - - 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" - - -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. \ No newline at end of file +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). diff --git a/installer/linux/deb/DEBIAN/control b/installer/linux/deb/DEBIAN/control deleted file mode 100755 index 4942146b..00000000 --- a/installer/linux/deb/DEBIAN/control +++ /dev/null @@ -1,11 +0,0 @@ -Package: kipa -Version: 0.9-0 -Architecture: all -Maintainer: Frans Korhonen [frans.korhonen@gmail.com] -Depends: apache2, python , python-django (>= 1.0), libapache2-mod-python -Section: opt -Priority: extra -Description: KiPa(KisaPalvelu), tuloslaskentajärjestelmä partiotaitokilpailuihin - - - diff --git a/installer/linux/deb/DEBIAN/postinst b/installer/linux/deb/DEBIAN/postinst deleted file mode 100755 index 97d67454..00000000 --- a/installer/linux/deb/DEBIAN/postinst +++ /dev/null @@ -1,18 +0,0 @@ -#!/bin/bash - -chown www-data /opt/kipa/web -chown www-data /opt/kipa/web/tupa.db -ln -s /opt/kipa/web/media /var/www/kipamedia - -apacheConf=/etc/apache2/httpd.conf - -echo '' >> ${apacheConf} -echo ' SetHandler python-program' >> ${apacheConf} -echo ' PythonHandler django.core.handlers.modpython' >> ${apacheConf} -echo ' SetEnv DJANGO_SETTINGS_MODULE web.settings' >> ${apacheConf} -echo ' PythonDebug On' >> ${apacheConf} -echo " PythonPath \"['/opt/kipa'] + sys.path\"" >> ${apacheConf} -echo '' >> ${apacheConf} - -/etc/init.d/apache2 restart - diff --git a/installer/windows/INSTRUCTIONS b/installer/windows/INSTRUCTIONS deleted file mode 100755 index 61579742..00000000 --- a/installer/windows/INSTRUCTIONS +++ /dev/null @@ -1,13 +0,0 @@ -Kipa windows installer - -Setup : -1. Copy the Apache installer to root dir. (where this README is located) -2. Modify install.cfg so that the filename and keys apply to the Apache to be installed. (registry key version number) -3. Copy python that has reportlab and mod_python addon suitable for the specific apache under dir "python". -4. Copy Apache addons under dir "Apache" -5. Copy Kipa source under web -6. Run setup.exe and confirm that kipa installs and works. -7. Create self extracting package that runs setup.exe automatically. Use some nice free sofware like ChilkatZipSE. settings for ChilkatZipSE are in installeri.xml -8. Install and test. -9. Release the file. - diff --git a/installer/windows/Kipa_win_asennus_flow.dia b/installer/windows/Kipa_win_asennus_flow.dia deleted file mode 100644 index 10d9460c..00000000 Binary files a/installer/windows/Kipa_win_asennus_flow.dia and /dev/null differ diff --git a/installer/windows/apache/INSTRUCTIONS b/installer/windows/apache/INSTRUCTIONS deleted file mode 100755 index 53d37cdb..00000000 --- a/installer/windows/apache/INSTRUCTIONS +++ /dev/null @@ -1,4 +0,0 @@ -Here comes all addons to Apache (mod_python) -Dlls go to bin (msvcrt71.dll) (python.dll) -mod_python.so goes undes modules. - diff --git a/installer/windows/install.cfg b/installer/windows/install.cfg deleted file mode 100755 index 2b21b1b8..00000000 --- a/installer/windows/install.cfg +++ /dev/null @@ -1,16 +0,0 @@ -# Program name for apache httpd.conf etc. -program_name = kipa -# static media root url for apache: -media_destination = /kipamedia -# media source directory in program (without trailing /) -media_dir = media -# default installation dir (after program files) -default_dir = kipa -# Apache installer command for advanced users. -advanced_apache_installer = apache_2.2.14-win32-x86-openssl-0.9.8k.msi -# Apache installer to be run in the beginning. -apache_installer = msiexec /i apache_2.2.14-win32-x86-openssl-0.9.8k.msi /passive ALLUSERS=1 SERVERADMIN=admin@localhost SERVERNAME=localhost SERVERDOMAIN=localhost SERVERPORT=80 -# registery key and value for getting the current Apache installation dir -apache_dir_key = SOFTWARE\Apache Software Foundation\Apache\2.2.14 -apache_dir_64key = SOFTWARE\Wow6432Node\Apache Software Foundation\Apache\2.2.14 -apache_dir_value = ServerRoot diff --git a/installer/windows/installer.c b/installer/windows/installer.c deleted file mode 100644 index a6b83135..00000000 --- a/installer/windows/installer.c +++ /dev/null @@ -1,294 +0,0 @@ -#include -#include -#include -#include -#include - - -int getconf(char *filename,char **keys,char **values,int max_str_len) ; // function for getting values from config files - -void getString(char *string) { // Function for getting raw line input from user - char ch; - while ((ch = getchar()) != '\n') { - if(ch=='\b' && strlen(string) ) string[strlen(string)-1]=0 ; - else { - string[strlen(string)]=ch ; - string[strlen(string)+1]=0 ; - } - } -} - -int main(int argc, char** argv) { - char apachedir[256]=""; - // Luetaan Konffitiedosto - char defaultdir[256] ; - char apache_installer[256] ; - char apache_dir_key[256] ; - char apache_dir_64key[256] ; - char apache_dir_value[256] ; - char program_name[256] ; - char media_destination[256] ; - char media_dir[256] ; - char advanced_apache_installer[256] ; - char *keys[] = {"default_dir", - "apache_installer", - "apache_dir_key", - "apache_dir_64key", - "apache_dir_value", - "program_name", - "media_destination", - "media_dir", - "advanced_apache_installer", - NULL} ; - char *values[9] ; - values[0]=defaultdir ; - values[1]=apache_installer ; - values[2]=apache_dir_key ; - values[3]=apache_dir_64key ; - values[4]=apache_dir_value ; - values[5]=program_name ; - values[6]=media_destination ; - values[7]=media_dir ; - values[8]=advanced_apache_installer ; - getconf("install.cfg",keys,values,256) ; - - // Haetaan program files muuttuja : - char installdir[256]="" ; - char *program_files ; - program_files=getenv("ProgramFiles") ; - strcpy(installdir,program_files) ; - strcat(installdir,"\\") ; - strcat(installdir,defaultdir) ; - - printf("\nTervetuloa kipan asennusohjelmaan.\n") ; - char asennus[256] = "" ; - while( asennus[0]!='1' && asennus[0]!='2' ){ - asennus[0] = 0 ; - printf("\nValitse asennuksen tyyppi.\n 1) Helppo \n 2) Muokautettu \n\n >>" ) ; - getString(asennus) ; - } - - // Kysell��n tyhmi�: - printf("\nMihin hakemistoon %s asennetaan? (Oletus=%s)\n Jos oletuspaikka on ok, paina vaan enter. \n\n>>", program_name,installdir) ; - char hakemisto[256]=""; - getString(hakemisto) ; - - - printf("Asennetaan apache.\n") ; - // Ajetaan apache asentaja - if( asennus[0]=='2') system(advanced_apache_installer); - else system( apache_installer) ; - - printf("Asennetaan kipa.\n"); - - // Ronkitaan rekisterist�,tai kysyt��n k�ytt�j�lt�, apachen asennus hakemisto. - HKEY hkey; - unsigned long datalen; - unsigned long datatype; - if (!RegOpenKeyExA(HKEY_LOCAL_MACHINE, - apache_dir_key, - NULL, - KEY_QUERY_VALUE, - &hkey) == ERROR_SUCCESS) // Normal windows - { - if (!RegOpenKeyExA(HKEY_LOCAL_MACHINE, - apache_dir_64key, - NULL, - KEY_QUERY_VALUE, - &hkey) == ERROR_SUCCESS) // 64 bit windows 7 - { - printf("\nAsennus ei l�yt�nyt Apachea rekisterist�.\n Kerro Apachen siainti koneellasi \n (Hakemisto jonka alla on suoraan \"modules\" ja \"bin\" hakemisto):\n"); - getString(apachedir) ; - } - } - datalen = 256; - if (RegQueryValueExA(hkey, - apache_dir_value , - NULL, - &datatype, - apachedir, - &datalen) != ERROR_SUCCESS && !apachedir[0]) - { - printf("\nAsennus ei l�yt�nyt Apachea rekisterist�.\nKerro Apachen siainti koneellasi. \n (Hakemisto on se jonka alla on suoraan \"modules\" ja \"bin\" hakemistot):\n"); - getString(apachedir) ; - } - RegCloseKey(hkey); - - // Toistetaan itsest��nselvyys: - printf("Apache on hakemistossa:%s\n",apachedir); - - if (hakemisto[0]) { - installdir[0]=0 ; - strcpy(installdir , hakemisto) ; - } - - - int i; - for( i =0 ; i< strlen(installdir) ; i++ ) { // korvataan kaikki / - - if (installdir[i]==47) installdir[i]='\\' ; - } - if (installdir[strlen(installdir)-1]=='\\' ) installdir[strlen(installdir)-1]= 0 ; - printf("Asennetaan %s hakemistoon \"%s\n\"" , program_name ,installdir) ; - - // Kopioidaan tiedostoja: - char p_kom[256]; - sprintf(p_kom,"xcopy python\\* \"%s\\python\" /s /y /i /R",installdir ); - char db_bak[256]; - sprintf(db_bak,"xcopy \"%s\\web\\*.db\" \"%s\\web\\bak\\\" /y",installdir, installdir ); - char db_res[256] ; - sprintf(db_res,"xcopy \"%s\\web\\bak\\*.db\" \"%s\\web\\\" /y",installdir, installdir ); - char w_kom[256]; - sprintf(w_kom,"xcopy web\\* \"%s\\web\" /s /i /y /R",installdir ); - char a_kom[256]; - sprintf(a_kom,"xcopy apache\\* \"%s\" /s /i /y /R",apachedir ); - - - // Paivitetaan pythonpath - char pyPath[256]; - sprintf(pyPath,"%s\\python;%s\\python\\lib;%s\\python\\DLLs;%s\\python\\plat-win;%s\\python\\lib\\lib-tk",installdir,installdir,installdir,installdir,installdir); - if (!RegOpenKeyExA(HKEY_LOCAL_MACHINE, - "SYSTEM\\CurrentControlSet\\Control\\Session Manager\\Environment", - NULL, - KEY_SET_VALUE, - &hkey) == ERROR_SUCCESS) - { - printf("Ei onnistu laittamaan python pathia.\n Kokeile ajaa uudestaan admin oikeuksilla."); - while( !kbhit()); - return -1 ; - } - datalen = 256; - RegSetValueEx( - hkey, - "PythonPath", - 0, - REG_EXPAND_SZ, - pyPath, - 255); - RegCloseKey(hkey); - - // Nollataan apachen konfigurointitiedosto. Ettei p�ivitett�ess� kumuloidu. - char ht_kom[256]; - sprintf(ht_kom ,"copy \"%s\\conf\\original\\httpd.conf\" \"%s\\conf\\\"", apachedir,apachedir) ; - - system( p_kom ); - system( db_bak ) ; - system( w_kom ); - system( db_res ) ; - system( a_kom ); - system( ht_kom ); - - // Paivitetaan httpd.conf - - char httpd_conf[512] ; - sprintf(httpd_conf,"Alias %s \"%s\\web\\%s\" \n \n Order allow,deny \n Allow from all \n \n LoadModule python_module modules/mod_python.so \n \n SetHandler python-program \n PythonHandler django.core.handlers.modpython \n SetEnv DJANGO_SETTINGS_MODULE web.settings \n PythonDebug On \n PythonPath \"['%s'] + sys.path\" \n \n",media_destination, - installdir, - media_dir, - installdir, - media_dir, - program_name, - installdir) ; - - char httpd_filename[256] ; - sprintf(httpd_filename,"%s\\conf\\httpd.conf",apachedir) ; - - FILE *fp; - fp = fopen(httpd_filename, "a"); - for (i=0; i - - - Chilkat Software, Inc. - http://www.chilkatsoft.com/ - - C:\ransu\code\kipa_win\kipa_1.0.2-full-win32.zip - - - 1 - 0 - 0 - 0 - 1 - 1 - 0 - 128 - 14.3.0 - - - - - - - - - setup.exe - - - - - 1 - - diff --git a/installer/windows/python/INSTRUCTIONS b/installer/windows/python/INSTRUCTIONS deleted file mode 100755 index 5932369e..00000000 --- a/installer/windows/python/INSTRUCTIONS +++ /dev/null @@ -1,3 +0,0 @@ -Here comes the python. -Python must be equipped with correct mod_python and reportlab - diff --git a/installer/windows/setup.exe b/installer/windows/setup.exe deleted file mode 100755 index 1ca0ef0e..00000000 Binary files a/installer/windows/setup.exe and /dev/null differ diff --git a/installer/windows/web/INSTRUCTIONS b/installer/windows/web/INSTRUCTIONS deleted file mode 100755 index 1e17244d..00000000 --- a/installer/windows/web/INSTRUCTIONS +++ /dev/null @@ -1,2 +0,0 @@ -Put here the kipa source - diff --git a/nginx.conf b/nginx.conf new file mode 100644 index 00000000..ac66cab9 --- /dev/null +++ b/nginx.conf @@ -0,0 +1,42 @@ +worker_processes 1; + +user nobody nogroup; +error_log /var/log/nginx/error.log warn; +pid /var/run/nginx.pid; + +events { + worker_connections 1024; + accept_mutex off; # set to 'on' if nginx worker_processes > 1 +} + +http { + include mime.types; + # fallback in case we can't determine a type + default_type application/octet-stream; + access_log /var/log/nginx/access.log combined; + sendfile on; + + upstream app_server { + server unix:/tmp/kipa.sock fail_timeout=0; + } + + server { + listen 80 deferred; + client_max_body_size 4G; + server_name kipa; + keepalive_timeout 5; + + location /kipamedia { + alias /media; + } + location / { + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto $scheme; + proxy_set_header Host $http_host; + # we don't want nginx trying to do something clever with + # redirects, we set the Host: header above already. + proxy_redirect off; + proxy_pass http://app_server; + } + } +} diff --git a/requirements.txt b/requirements.txt index fe4adc89..d5223166 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,3 +1,2 @@ django==5.1 -#mysql-python -# git+https://github.com/PyMySQL/mysqlclient-python.git@v1.4.6#egg=MySQLdb +gunicorn==23.0.0 diff --git a/web/settings/docker.py.example b/web/settings/docker.py.example index 1c7806ad..46cf2bd2 100644 --- a/web/settings/docker.py.example +++ b/web/settings/docker.py.example @@ -1,12 +1,9 @@ -with open("/app/db/secret.txt", "r") as f: +with open("/secret.txt", "r") as f: SECRET_KEY = f.readline() DATABASES = { "default": { "ENGINE": "django.db.backends.sqlite3", - "NAME": "/app/db/kipa.db", + "NAME": "/db/kipa.db", } } - -# Should we serve the media files through Python? -SERVE_MEDIA = True diff --git a/web/wsgi.py b/web/wsgi.py new file mode 100644 index 00000000..4aa749a3 --- /dev/null +++ b/web/wsgi.py @@ -0,0 +1,7 @@ +import os + +from django.core.wsgi import get_wsgi_application + +os.environ.setdefault("DJANGO_SETTINGS_MODULE", "settings") + +application = get_wsgi_application()