Skip to content
Snippets Groups Projects
Select Git revision
  • bf431f434b3199eec592ae5424688e03a48ea463
  • devel default
  • master
  • fo
  • jirka/typing
  • fo-base
  • mj/submit-images
  • jk/issue-96
  • jk/issue-196
  • honza/add-contestant
  • honza/mr7
  • honza/mrf
  • honza/mrd
  • honza/mra
  • honza/mr6
  • honza/submit-images
  • honza/kolo-vs-soutez
  • jh-stress-test-wip
  • shorten-schools
19 results

mo-submit

  • Clone with SSH
  • Clone with HTTPS
  • Martin Mares's avatar
    Martin Mareš authored
    To je totiž ve většině případů normální stav. Ve stavu přípravy má být
    kolo jen tehdy, když ho celostátní garant ještě nedokonfiguroval.
    bf431f43
    History

    Odevzdávací Systém Matematické Olympiády

    Instalace vývojového prostředí

    python3 -m venv venv
    . venv/bin/activate
    pip install wheel
    pip install -c constraints.txt --editable .
    # vytvořit mo/config.py podle etc/config.py.example
    mkdir -p data/imports
    
    bin/flask run
    
    # Po běžných úpravách není potřeba balíček přeinstalovávat

    Instalace na produkční server

    # Pro systém s jádrem < 5.4 zvýšit net.core.somaxconn (jako root)
    [ "`cat /proc/sys/net/core/somaxconn`" -lt 4096 ] && echo net.core.somaxconn=4096 >> /etc/sysctl.conf && sysctl -p
    
    # Založit účet mo-web (jako root)
    adduser --system mo-web --shell /bin/bash
    loginctl enable-linger mo-web
    
    # Založit databázi (jako správce PostgreSQL)
    psql -e 'CREATE ROLE mo_osmo'
    psql -e 'CREATE ROLE "mo-web" LOGIN'
    psql -e 'GRANT mo_osmo TO "mo-web"'	# a případně dalším uživatelům
    psql -e 'CREATE DATABASE mo_osmo_test WITH OWNER=mo_osmo'
    
    # Inicializovat databázi (už jako mo-web)
    psql mo_osmo_test <db/db.ddl
    
    # Založit adresář pro instanci
    mkdir /akce/mo/osmo-test
    chmod 770 /akce/mo/osmo-test
    setfacl -m u:mo-web:rwx -m g:mo:rwx /akce/mo/osmo-test
    setfacl -d -m u:mo-web:rwx -m g:mo:rwx /akce/mo/osmo-test
    
    # Zbytek jako uživatel mo-web v /akce/mo/osmo-test
    git clone <repozitář> src
    
    # Vytvořit etc/config.py podle src/etc/config.py.example
    # Vytvořit etc/uwsgi.ini podle src/etc/uwsgi.ini.example
    cd src
    bin/deploy
    
    # Zpřístupnit socket Nginxu
    setfacl -m u:www-data:x /akce/mo/osmo-test /akce/mo/osmo-test/var
    
    # Inicializovat regiony v DB
    # Obstarat si extra/ruian/ a extra/schools/parsed/ z jiné instance (nebo je znovu stáhnout)
    . ../venv/bin/activate
    bin/test-init	# případně podmnožinu
    
    # Případně ručně otestovat, že uwsgi funguje
    # uwsgi --ini etc/osmo.ini
    
    # Založit ~/.config/systemd/user/osmo_test.service podle etc/osmo.service.example
    systemctl --user daemon-reload
    systemctl --user enable osmo_test.service
    systemctl --user start osmo_test.service
    systemctl --user status osmo_test.service
    
    # Nastavit nginx:
    location /osmo-test {
    	include uwsgi_params;
    	uwsgi_pass unix:/akce/mo/osmo-test/var/osmo.sock;
    }
    
    # Na instalaci nové verze pak stačí spustit bin/deploy

    Mražení závislostí

    pip freeze | grep -v '^osmo=' >constraints.txt