Anleitung Teil 3: RPi zum LEMP-Server machen
LEMP steht für Linux nginX MariaDB PHP - als Alternative zum LAMP ( Linux Apache2 MariaDB PHP) (vorher Stand das M für MySQL).
nginX ist aber kleiner und somit besser geeignet.
Das Linux haben wir schon, fehlt nur noch nginX, MariaDB und PHP.
Ich gehe jetzt davon aus, dass ihr Euch via PuTTY (o.ä.) auf dem RPi angemeldet habt. (Durch das erste "sudo bash" könnt Ihr Euch das "sudo" bei den anderen Befehlen sparen)
sudo bash apt-get update apt-get dist-upgrade apt-get upgrade apt install apt-transport-https lsb-release ca-certificates wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg echo "deb https://packages.sury.org/php/stretch main" > /etc/apt/sources.list.d/raspi.list apt-get update apt-get upgrade apt-get install php7.2 apt-get install php7.2 php7.2-cli php7.2-common php7.2-json php7.2-opcache php7.2-mysql php7.2-zip php7.2-fpm php7.2-mbstringein kleiner Test, ob alles funktioniert hat:
php -v (sollte ungefähr folgendes ergben:) PHP 7.2.9-1 (cli) (built: Aug 19 2018 06:56:13) ( NTS ) Copyright (c) 1997-2018 The PHP Group Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies with Zend OPcache v7.2.9-1, Copyright (c) 1999-2018, by Zend Technologies
weiter geht's mit nginX
apt-get install nginx
Anpassen unserer PHP-Umgebung:
sudo nano /etc/php/7.2/fpm/conf.d/90-pi-custom.ini
und folgende Zeilen einfügen:
cgi.fix_pathinfo=0 upload_max_filesize=64m post_max_size=64m max_execution_time=600
außerdem muss noch die Datei /etc/nginx/sites-available/default angepasst werden
nano /etc/nginx/sites-available/default
sucht nach # pass PHP scripts to FastCGI server und ENTFERNT dort - wo ich hier die * eingesetzt habe - die vorhandenen #'s (der * kommt da NATÜRLICH NICHT hin. Achtet auch darauf, dass Ihr php7.0 in php7.2 ändert):
# pass PHP scripts to FastCGI server # * location ~ \.php$ { * include snippets/fastcgi-php.conf; # # # With php-fpm (or other unix sockets): * fastcgi_pass unix:/var/run/php/php7.2-fpm.sock; # # With php-cgi (or other tcp sockets): # fastcgi_pass 127.0.0.1:9000; * }
und weiter geht's mit MariaDB, also installieren, dann den SQL-Server sicher machen.
sudo apt-get install mysql-server mysql_secure_installation
Bei der Passwort-Abfrage einfach mit <Enter> bestätigen, dann ein root-Kennwort eingeben (merken, oder nehmt einfach noplli ;-)
Alle weiteren Abfragen mit <Enter> bestätigen.
Optional: phpMyAdmin installieren
phpMyAdmin wird egtl. nicht benötigt, wenn die Software ersteinmal läuft, aber der Vollständigkeit halberschreibe ich es auf (Achtung, absolute Short-Version):
Hinweis: es kann sein, dass phpMyAdmin einen Fehler auswirft, dann muss gepatched werden .
sudo apt install phpmyadmin
Auf die folgende Frage, ob Ihr [ ] apache bzw. [ ] lighttpd vorkonfigurieren wollt, überspringt Ihr, denn wir haben nginx.
Dann auf die Frage "Configure database for phpmyadmin with dbconfig-common?" antwortet Ihr mit Yes.
sudo nano /etc/nginx/snippets/phpmyadmin.conf
und kopiert folgendes da rein:
location /phpmyadmin { root /usr/share/; index index.php index.html index.htm; location ~ ^/phpmyadmin/(.+\.php)$ { try_files $uri =404; root /usr/share/; fastcgi_pass unix:/run/php/php7.2-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include /etc/nginx/fastcgi_params; } location ~* ^/phpmyadmin/(.+\.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt))$ { root /usr/share/; } }
jetzt noch einmal die nginx default-Datei anpassen:
sudo nano /etc/nginx/sites-available/default
server { listen 80; listen [::]:80; root /var/www/html; index index.php index.html index.htm; server_name noplli; client_max_body_size 100M; autoindex off; location / { try_files $uri $uri/ /index.php?$query_string; } location ~ \.php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/var/run/php/php7.2-fpm.sock; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } include snippets/phpmyadmin.conf; }und noch dem User root den Zugang zum phpmyadmin ermöglichen:
sudo mysql -u root > use mysql; > update user set plugin='' where User='root'; > flush privileges; > exit sudo ln -s /etc/nginx/sites-available/example.com.conf /etc/nginx/sites-enabled/ sudo systemctl restart mariadb.service sudo systemctl restart nginx.service sudo systemctl restart php7.2-fpm.service
Dann noch einmal ein freundlicher reboot - und wir sind mit Teil 3 fertig.