# Raspberry Pi ## Raspbian lite installieren Auf der vorbereiteten SD-Karte muss im Laufwerk "boot" eine leere Datei `ssh` angelegt werden, damit der SSH-Zugang freigeschaltet wird. ### Nach dem ersten Login: ``` sudo apt update sudo apt upgrade ``` ## Zusatzprogramme installieren ``` sudo apt install mc git zbar-tools build-essential python-dev nginx pigpio python3-pip ``` ## gpio-server aktivieren Service Datei anpassen `/lib/systemd/system/pigpiod.service.d/public.conf`: ``` [Service] ExecStart= ExecStart=/usr/bin/pigpiod -s1 ``` Dienst aktivieren/starten ``` sudo systemctl daemon-reload sudo systemctl enable pigpiod sudo systemctl start pigpiod ``` ## Konfiguration anpassen: ``` sudo raspi-config ``` - Zeitzone anpassen - Passwort ändern - Spracheinstellungen ändern - remote gpio erlauben ## Benutzer anlegen Damit der Benutzer auch auf die GPIOs zugreifen kann, muss er zur Gruppe `pgio` hinzugefügt werden. ``` adduser kamera ... sudo usermod -a -G gpio kamera ``` ## virtuelle Python Umgebung einrichten ``` sudo apt install python3-venv cd /opt sudo python3 -m venv kamera sudo chown -R kamera:kamera /opt/kamera/ ``` ### virtuelle Umgebung aktivieren ``` su kamera cd /opt/kamera source bin/activate ``` Wenn alles geklappt hat, befindet man sich jetzt in der virtuellen Python Umgebung und kann dort die benötigten Module installieren ``` pip install rpi.gpio flask uwsgi deactivate ``` ### streaming-kamera klonen ``` cd /opt/kamera git clone https://git.jgz-energie.net/ENERGIE/streaming-kamera.git ``` Außerhalb der virtuellen Umgebung kann das Programm mit `/opt/kamera/bin/python /opt/kamera/streaming-kamera/kamera.py gestartet` werden. Der uWSGI-Server kann mit `/opt/kamera/bin/uwsgi --socket 0.0.0.0:8000 --protocol=http -w server:first_app`, wenn man sich in dem Arbeitsverzeichnis (/opt/kamera/streaming-kamera) befindet. ### Service für uWSGI anlegen /opt/kamera/uwsgi_config.ini ``` [uwsgi] chdir = /opt/kamera/streaming-kamera module = kamera_server:kamera_server master = true processes = 1 threads = 2 uid = www-data gid = www-data socket = /tmp/sample_app.sock chmod-socket = 664 vacuum = true die-on-term = true ``` /etc/systemd/system/uwsgi.service ``` [Unit] Description=uWSGI Service After=network.target [Service] User=www-data Group=www-data WorkingDirectory=/opt/kamera/streaming-kamera/ ExecStart=/opt/kamera/bin/uwsgi --ini /opt/kamera/uwsgi_config.ini [Install] WantedBy=multi-user.target ``` Dienst starten ``` sudo systemctl daemon-reload sudo systemctl start uwsgi.service sudo systemctl status uwsgi.service sudo systemctl enable uwsgi.service ``` ### nginx anpassen ``` sudo rm /etc/nginx/sites-enabled/default ``` /etc/nginx/sites-available/kamera_server ``` server { listen 80; server_name localhost; location / { try_files $uri @app; } location @app { include uwsgi_params; uwsgi_pass unix:/tmp/kamera_server.sock; } } ``` Konfiguration aktivieren ``` sudo ln -s /etc/nginx/sites-available/kamera_server /etc/nginx/sites-enabled sudo systemctl restart nginx ```