Benutzer-Werkzeuge

Webseiten-Werkzeuge


linux:nginx:lamp

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen gezeigt.

Link zu der Vergleichsansicht

Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung
linux:nginx:lamp [28.12.2017 00:28]
127.0.0.1 Externe Bearbeitung
linux:nginx:lamp [22.07.2018 23:23] (aktuell)
Gurkengewuerz
Zeile 1: Zeile 1:
-## LAMP/ LNMP Installation+## LNMP Installation
  
-In meinem Fall werde ich den LNMP Server installieren,​ da dieser auf einem bereits ausgereizten System besser und stabiler läuft.+#### Warum [L]NMP
  
 +Ich persönlich verwende mittlerweile nur noch NGINX als Webserver, da dieser in meinen Augen deutlich besser zu konfigurieren ist und auch deutlich stabiler läuft. Des Weiteren ist NGINX vielseitiger und verwendet deutlich modernere Technologien. ​
  
-### NGINX Repo Updaten +#### PHP Version
-**Source**: https://​packages.sury.org/​nginx-mainline/​README.txt+
  
-    #​!/​bin/​bash +Wenn man auf einer modernen Distro arbeitet, sollte es eigentlich keine Probleme machen, eine aktuelle PHP Version zu verwendenDebian 9 (*Stretch*hat in den eigenen Repositories PHP 7.1 im Angebot.
-    # To add this repository please do: +
-     +
-    if [ "​$(whoami)"​ != "​root"​ ]; then +
-        SUDO=sudo +
-    fi +
-     +
-    ${SUDO} apt-get install apt-transport-https lsb-release ca-certificates +
-    ${SUDO} wget -O /​etc/​apt/​trusted.gpg.d/​nginx-mainline.gpg https://​packages.sury.org/​nginx-mainline/​apt.gpg +
-    ${SUDO} sh -c 'echo "deb https://​packages.sury.org/​nginx-mainline/​ $(lsb_release -scmain" > /​etc/​apt/​sources.list.d/​nginx-mainline.list'​ +
-    ${SUDO} apt-get update+
  
 +Verwendet man doch eine ältere Distro, möchte aber eine aktuelle PHP Version, oder eventuell eine noch aktuellere, als die, die im Repository angeboten wird, so sollte man auf das Sury Repository wechseln.
 +Für weitere Infos: https://​packages.sury.org/​php/​README.txt
  
-### Paketinstallation:​+Für Raspbian Stretch ist auch schon PHP 7.1 verfügbar! Möchte man dennoch 7.2 haben, kann man auch hier auf externe Repos zurückgreifen.
  
-    apt-get install mysql-server nginx php5-fpm+#### NGINX Version
  
-#### Alternative PHP5 Module:+Bei der NGINX Version kann man auf drei Versionen zurück greifen.
  
-    php5-mysql php5-curl php5-gd php5-intl php-pear php5-imagick php5-imap php5-mcrypt php5-memcache php5-ming php5-ps php5-pspell php5-recode php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xsl+Zum einen die Versionen aus dem Distro Repository. Diese sind meistens sehr alte Stable Versionen.
  
-### Konfiguration:+Als Alternativen bieten sich die Stable bzw. Mainline Versionen von NGINX selber an. Hier muss man selber wissen, ob man lieber auf Stabilität oder auf neuste Funktionen Wert setzt. 
 +Eine Ausführliche Anleitung zum Einrichten bietet NGINX bei sich auf der Seitehttp://​nginx.org/​en/​linux_packages.html
  
-Während der Installation wird für MySQL ein Passwort vergeben, dies sollte nicht vergessen werden, da es für den Root Zugriff des MySQL Servers dient.+---
  
-### Optionales Rewrite +### Installation
-Sollte der NGINX Server von außen bspw. per 8081 erreichbar sein, aber intern auf 80 geroutet werden, so geht dies spätestens bei einem rewrite schief. ​  +
-Dieser findet schon statt, wenn man keinen Slash am Ende eines Verzeichnisses anfügt.+
  
-Als Abhilfe dafür gibt es folgende Rewriterule.  ​ +``` 
-**Achtung** falls kein http_host gesendet wird, funktioniert dieser Rewrite nicht!+apt-get install php{version}-fpm nginx mariadb-server 
 +```
  
-    if (-d $request_filename) { 
-            rewrite [^/]$ $scheme://​$http_host$uri/​ permanent; 
-    } 
  
---- 
  
-## PHP5 +**HINWEISE** 
-### Paket-Installation+Bei der Installation von *php-fpm* werden alle wichtigen Module mitgeladen wie bspw. *php-cli*. Alle weiteren müssen nachinstalliert werden. Eine Auflistung findet man mit dem Befehl *apt-cache search php{version}-* 
 +Zur Installation ​von NGINX bitte nicht *nginx-full* o.ä, verwenden. 
 +Je nach Version der Distro, ist *mariadb-server* noch nicht vorhanden. In Debian 9 wurde MySQL mit MariaDB ersetzt. *mysql-server* ist seit dem ein Alias für *mariadb-server*.
  
-    apt-get install nginx php5-fpm+Weitere Hinweise zur MariaDB Installation sind [hier](/​doku.php?​id=linux:​script_sammlung:​mysql) auffindbar 
 + 
 +---
  
 ### Konfiguration ### Konfiguration
-Der Server sollte nun im Browser erreichbar sein. Um allerdings PHP zur Verfügung zu stellen muss die /​etc/​nginx/​sites-available/​default Konfiguration bearbeitet werden. 
  
-    server { +**WICHTIG** Je nach PHP Version kann es sein, dass euer UNIX Socket Pfad sich geändert hatBitte achtet darauf bei der Konfiguration und ersetzt diesen
-        listen 80 default_server;​ +Herrausfinden,​ wo der Socket liegt kann man mit 
-        listen [::]:80 default_server;​ +
-     +
-        root /​var/​www/​html;​ +
-        # index.php hinzufügen +
-        index index.php index.html index.htm index.nginx-debian.html;​ +
-        server_name _; +
-     +
-        location / { +
-                try_files $uri $uri/ =404; +
-        } +
-     +
-        # PHP Datein müssen interpretiert werden +
-        location ~ \.php$ { +
-                try_files $uri =404; +
-                fastcgi_pass unix:/​var/​run/​php5-fpm.sock; +
-                fastcgi_index index.php;​ +
-                fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;​ +
-                include fastcgi_params;​ +
-        } +
-    }+
  
----+```bash 
 +find /​var/​run/ ​-name '​php*.sock'​ 
 +```
  
-## PHP7 +Außerdem kann sich je nach Konfiguration von NGINX die Konfigurationsdatei an zwei verschiedenen Orten befinden. Entweder in */​etc/​nginx/​conf.d/​oder in */etc/nginx/sites-enabled*
-### Debian +
-**Source**: https://packages.sury.org/php/README.txt+
  
-    ​#!/​bin/​bash +#### Allgemeine Konfiguration
-    ​To add this repository please do: +
-     +
-    if [ "​$(whoami)"​ != "​root"​ ]; then +
-        SUDO=sudo +
-    fi +
-     +
-    ${SUDO} apt-get install apt-transport-https lsb-release ca-certificates +
-    ${SUDO} wget -O /​etc/​apt/​trusted.gpg.d/​php.gpg https://​packages.sury.org/​php/​apt.gpg +
-    ${SUDO} sh -c 'echo "deb https://​packages.sury.org/​php/​ $(lsb_release -sc) main" > /​etc/​apt/​sources.list.d/​php.list'​ +
-    ${SUDO} apt-get update+
  
-### Raspberry PI +```nginx 
-**Source**https://​www.randombrick.de/​raspberry-pi-nginx-und-php-installieren-und-einrichten/ ​  +server { 
-Raspbian basiert auf Debian Jessie und wird mit PHP 5.6 ausgeliefert. Das ist soweit auch gut aber zwischenzeitlich ist mit PHP 7.0 eine bessere Option auf dem Markt. PHP 7.0 wurde im Dezember 2015 vorgestellt und bringt erhebliche Verbesserungen in den Bereichen Leistung, Sprache und nutzt dabei deutlich weniger Speicher. Optimal für den Raspberry Pi.+    listen 80 default_server;​ 
 +    listen [::]:80 default_server;​
  
-Damit PHP 7.0 auf dem Raspberry Pi installiert werden kann, wird Zugriff auf die Entwicklerversion von Raspbian benötigtDiese trägt den Codename stretchDazu ist die Datei sources.list abzuändern welche von Aptitude (apt-get) genutzt wird.+    root /​var/​www/​html;​ 
 +    index index.php index.html index.htm index.nginx-debian.html; 
 +    server_name _;
  
-    ​sudo nano /etc/apt/​sources.list+    ​location ​
 +            try_files $uri $uri=404; 
 +    }
  
-Unter der ersten Zeile die das Wort jessie enthält, ist folgende Zeile einzufügen:+    location ~ \.php$ { 
 +            try_files $uri =404; 
 +            fastcgi_pass unix:/​var/​run/​php/​php7.1-fpm.sock;​ 
 +            fastcgi_index index.php;​ 
 +            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;​ 
 +            include fastcgi_params;​ 
 +    } 
 +
 +```
  
-    deb http://​mirrordirector.raspbian.org/​raspbian/​ stretch main contrib non-free rpi +#### SSL
-     +
-Gespeichert wird mit Strg + X, Y und dann Enter drücken.+
  
-Damit würden alle Installationen ​und Updates automatisch die neusten verfügbaren Dateien aus dem stretch Release ziehenDiese sind jedoch nicht immer 100 Prozent stabilDamit zukünftig keine instabilen Pakete installiert werden, werden automatisch alle Pakete gezwungen, das jessie Release mit einer höheren Priorität zu wählen.+```nginx 
 +# HTTP Server für HTTP -> HTTPS (gilt für mc8051.de, www.mc8051.de ​und wiki.mc8051.de) 
 +server { 
 +    listen 80 default_server;​ 
 +    listen [::]:80 default_server;​ 
 +    server_name mc8051.de www.mc8051.de wiki.mc8051.de; 
 +    return 302 https://​$host$request_uri;​ 
 +}
  
-    sudo nano /​etc/​apt/​preferences+# HTTPS Server horcht auf mc8051.de sowie www.mc8051.de 
 +server { 
 +    listen 443 ssl http2; 
 +    listen [::]:443 ssl http2;
  
-Hier ist folgendes einzufügen:​+    root /​var/​www/​html/;​ 
 +    index index.php index.html index.htm;​ 
 +    server_name mc8051.de www.mc8051.de;​
  
-    ​Package: * +    ​ssl_certificate /​etc/​letsencrypt/​live/​mc8051.de/​fullchain.pem;​ 
-    ​Pin: release n=jessie +    ​ssl_certificate_key /​etc/​letsencrypt/​live/​mc8051.de/​privkey.pem;​ 
-    ​Pin-Priority: 600+    ​ 
 +    add_header Strict-Transport-Security "​max-age=31536000;"​ always;
  
-Gespeichert wird mit Strg + X, Y und dann Enter drücken.+    location / { 
 +            try_files $uri $uri/ =404; 
 +    }
  
-Anschließend werden die Updates noch einmal ausgeführt mit:+    location ~ \.php$ { 
 +            try_files $uri =404; 
 +            fastcgi_pass unix:/​var/​run/​php/​php7.1-fpm.sock;​ 
 +            fastcgi_index index.php;​ 
 +            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;​ 
 +            include fastcgi_params;​ 
 +    } 
 +
 +```
  
-    sudo apt-get update +#### Proxy
-     +
-Jetzt erfolgt die Installation von PHP 7.0 auf dem Raspberry Pi aus dem stretch Release inklusive aller PHP-Pakete.+
  
-    sudo apt-get install -t stretch 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 
 +server { 
 +    listen 443 ssl http2; 
 +    listen [::]:443 ssl http2; 
 +    server_name wiki.mc8051.de;
  
-Mit nachfolgendem Befehl lässt sich die Funktion von PHP testen:+    ssl_certificate /​etc/​letsencrypt/​live/​wiki.mc8051.de/​fullchain.pem;​ 
 +    ssl_certificate_key /​etc/​letsencrypt/​live/​wiki.mc8051.de/​privkey.pem;​
  
-    ​php -v+    ​add_header Strict-Transport-Security "​max-age=31536000"​ always;
  
-Anschließend sollte folgende, oder ähnliche Ausgabe erscheinen:+    root /​var/​www/​html/;​ 
 +    index index.html index.php index.htm;
  
-  PHP 7.0.7-4 (cli) ( NTS ) +    # Upload Limit dem Externen Server überlassen 
-  Copyright (c) 1997-2016 The PHP Group +    ​client_max_body_size ​0;
-  Zend Engine v3.0.0, Copyright (c) 1998-2016 Zend Technologies +
-  with Zend OPcache v7.0.6-dev, Copyright (c) 1999-2016, by Zend Technologies+
  
-Fertig. PHP 7.0 wurde erfolgreich auf dem Raspberry Pi installiert.+    ## Definition Reverse Proxy ## 
 +    location / { 
 +        proxy_pass http://<​ip>​[:​port]/;​ 
 +        proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504; 
 +        proxy_redirect off; 
 +        proxy_buffering off; 
 +        proxy_set_header Host $host; 
 +        proxy_set_header X-Real-IP $remote_addr;​ 
 +        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;​ 
 +    } 
 +
 +```
  
-Wie bei PHP 7.0 gibt es im stretch Release eine neue und verbesserte Version mit der Nummer 1.9. Diese wird wie folgt installiert:​ +#### Rewrite ​bei Port Forwarding
-     +
-    sudo apt-get install -t stretch nginx+
  
-**Source**: https://www.randombrick.de/​raspberry-pi-nginx-und-php-installieren-und-einrichten/​+Sollte der NGINX Server von außen bspwper 8081 erreichbar sein, aber intern auf 80 geroutet werden, so geht dies spätestens bei einem rewrite schief. ​  
 +Dieser findet schon statt, wenn man keinen Slash am Ende eines Verzeichnisses anfügt.
  
-    server { +Als Abhilfe dafür gibt es folgende Rewriterule  
-        listen 80 default_server;​ +**Achtung** falls kein http_host gesendet wird, funktioniert dieser Rewrite nicht! 
-        listen [::]:80 default_server;​ + 
-     +```nginx 
-        root /​var/​www/​html;​ +if (-d $request_filename) ​
-        # index.php hinzufügen +        ​rewrite [^/]$ $scheme://$http_host$uri/ permanent
-        index index.php index.html index.htm; +
-        ​server_name _; +```
-     +
-        ​location / +
-                ​try_files $uri $uri=404; +
-        } +
-     +
-        # PHP Datein müssen interpretiert werden +
-        location ~ \.php+
-                try_files ​$uri =404; +
-                fastcgi_pass unix:/var/run/​php/​php7.0-fpm.sock;​ +
-                fastcgi_index index.php;​ +
-                fastcgi_param SCRIPT_FILENAME ​$document_root$fastcgi_script_name+
-                ​include fastcgi_params;​ +
-        ​+
-    }+
linux/nginx/lamp.txt · Zuletzt geändert: 22.07.2018 23:23 von Gurkengewuerz