Skip to content
Snippets Groups Projects
Select Git revision
  • 161969772b9e5c0cf64fb8489f5bf9a368f4e90c
  • 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

osmo

Martin Mares's avatar
Martin Mareš authored
Jinak je potřeba spousta magie na to, aby je separátně instalované mypy
našlo.
16196977
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