diff --git a/server/README.md b/server/README.md new file mode 100644 index 0000000..b9112a8 --- /dev/null +++ b/server/README.md @@ -0,0 +1,87 @@ +# Server na strategicou hru na SKSP2022 + +Velké poděkování patří Medvědovi a Jirkovi Setničkovi, jejichž kód vykrádám. + +## Instalace vývojového prostředí + + python3 -m venv venv + . venv/bin/activate + pip install wheel + pip install -c constraints.txt --editable . + # vytvořit hra/config.py podle config.py.example + + # Jako admin postgresu + psql + postgres=# CREATE DATABASE ksp_strathra_devel WITH OWNER=$(UŽVATELSKÉ JMÉNO); + + # Naplníme databázi + bin/db_init + # Přístup do orgočásti webu + bin/create_root root + + ./flask run + + # Po běžných úpravách není potřeba balíček přeinstalovávat + +## Instalace na produkční server + +TODO: Upravit (momentálně pouze vykradeno) + + # 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 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