Inhalt
In diesem Artikel wird beschrieben, wie ein Basic Setup für den Raspberry Pi vorzunehmen ist um eine Basis für die meisten Projekte zu schaffen. Von der Vorbereitung der SD-Karte bis zum Betreiben des NGINX Webservers oder der Neopixel-Library.
Basic Raspberry Setup
1. Raspbian Stretch
Raspbian Stretch herunterladen: Raspberry.org
2. SD-Karte flashen
SD-Karte mit der aktuellen Version von Raspbian Stretch flashen
3. Headless Setup
Die folgende Datei herunterladen und dessen Inhalte in das Root-Verzeichnis der Speicherkarte legen:
Datei Download (raspberry-headless.zip)
country=CH
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
network={
ssid="Zeltfunk"
psk="D8317iegbTfuz!"
id_str="home"
}
4. SSH Connection
SD-Karte in Raspberry einlegen und booten. IP-Adresse ausfindig machen und per SSH auf den Raspberry connecten.
ssh pi@10.0.0.xxx
5. Raspi Config
Raspi-Config aufrufen und Einstellungen für Dateisystem, Hostname, Passwort, Netzwerk, Update vornehmen.
- Enlarge Filesystem
- Reboot
- Hostname setzen
- Passwort ändern
- “Wait for Network at boot”
- Update raspi-config
- Reboot
6. Allgemeine Updates
Um das System vorzubereiten sollten ein paar allgemeine Updates durchgeführt werden um alle Pakete auf den aktuellsten Stand zu bringen und nachfolgende Probleme zu vermeiden.
sudo apt-get dist-upgrade
sudo apt-get update
sudo apt-get upgrade
7. Allgemeine Paket-Installation
Als nächstes werden ein paar Pakete installiert, welche immer von Nutzen sein werden und in den meisten Projekten benötigt werden:
sudo apt-get install build-essential python-dev python-setuptools git swig i2c-tools
8. Python Version 3.x
Damit mit aktuellsten Voraussetzungen entwickelt wird, sollte der Default der Python-Version auf 3.x geändert werden. Hierzu müssen lediglich die beiden folgenden Befehle ausgeführt werden:
sudo update-alternatives --install /usr/bin/python python /usr/bin/python2.7 1
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.5 2
9. NGINX Installation
NGINX ist eine Webserver-Applikation, welche die Grundfunktionalitäten für den Webserver bereitstellt. Diese wird über folgende Befehle installiert und dann gestartet.
sudo apt-get install nginx
sudo /etc/init.de/nginx start
10. PHP 7 installieren
Um PHP (in Version 7.x) zu installieren wird folgender Befehl ausgeführt:
sudo apt-get install php-fpm
11. MySQL (Server) installieren
MySQL ist für die Datenbanken zuständig. MySQL Datenbanken können erst angelegt und verwendet werden, wenn der MySQL Server installiert ist. Dies wird über folgenden Befehl erreicht:
sudo apt-get install mysql-server
12. MySQL Konfiguration
Für MySQL wird als erstes eine dem Projekt entsprechende Datenbank erstellt, welche danach vom Web-Interface und von der Python-Applikation angesteuert wird. Hierfür wird MySQl im Terminal gestartet:
sudo mysql -u root
Um eine neue Datenbank zu erstellen, wird folgender Befehl genutzt. Als Datenbank-Name wird der Projektname in lowercase verwendet:
CREATE DATABASE aquapi;
Für die gerade erstellte Datenbank wird ein Benutzer mit Passwort erstellt und entsprechende Zugangsberechtigungen vergeben. Hierbei werden username, dbname und password entsprechend ersetzt.
CREATE OR REPLACE USER 'username'@'%' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON dbname.* TO 'username'@'%' IDENTIFIED BY 'password';
FLUSH PRIVILEGES;
Zuletzt muss in der Config noch die bind-address eingetragen werden:
sudo nano /etc/mysql/my.cnf
Hier werden dann am Ende der Datei die folgenden zwei Zeilen eingetragen:
[mysqld]
bind-address = 0.0.0.0
Danach: Neustarten des MySQL service via:
sudo systemctl restart mysql.service
13. Github-Projekt klonen
Als nächstes kann das Beispiel-Projekt von Github geklont werden um die wichtigsten und initialen Files für ein Projekt auf dem Raspberry zur Verfügung zu haben. Hierbei wird target durch das entsprechende Ziel-Verzeichnis ersetzt.
git clone https://github.com/Tetrikus/BasePi /home/pi/target
Da das Projekt auf Github als “privat” gelistet ist, wird für den Klon-Vorgang ein Benutzername und ein Passwort benötigt.
14. NGINX Konfiguration
Die NGINX-Config ist im Applikations-Verzeichnis des Base-Projekts enthalten (/web/nginx.conf). Dieses muss allerdings zuerst noch angepasst werden:
- Zeile 7: Korrekten Pfad zum /web Verzeichnis einfügen
- Zeile 11: Sinnvollen Servernamen verwenden
Im NGINX-Verzeichnis (/etc/nginx/sites-enabled/) gibt es bereits eine Default-Config, welche mit folgendem Befehl überschrieben wird – hierbei muss projectpath mit dem korrekten Namen des Verzeichnisses überschrieben werden:
sudo cp -r /home/pi/projectpath/web/nginx.conf /etc/nginx/sites-enabled/default
Die Ursprungsdatei im /web Verzeichnis sollte gelöscht werden, wenn sie nicht mehr weiter benötigt wird. Folgendes ist ein Backup der Default-Konfiguration:
# Default NGINX server configuration
#
server {
listen 80 default_server;
listen [::]:80 default_server;
root /home/pi/projectpath/web;
index index.php index.html index.htm index.nginx-debian.html;
server_name aqua.pi;
location / {
try_files $uri $uri/ /index.php?$args;
}
# pass PHP scripts to FastCGI server
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
}
location ~ /\.ht {
deny all;
}
}
Nachdem die Konfiguration entsprechend überschrieben wurde, muss diese neu geladen werden, damit nginx mitbekommt, dass sich die Config geändert hat:
sudo /etc/init.d/nginx reload
15. MySQL für PHP (php-mysql)
Damit PHP mit MySQL kommunizieren kann, wird ein weiteres Package benötigt. Dieses kann mittels folgendem Befehl installiert werden:
sudo apt-get install php-mysql
16. MySQL für Python (PyMySQL)
Damit Python ebenfalls mit MySQL kommunizieren kann, wird folgendes Package benötigt:
pip install pymysql
17. Python Requests
Requests Package für Web-Requests von PHP und Python
sudo apt-get install python-requests requests
18. NeoPixel Installation
Die Neopixel Library wird über folgenden Befehl installiert:
sudo pip install rpi_ws281x