public:sonstiges:unterhaltung:spiele:switche_versenken

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
public:sonstiges:unterhaltung:spiele:switche_versenken [2021/09/19 03:43] – angelegt netalipublic:sonstiges:unterhaltung:spiele:switche_versenken [2021/10/14 20:34] (aktuell) netali
Zeile 44: Zeile 44:
       * Nun kann mit oben genannten Beispielwerten der erste Switch so konfiguriert werden:       * Nun kann mit oben genannten Beispielwerten der erste Switch so konfiguriert werden:
       * ''./configure_switch.py 10.135.1.20 10.135.1.5 swvcom'' (das muss jetzt noch für den anderen Switch mit der anderen IP ausgeführt werden)       * ''./configure_switch.py 10.135.1.20 10.135.1.5 swvcom'' (das muss jetzt noch für den anderen Switch mit der anderen IP ausgeführt werden)
 +
 +===== Einrichtung des Servers =====
 +Für die Erklärung wird von folgenden Beispielwerten ausgegangen (Erläuterungen folgen unten):
 +  * Der Server hat die IP ''10.135.1.5/24''
 +  * Die SNMP-Community lautet ''swvcom''
 +  * Der SNMP-Trap-Handler liegt unter ''/etc/snmp/handle.py''
 +  * Das Frontend wird unter ''/var/www/swv/frontend'' ausgecheckt
 +  * Das Backend wird unter ''/var/www/swv/backend/files'' ausgecheckt
 +  * Das venv für das Backend liegt unter ''/var/www/swv/backend/venv''
 +  * Der WSGI-Socket liegt unter ''/var/www/swv/backend/socket/wsgi.sock''
 +  * Die systemd-Unit für das Backend liegt unter ''/etc/systemd/system/swv-backend.service''
 +
 +Die Einrichtung erfolgt nun so:
 +  - Software installieren:
 +    * ''apt install python3-dev default-libmysqlclient-dev libssl-dev python3 python3-venv mariadb-server nginx snmptrapd nodejs npm''
 +  - snmptrapd einrichten:
 +    - Das passende Handle-Script aus [[https://gitlab.fem-net.de/swv/swv-scripts/-/tree/main/snmptrapd|dem Repo]] nach Beispielsweise ''/etc/snmp/handle.py'' kopieren
 +      * Hier liegen aktuell Handle-Scripts für 2650er und 54er Switche vor. Falls andere Switche verwendet werden, kann mithilfe des dev-handle-Scripts nachgeschaut werden, wie die OIDs für das Linkup-Event und die Portnummer heißen und dann kann entsprechend ein Script abgewandelt werden.
 +    - Die snmptrapd.conf unter ''/etc/snmp/snmptrapd.conf'' kann dann mit unseren Beispielwerten so aussehen:
 +      * <file|/etc/snmp/snmptrapd.conf>
 +authCommunity log,execute,net swvcom
 +traphandle default /etc/snmp/handle.py
 +</file>
 +    - snmptrapd aktivieren und starten ''systemctl enable --now snmptrapd''
 +  - Installieren und Konfigurieren des Backends
 +    - Das [[https://gitlab.fem-net.de/swv/swv-backend|Backend]] nach Beispielsweise ''/var/www/swv/backend/files'' auschecken
 +    - Eine MySQL-Datenbank anlegen und mit dem Datenbank-Schema aus dem Backend-Repo befüllen und auch gleich einen MySQL-Benutzer mit Zugriff auf diese DB anlegen
 +    - Ein venv für das Backend anlegen
 +      - ''cd /var/www/swv/backend''
 +      - ''python3 -m venv venv''
 +      - ''source venv/bin/activate''
 +      - ''pip install wheel''
 +      - ''pip install -r files/requirements.txt''
 +      - ''pip install uwsgi''
 +    - Unter Beispielsweise ''/var/www/swv/backend/files/wsgi.py'' eine WSGI-Config mit folgendem Inhalt anlegen:
 +      * <file|wsgi.py>
 +from flaskapp.app import app
 +
 +if __name__ == "__main__":
 +    app.run()
 +</file>
 +    - Unter Beispielsweise ''/var/www/swv/backend/wsgi.ini'' die WSGI-INI mit folgendem Inhalt anlegen (Pfade bei Bedarf anpassen):
 +      * <file|wsgi.ini>
 +[uwsgi]
 +chdir = /var/www/swv/backend/files
 +wsgi-file = wsgi.py
 +callable = app
 +
 +master = true
 +processes = 5
 +
 +socket = /var/www/swv/backend/socket/wsgi.sock
 +chmod-socket = 660
 +vacuum = true
 +
 +die-on-term = true
 +</file>
 +    - Socket-Verzeichnis unter Beispielsweise ''/var/www/swv/backend/socket/'' anlegen
 +    - Backend-Beispielconfig kopieren und anpassen
 +      * Die Config befindet sich in diesem Beispiel unter ''/var/www/swv/backend/files/flaskapp/config''
 +      * Am Ende muss dort eine Datei namens ''secret.py'' liegen
 +      * Die ''secret.example.py'' ist das Beispiel für mehrere 1HE Switche und ''secret.example_54.py'' ist das Beispiel für 54er Switche (die Ports sollten jeweils immer so bleiben können)
 +    - Die systemd-Unit für das Backend anlegen (mit unseren Beispielpfaden):
 +      * <file|/etc/systemd/system/swv-backend.service>
 +[Unit]
 +Description=uWSGI Instanz für swv-backend
 +After=network.target
 +
 +[Service]
 +User=www-data
 +Group=www-data
 +WorkingDirectory=/var/www/swv/backend/
 +Environment="PATH=/var/www/swv/backend/venv/bin"
 +ExecStart=/var/www/swv/backend/venv/bin/uwsgi --ini wsgi.ini --enable-threads
 +
 +[Install]
 +WantedBy=multi-user.target
 +</file>
 +    - Die systemd-Unit aktivieren und starten:
 +      * ''systemctl enable --now swv-backend''
 +  - Installieren und Konfigurieren des Frontends
 +    - Das [[https://gitlab.fem-net.de/swv/swv-frontend|Frontend]] nach Beispielsweise ''/var/www/swv/frontend'' auschecken 
 +    - Im ausgecheckten Repo unter ''src/config.ts'' die ''BASE_URL'' in unserem Beispiel auf ''http://10.135.1.5'' abändern
 +    - Frontend bauen:
 +      * ''cd /var/www/swv/frontend''
 +      * ''npm i''
 +      * ''npm run build''
 +  - Den nginx Konfigurieren:
 +    * Erneut mit unseren Beispielwerten:
 +    * <file|/etc/nginx/sites-available/default>
 +server {
 +    listen 80 default_server;
 +    listen [::]:80 default_server;
 +    root /var/www/swv/frontend/build;
 +
 +    index index.html index.htm index.nginx-debian.html;
 +
 +    server_name _;
 +
 +    location / {
 +        try_files $uri $uri/ =404;
 +    }
 +    
 +    location /api/ {
 +        uwsgi_pass unix:///var/www/swv/backend/socket/wsgi.sock;
 +        include uwsgi_params;
 +    }
 +}
 +</file>
 +  - Den nginx reloaden:
 +    * ''systemctl reload nginx''
 +  - Fertig (Wenn alles geklappt hat, dann sollte das Spiel nun von beiden Laptops aus unter ''http://10.135.1.5/'' erreichbar sein)
 +  - Wenn eine Runde fertig ist, kann das Spiel händisch durch das aufrufen von ''http://10.135.1.5/api/reset'' zurückgesetzt werden (von einem beliebigen Laptop aus)
  
  • public/sonstiges/unterhaltung/spiele/switche_versenken.1632015838.txt.gz
  • Zuletzt geändert: 2021/09/19 03:43
  • von netali