# 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/web/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 # 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 db/ruian/ a db/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