Skip to content

Instantly share code, notes, and snippets.

@petergloor
Created June 18, 2018 19:25
Show Gist options
  • Save petergloor/a24bdf1c63c8c0c6d1c2a9b82e8f7b92 to your computer and use it in GitHub Desktop.
Save petergloor/a24bdf1c63c8c0c6d1c2a9b82e8f7b92 to your computer and use it in GitHub Desktop.
NGINX/PHP7 Installer für Raspberry Pi Stretch
#!/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 "<?php phpinfo(); ?>" (ohne Anführunszeichen) erstellen.
sudo tee /var/www/public/index.php &>/dev/null << "EOF"
<?php phpinfo(); ?>
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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment