streaming-kamera/raspi_setup.md
2021-03-03 15:06:33 +01:00

2.7 KiB

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

Konfiguration anpassen:

sudo raspi-config
  • Zeitzone anpassen
  • Passwort ändern
  • Spracheinstellungen ändern

Zusatzprogramme installieren

sudo apt install mc git zbar-tools build-essential python-dev nginx

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