#!/bin/bash # # NGINX/PHP7 Installer für Raspbian Stretch # Voraussetzungen: # 1) Fertig konfigurierte Neuinstallation von Raspbian Stretch Version April 2018. # 2) Ausführung des Scripts durch den User pi. # 3) Wo http://raspberrypi erwähnt wird, gilt das nur, wenn der Raspberry Pi unter diesem Namen im Netzwerk ereichbar ist. # #--------------------- # System aktualisieren sudo apt update -y sudo apt upgrade -y # PHP7.0 installieren. # Hinweis: in späteren Raspbian Releases muss dies ggf. durch eine höhere Version entsprechend angepasst werden. sudo apt install -y php7.0 php7.0-curl php7.0-gd php7.0-fpm php7.0-cli php7.0-opcache php7.0-mbstring php7.0-xml php7.0-zip # NGINX installieren sudo apt install -y nginx-full # NGINX und PHP7 FastCGI Process Manager mit den Defaults als Service hinzufügen. # Danach ist NGINX mit der "Welcome to nginx!" aus einem Webbrowser mit http://raspberrypi bereits ansprechbar. sudo update-rc.d nginx defaults sudo update-rc.d php7.0-fpm defaults # Kopie der Default Server Konfiguration in /etc/nginx/sites-available/default erstellen. # Die Kopie der Datei erhält eine Endung mit der aktuellen Uhrzeit in Form .YYYYMMTT_HHMM. # z.B /etc/nginx/sites-available/default.20180618_2010 sudo cp /etc/nginx/sites-available/default /etc/nginx/sites-available/default.$(date +%Y%m%d_%H%M) # Datei mit Default Server Konfiguration in /etc/nginx/sites-available/default anpassen. # Bei Ausführung dieses Scripts wird die bestehende Datei komplett überschrieben und die # meisten Kommentare werden entfernt. Dies macht die Datei lesbarer. # Bei manueller Anpassung mit einem Editor ist darauf zu achten, dass die nachstehenden # Werte zwischen "EOF und EOF korrekt übernommen werden. Es ist insbesondere auf eine # korrekte Verwendung der Strichpunkte und paarweise geschweiften Klammern zu achten. sudo tee /etc/nginx/sites-available/default &>/dev/null << "EOF" # Default server configuration server { listen 80 default_server; listen [::]:80 default_server; root /var/www/public; index index.html index.htm index.php default.html; server_name _; location / { # First attempt to serve request as file, then # as directory, then fall back to displaying a 404. try_files $uri $uri/ =404; } # pass the PHP scripts to FastCGI server location ~ \.php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/run/php/php7.0-fpm.sock; } # deny access to .htaccess files, should an Apache document root conflict with nginx location ~ /\.ht { deny all; } } EOF # Nebst dem bestehenden html-Verzeichnis weitere Verzeichnisse einrichten. # Je nach Projekt möchten wir mehrere virtuelle Hosts oder ein privates # Verzeichnis sowie Verzeichnisse für Logs oder Backups anlegen. Der$ # Befehl dazu könnte dann beispielsweise wie folgt aussehen: # sudo mkdir -p /var/www/{public,private,logs,backup,vhosts} # Wir haben in der Default Konfiguration /var/www/public festgelegt und # werden diese für unsere Installation auch nutzen. Weitere Hosts und # Verzeichnisse können später immer noch konfiguriert und hinzugefügt # werden. sudo mkdir /var/www/public # In dem noch leeren Verzeichnis die Datei index.php mit dem einzeilgen # Inhalt "" (ohne Anführunszeichen) erstellen. sudo tee /var/www/public/index.php &>/dev/null << "EOF" EOF # Owner und Gruppe aller unter /var/www bestehenden Verzeichnisse und # Dateien www-data zuweisen. sudo chown -R www-data:www-data /var/www # In alle Dateien unter /var/www die Rechte für Gruppe und Owner auf rwx # und rx für alle anderen Benutzer setzen. sudo chmod -R 775 /var/www # User pi der Gruppe www-data hinzufügen sudo usermod -aG www-data pi # Dienste für NGINX und PHP7 FastCGI Process Manager neu starten sudo service nginx restart sudo service php7.0-fpm restart # Wenn alles geklappt hat erscheint jetzt im Webbrowser über die URL # http://raspberrypi die Ausgabe von phpinfo(). Sollte noch die alte # Seite erscheinen ist sich zu stellen, dass duch die Browser Cache # geleert wurde. # FERTIG! echo "Fertig!" exit