Skip to content

Instantly share code, notes, and snippets.

@petergloor
Created June 18, 2018 19:25
Show Gist options
  • Select an option

  • Save petergloor/a24bdf1c63c8c0c6d1c2a9b82e8f7b92 to your computer and use it in GitHub Desktop.

Select an option

Save petergloor/a24bdf1c63c8c0c6d1c2a9b82e8f7b92 to your computer and use it in GitHub Desktop.

Revisions

  1. petergloor created this gist Jun 18, 2018.
    110 changes: 110 additions & 0 deletions nginx-php-install.sh
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,110 @@
    #!/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