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-mbstring
ein 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.