Created
June 18, 2018 19:25
-
-
Save petergloor/a24bdf1c63c8c0c6d1c2a9b82e8f7b92 to your computer and use it in GitHub Desktop.
NGINX/PHP7 Installer für Raspberry Pi Stretch
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/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