Mit Nginx laufen Webanwendungen auf eurem Raspberry Pi endlich schnell! In diesem Tutorial/Howto gehe ich auf Installation und Einrichtung dieses Webservers ein. Natürlich funktioniert auch Pi Control damit. Was nginx ist, erfährst du in diesem Beitrag.
Installation von nginx
Zum Installieren musst du folgenden Befehl mit dem Paket nginx eingeben:
sudo apt-get install nginx
Danach kann auch schon nginx gestartet werden.
/etc/init.d/nginx start
Das Stammverzeichnis für eure Dateien ist /var/www/html. Hast du noch kein PHP für deinen Webserver installiert haben, einfach diesen Befehl ausführen:
sudo apt-get install php5-fpm php5-mysql php5-curl php5-gd php-pear php5-imagick php5-imap php5-mcrypt php5-memcache php5-sqlite
Einrichtung von nginx
Die virtuall Hosts liegen in /etc/nginx/sites-available/default. Am Einfachsten ist es, ihr passt die Datei folgendermaßen an:
server { listen 80; ## Listen für IPv4; listen [::]:80 ipv6only=on; ## Listen für IPv6; server_name _; root /var/www/html; ## Euer Webserver-Root-Ordner index index.php index.html index.htm; ## Festlegung der Index-Dateien location / { try_files $uri $uri/ =404; } #error_page 404 /404.html; ## 404 Fehlerseite # Alle 50x Fehlerseiten auf Standardfile /50x.html weiterleiten error_page 500 502 503 504 /50x.html; location = /50x.html { root /var/www/html; } # PHP Skripte zu FastCGI an 127.0.0.1:9000 leiten location ~ \.php$ { fastcgi_pass unix:/var/run/php5-fpm.sock; fastcgi_index index.php; include snippets/fastcgi-php.conf; } # Verbiete Zugriff auf .htaccess Files. Macht Sinn, als ihr den root Ordner auf euren Apache Pfad gelegt habt. location ~ /\.ht { deny all; } # Zur Sicherheit aufgrund einer Nginx Sicherheitslücke, siehe: http://goo.gl/0uK8xG if ($request_uri ~ " ") { return 444; } }
Die ersten beiden listen Zeilen weißen Nginx an, auf Port 80 sowohl IPv4 als auch IPv6 Adressen anzunehmen. Hier könnt ihr natürlich auch 8080 oder jeden anderen, freien Port verwenden.
server_name _; bewirkt, dass dies ein Catchall vhost (jeder beliebige vhost wird angenommen) ist. Hier kann natürlich auch jeder andere Hostname eingetragen werden, z. B. für foo.de:
server_name foo.de;
Die Zeile index gibt an, dass in diesem root-Pfad, die index.php, index.html oder index.htm in als Index-Datei erkannt und verwendet werden, sofern vorhanden.
Für php wichtig ist der Teil location ~ \.php$ { … }. So kann auch php einwandfrei verwendet werden, wie ihr es von Apache gewohnt seid.
Zum Abschluss muss nurnoch Nginx neugeladen werden und wenn Apache2 läuft, dieser gestoppt werden.
/etc/init.d/nginx reload service apache2 stop
Denk dran, dass die Dateien nun in /usr/share/nginx/www gehören um von der URL/IP deines Raspberry Pi’s aufgerufen zu werden! 🙂
Zur Sicherheit könnt ihr auf den Fehlerseiten auch die nginx-Version ausblenden, so weiß ein möglicher Angreifer nicht, welche Version du hast, um Schwachstellen dieses Releases auszunutzen. Dazu …
vi /etc/nginx/nginx.conf
eingeben und
server_tokens off;
auskommentieren.
Hi,
könntest du vielleicht auch ein ftp Tutorial schreiben.
Wie man es einrichtet und was man beachten muss.
mfg Robert
Hallo,
musste die Zeile „fastcgi_index index.php;“ aus der default config entfernen weil die schon in snippets/fastcgi-php.conf drin ist und sonst ein Fehler beim Start kommt.
Sonst lief alles prima nach Plan 🙂
Gruß,
Thomas
Lauft leider nicht bei mir bekomm nur Fehler
nginx.service – A high performance web server and a reverse proxy server
Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enable d)
Active: failed (Result: exit-code) since Sun 2021-03-14 21:32:20 CET; 49ms ago
Docs: man:nginx(8)
Process: 6965 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
Process: 6966 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exi ted, status=1/FAILURE)
Mär 14 21:32:18 RaspberryPi nginx[6966]: nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
Mär 14 21:32:18 RaspberryPi nginx[6966]: nginx: [emerg] bind() to [::]:80 failed (98 : Address already in use)
Mär 14 21:32:19 RaspberryPi nginx[6966]: nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
Mär 14 21:32:19 RaspberryPi nginx[6966]: nginx: [emerg] bind() to [::]:80 failed (98 : Address already in use)
Mär 14 21:32:19 RaspberryPi nginx[6966]: nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
Mär 14 21:32:19 RaspberryPi nginx[6966]: nginx: [emerg] bind() to [::]:80 failed (98 : Address already in use)
Mär 14 21:32:20 RaspberryPi nginx[6966]: nginx: [emerg] still could not bind()
Mär 14 21:32:20 RaspberryPi systemd[1]: nginx.service: Control process exited, code= exited, status=1/FAILURE
Mär 14 21:32:20 RaspberryPi systemd[1]: nginx.service: Failed with result ‚exit-code ‚.
Mär 14 21:32:20 RaspberryPi systemd[1]: Failed to start A high performance web serve r and a reverse proxy server.
dpkg: Fehler beim Bearbeiten des Paketes nginx-full (–configure):
»installiertes nginx-full-Skript des Paketes post-installation«-Unterprozess gab de n Fehlerwert 1 zurück
dpkg: Abhängigkeitsprobleme verhindern Konfiguration von nginx:
nginx hängt ab von nginx-full (<< 1.14.2-2+deb10u3.1~) | nginx-light (<< 1.14.2-2+d eb10u3.1~) | nginx-extras (<= 1.14.2-2+deb10u3) | nginx-light (>= 1.14.2-2+deb1 0u3) | nginx-extras (>= 1.14.2-2+deb10u3); aber:
Paket nginx-full ist noch nicht konfiguriert.
Paket nginx-light ist nicht installiert.
Paket nginx-extras ist nicht installiert.
dpkg: Fehler beim Bearbeiten des Paketes nginx (–configure):
Abhängigkeitsprobleme – verbleibt unkonfiguriert
Trigger für systemd (241-7~deb10u6+rpi1) werden verarbeitet …
Trigger für man-db (2.8.5-2) werden verarbeitet …
Trigger für libc-bin (2.28-10+rpi1) werden verarbeitet …
Fehler traten auf beim Bearbeiten von:
nginx-full
nginx
E: Sub-process /usr/bin/dpkg returned an error code (1)