169 lines
3.0 KiB
Markdown
169 lines
3.0 KiB
Markdown
# 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
|
|
``` |