GNU/Linux >> LINUX-Kenntnisse >  >> Debian

So installieren Sie Nginx mit PHP + MySQL (LEMP) unter Debian 9

Dieses Tutorial zeigt Ihnen die Installation des Nginx-Webservers auf Debian 9 (Stretch). Nginx (ausgesprochen „Engine x“) ist ein kostenloser, hochleistungsfähiger Open-Source-HTTP-Server. Nginx ist bekannt für seine Stabilität, seinen umfangreichen Funktionsumfang, seine einfache Konfiguration und seinen geringen Ressourcenverbrauch. Dieses Tutorial zeigt die Installation von Nginx mit PHP-Unterstützung (über PHP-FPM) und MySQL und MariaDB. Dieser Aufbau wird oft als LEMP =L bezeichnet inux + nginx (ausgesprochen "e Motor x") + M ySQL + P PS) .

Vorbemerkung

In diesem Tutorial verwende ich den Hostnamen server1.example.com mit der IP-Adresse 192.168.1.100. Diese Einstellungen können für Sie unterschiedlich sein, daher müssen Sie sie gegebenenfalls ersetzen. Sie sollten einen Debian 9-Server haben, ich werde den Debian-Minimalserver als Basissystem für dieses Tutorial verwenden.

Aktualisiere das Debian-System

Es wird empfohlen, die Paketlisten zu aktualisieren und alle ausstehenden Updates zu installieren, bevor wir mit dem Nginx-Setup beginnen. Führen Sie die folgenden Befehle aus, um ausstehende Updates zu installieren.

apt-get update
apt-get upgrade -y

Ich werde den Nano-Editor später verwenden, um Konfigurationsdateien zu bearbeiten. Nano kann mit diesem Befehl installiert werden:

apt-get -y install nano

Nginx installieren

Nginx ist als Paket für Debian 9 verfügbar, das wir mit diesem Befehl installieren können:

apt-get -y install nginx

Starten Sie nun den Nginx-Webserver:

systemctl start nginx.service

Geben Sie die IP-Adresse oder den Hostnamen Ihres Webservers in einen Browser ein (z. B. http://192.168.1.100) und Sie sehen die folgende Seite:

Das standardmäßige nginx-Dokumentenstammverzeichnis unter Debian Linux ist /var/www/html.

Installieren Sie MySQL oder MariaDB

In diesem Schritt zeige ich Ihnen, wie Sie MySQL oder MariaDB installieren. Sie können frei wählen, welches Datenbanksystem Sie bevorzugen. Stellen Sie einfach sicher, dass Sie nur eine Datenbank-Engine installieren und nicht MySQL und MariaDB zusammen.

Installieren Sie MySQL

Die MySQL-Pakete für Debian 9 können direkt von Oracle bezogen werden. Oracle stellt ein MySQL-Repository-Paket bereit, das das Oracle MySQL-Repository in Debian integriert, sodass wir MySQL mit apt installieren und aktualisieren können. Holen Sie sich das MySQL-Apt-Repository-Paket hier, falls der wget-Download unten aufgrund von Änderungen in der Download-URL fehlschlägt.

cd /tmp
wget https://dev.mysql.com/get/mysql-apt-config_0.8.9-1_all.deb
dpkg -i mysql-apt-config_0.8.9-1_all.deb

Wählen Sie zum Konfigurieren von „OK“ in der Liste, fokussieren Sie dann die OK-Schaltfläche in der Fußzeile und drücken Sie die Eingabetaste. Dadurch wird die aktuelle stabile Version ausgewählt, die MySQL 5.7 ist.

Jetzt aktualisieren wir die Paketliste und installieren das MySQL-Server- und Client-Paket.

apt-get update
apt-get -y install mysql-community-client mysql-community-server

Das MySQL-Installationsprogramm fordert Sie auf, ein Passwort für den MySQL-Root-Benutzer festzulegen. Wählen Sie ein langes und sicheres Passwort, da dieses Passwort vollen administrativen Zugriff auf die MySQL-Datenbank ermöglicht.

Geben Sie das Passwort wie gewünscht erneut ein.

Installieren Sie MariaDB

Um MariaDB zu installieren, führen wir Folgendes aus:

apt-get -y install mariadb-server mariadb-client

Im Gegensatz zum MySQL-Installationsprogramm legt das MariaDB-Installationsprogramm während der Installation kein Root-Passwort fest. Um die MariaDB-Installation zu sichern, entfernen Sie den anonymen Benutzer und deaktivieren Sie die Testdatenbank mit diesem Befehl:

mysql_secure_installation

Beantworten Sie die Fragen wie folgt:

Change the root password? [Y/n] <-- y
New password: <-- Enter a new MySQL root password
Re-enter new password: <-- Repeat the MySQL root password
Remove anonymous users? [Y/n] <-- y
Disallow root login remotely? [Y/n] <-- y
Remove test database and access to it? [Y/n] <-- y
Reload privilege tables now? [Y/n] <-- y

Installation von PHP

Wir können PHP in nginx durch PHP-FPM (PHP FastCGI Process Manager) zum Laufen bringen. Dies ist eine alternative PHP FastCGI-Implementierung mit einigen zusätzlichen Funktionen, die für Websites jeder Größe nützlich sind, insbesondere für stark frequentierte Websites. Installieren Sie PHP 7 wie folgt:

apt-get -y install php7.0-fpm

PHP-FPM ist ein Daemon-Prozess (mit der systemd-Unit-Datei php7.0-fpm.service), der einen FastCGI-Server auf dem Socket /var/run/php/php7.0-fpm.sock.

ausführt

Konfigurieren von Nginx

Die Nginx-Konfiguration befindet sich in /etc/nginx/nginx.conf, die wir jetzt öffnen:

nano /etc/nginx/nginx.conf

Die Konfiguration ist einfach zu verstehen (mehr darüber erfahren Sie hier: https://www.nginx.com/resources/wiki/start/topics/examples/full/ und hier:https://www.nginx.com/ Ressourcen/Wiki/)

Setzen Sie zuerst das keepalive_timeout auf einen vernünftigen Wert wie 2 Sekunden:

[...]
keepalive_timeout 2;
[...]

Die virtuellen Hosts sind in Server-{}-Containern definiert. Der Standard-vhost ist in der Datei /etc/nginx/sites-available/default definiert – ändern wir ihn wie folgt:

nano /etc/nginx/sites-available/default
[...]
server {
listen 80 default_server;
listen [::]:80 default_server;

# SSL configuration
#
# listen 443 ssl default_server;
# listen [::]:443 ssl default_server;
#
# Note: You should disable gzip for SSL traffic.
# See: https://bugs.debian.org/773332
#
# Read up on ssl_ciphers to ensure a secure configuration.
# See: https://bugs.debian.org/765782
#
# Self signed certs generated by the ssl-cert package
# Don't use them in a production server!
#
# include snippets/snakeoil.conf;

root /var/www/html;

# Add index.php to the list if you are using PHP
index index.php index.html index.htm index.nginx-debian.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 PHP scripts to FastCGI server
#
location ~ \.php$ {
include snippets/fastcgi-php.conf;

# With php-fpm (or other unix sockets):
fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
# With php-cgi (or other tcp sockets):
# fastcgi_pass 127.0.0.1:9000;
}

# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
location ~ /\.ht {
deny all;
}
} [...]

Servername _; macht dies zu einem Standard-Catchall-Vhost (natürlich können Sie hier auch einen Hostnamen wie www.example.com angeben).

Ich habe index.php zur Indexzeile hinzugefügt. root /var/www/html; bedeutet, dass das Dokumenten-Stammverzeichnis das Verzeichnis /var/www/html ist.

Der wichtige Teil für PHP ist die Zeile location ~ \.php$ {}. Kommentieren Sie es wie oben gezeigt aus, um es zu aktivieren. Es sind zwei fastcgi_pass-Zeilen enthalten, kommentieren Sie nur die Zeile für die Datei php-7.0-fpm.sock aus.

Speichern Sie nun die Datei und laden Sie Nginx neu:

systemctl reload nginx.service

Als nächstes öffnen Sie /etc/php/7.0/fpm/php.ini...

nano /etc/php/7.0/fpm/php.ini

... und setze cgi.fix_pathinfo=0:

[...]
; cgi.fix_pathinfo provides *real* PATH_INFO/PATH_TRANSLATED support for CGI.  PHP's
; previous behaviour was to set PATH_TRANSLATED to SCRIPT_FILENAME, and to not grok
; what PATH_INFO is.  For more information on PATH_INFO, see the cgi specs.  Setting
; this to 1 will cause PHP CGI to fix its paths to conform to the spec.  A setting
; of zero causes PHP to behave as before.  Default is 1.  You should fix your scripts
; to use SCRIPT_FILENAME rather than PATH_TRANSLATED.
; http://php.net/cgi.fix-pathinfo
cgi.fix_pathinfo=0
[...]

... dann möchten Sie vielleicht das POST-Limit und das Datei-Upload-Limit erhöhen:

post_max_size = 25M
upload_max_filesize = 20M

Wenn Sie große Dateien per PHP hochladen möchten, sollten Sie die Werte sogar auf 500 M oder mehr erhöhen. M steht hier für Megabyte.

Schließlich möchten Sie vielleicht die Zeitzone auf Ihre lokale Zeitzone einstellen. In meinem Fall ist die Zeitzone:

date.timezone = 'Europe/Berlin'

Die Liste der unterstützten Zeitzonen finden Sie hier.

Laden Sie PHP-FPM neu, um die Änderungen zu übernehmen:

systemctl reload php7.0-fpm.service

Erstellen Sie nun im Document Root /var/www/html/ folgende PHP-Datei:

nano /var/www/html/info.php
<?php
phpinfo();

Nun nennen wir diese Datei in einem Browser (z. B. http://192.168.1.100/info.php):

Wie Sie sehen, funktioniert PHP 7 und es funktioniert über FPM/FastCGI, wie in der Server-API-Zeile gezeigt. Wenn Sie weiter nach unten scrollen, sehen Sie alle Module, die bereits in PHP aktiviert sind. MySQL ist dort nicht aufgeführt, was bedeutet, dass wir noch keine MariaDB / MySQL-Unterstützung in PHP haben.

MySQL-/MariaDB-Unterstützung in PHP erhalten

Um MySQL-Unterstützung in PHP zu erhalten, können wir das Paket php7.0-mysqlnd installieren. Es ist eine gute Idee, einige andere PHP-Module zu installieren, die Sie möglicherweise für Ihre Anwendungen benötigen. Sie können wie folgt nach verfügbaren PHP-Modulen suchen:

apt-cache search php7.0

Wählen Sie die benötigten aus und installieren Sie sie wie folgt:

apt-get -y install php7.0-mysqlnd php7.0-curl php7.0-gd php7.0-intl php-pear php-imagick php7.0-imap php7.0-mcrypt php-memcache php7.0-intl php7.0-pspell php7.0-recode php7.0-sqlite3 php7.0-tidy php7.0-xmlrpc php7.0-xsl

Laden Sie nun PHP-FPM neu:

systemctl reload php7.0-fpm.service

Laden Sie nun http://192.168.1.100/info.php in Ihrem Browser neu und scrollen Sie erneut nach unten zum Modulbereich. Dort sollten Sie jetzt viele neue Module finden, einschließlich des MySQLi- und MySQLnd-Moduls:

PHP-FPM dazu bringen, eine TCP-Verbindung zu verwenden (optional)

Standardmäßig überwacht PHP-FPM den Socket /var/run/php/php7.0-fpm.sock und das ist die empfohlene und schnellste Methode, um PHP mit Nginx zu verbinden. Es kann jedoch Setups geben, in denen Sie Nginx eine Verbindung zu PHP über das Netzwerk ermöglichen möchten. Es ist möglich, PHP-FPM dazu zu bringen, eine TCP-Verbindung zu verwenden. Öffnen Sie dazu /etc/php/7.0/fpm/pool.d/www.conf...

nano /etc/php/7.0/fpm/pool.d/www.conf

... und lass die Listen-Zeile wie folgt aussehen:

[...]
;listen = /var/run/php5-fpm.sock
listen = 127.0.0.1:9000
[...]

Dadurch lauscht PHP-FPM auf Port 9000 auf der IP 127.0.0.1 (localhost). Stellen Sie sicher, dass Sie einen Port verwenden, der auf Ihrem System nicht verwendet wird.

Laden Sie dann PHP-FPM neu:

systemctl reload php7.0-fpm.service

Gehen Sie als nächstes Ihre Nginx-Konfiguration und alle Ihre vhosts durch und ändern Sie die Zeile fastcgi_pass unix:/var/run/php7.0-fpm.sock; zu fastcgi_pass 127.0.0.1:9000;, z. so:

nano /etc/nginx/sites-available/default
[...]
location ~ \.php$ {
include snippets/fastcgi-php.conf;

# With php-fpm (or other unix sockets):
# fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
# With php-cgi (or other tcp sockets):
fastcgi_pass 127.0.0.1:9000;
} [...]

Laden Sie zum Schluss Nginx neu:

systemctl reload nginx.service

SSL und HTTP/2 in Nginx aktivieren

Die meisten Websites verwenden heute SSL (TLS), um einen sicheren Zugriff zu ermöglichen. In diesem Kapitel zeige ich Ihnen, wie Sie ein SSL-Zertifikat erstellen und SSL in Nginx aktivieren. Sie können entweder ein selbstsigniertes SSL-Zertifikat verwenden oder ein offiziell signiertes SSL-Zertifikat von Let’s encrypt anfordern. SSL-Zertifikate von Let#s encrypt sind kostenlos erhältlich, aber Sie müssen einen gültigen Domainnamen haben, der bereits im DNS auf Ihren Server verweist. Wenn Sie noch keinen Domainnamen haben oder wenn sich Ihr Server in einem lokalen Netzwerk befindet und von außen nicht erreichbar ist, dann verwenden Sie ein selbstsigniertes SSL-Zertifikat. Befolgen Sie entweder die Schritte für ein selbstsigniertes SSL-Zertifikat oder das Let's encrypt-Zertifikat unten, aber nicht beides.

Erstellen Sie ein selbstsigniertes SSL-Zertifikat

Erstellen Sie die SSL-Schlüsseldatei mit dem OpenSSL-Befehl:

openssl genrsa -out /etc/ssl/private/nginx.key 4096

Erstellen Sie dann das selbstsignierte SSL-Zertifikat:

openssl req -new -x509 -key /etc/ssl/private/nginx.key -out /etc/ssl/certs/nginx.pem -days 3650

Der Befehl fragt nach Details wie Land, Staat, Stadt, Firmenname und Domänenname.

Aktivieren Sie das selbstsignierte SSL-Zertifikat in Nginx. Bearbeiten Sie dazu die Datei nginx.conf erneut:

nano /etc/nginx/sites-available/default

und lass den Serverteil so aussehen:

server {
listen 80 default_server;
listen [::]:80 default_server;

# SSL configuration

listen 443 ssl http2 default_server;
listen [::]:443 ssl http2 default_server;

ssl on;
ssl_certificate_key /etc/ssl/private/nginx.key;
ssl_certificate /etc/ssl/certs/nginx.pem;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers 'ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS';
ssl_prefer_server_ciphers on;

# Note: You should disable gzip for SSL traffic.
# See: https://bugs.debian.org/773332
#
# Read up on ssl_ciphers to ensure a secure configuration.
# See: https://bugs.debian.org/765782
#
# Self signed certs generated by the ssl-cert package
# Don't use them in a production server!
#
# include snippets/snakeoil.conf;

root /var/www/html;

# Add index.php to the list if you are using PHP
index index.php index.html index.htm index.nginx-debian.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 PHP scripts to FastCGI server
#
location ~ \.php$ {
include snippets/fastcgi-php.conf;

# With php-fpm (or other unix sockets):
fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
# With php-cgi (or other tcp sockets):
# fastcgi_pass 127.0.0.1:9000;
}

# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
location ~ /\.ht {
deny all;
}
}

Starten Sie Nginx neu, um die Änderungen zu übernehmen.

systemctl restart nginx.service

Öffnen Sie nun die https-URL Ihres Servers in einem Browser, z. https://192.169.1.100/. Sie erhalten eine Sicherheitswarnung, die Sie akzeptieren müssen, um fortzufahren. Anschließend sehen Sie die Nginx-Startseite, das Warnsymbol in der URL-Leiste des Browsers weist darauf hin, dass wir ein selbstsigniertes SSL-Zertifikat verwenden.

Verwenden Sie ein kostenloses SSL-Zertifikat von Let's Encrypt

In diesem Kapitel beschreibe ich, wie Sie Ihren Nginx-Server mit einem kostenlosen SSL-Zertifikat von Let’s encrypt sichern. Voraussetzung ist, dass Sie einen Domainnamen besitzen, der auf die IP des Servers zeigt, auf dem Sie Nginx gerade installieren.

Installieren Sie Certbot, den Client von Let's encrypt, der verwendet wird, um ein kostenloses SSL-Zertifikat zu erhalten.

apt-get -y install certbot python-certbot-nginx

Bearbeiten Sie die Website-Konfigurationsdatei /etc/nginx/sites-available/default und legen Sie Ihre Domainnamen in der Zeile server_name fest:

nano /etc/nginx/sites-available/default

Die Zeile sollte nach der Bearbeitung so aussehen:

server_name example.com;

Ersetzen Sie example.com durch Ihren eigenen Domainnamen. Wenn Sie mehrere Domainnamen oder Subdomains haben, fügen Sie diese durch Leerzeichen getrennt hinzu.

server_name example.com www.example.com otherdomain.tld;

Jetzt fordern wir ein SSL-Zertifikat von let’s encrypt an, indem wir das nginx-Plugin von Certbot verwenden.

certbot --nginx -d example.com

Mehrere Domänen können hinzugefügt werden, indem Sie die Option -d wiederholen. Beispiel:

certbot certonly --webroot -d example.com -d www.example.com

Certbot wird Sie nach einer E-Mail-Adresse fragen, an die Verlängerungsbenachrichtigungen gesendet werden sollen. Geben Sie hier eine gültige E-Mail-Adresse ein:

Enter email address (used for urgent renewal and security notices) (Enter 'c' to cancel): [email protected]

Akzeptieren Sie die Lizenzbedingungen, indem Sie „A“ eingeben.

-------------------------------------------------------------------------------
Please read the Terms of Service at
https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You must
agree in order to register with the ACME server at
https://acme-v01.api.letsencrypt.org/directory
-------------------------------------------------------------------------------
(A)gree/(C)ancel: A

Hier der weitere Dialog, der das SSL-Zertifikat anfordert. Ich habe meine Antworten in Rot hinzugefügt.

Saving debug log to /var/log/letsencrypt/letsencrypt.log
Obtaining a new certificate
Performing the following challenges:
http-01 challenge for example.com
http-01 challenge for www.example.com
Select the webroot for example.com:
-------------------------------------------------------------------------------
1: Enter a new webroot
-------------------------------------------------------------------------------
Press 1 [enter] to confirm the selection (press 'c' to cancel): 1
Input the webroot for example.com: (Enter 'c' to cancel):/var/www/html
Select the webroot for www.example.com:
-------------------------------------------------------------------------------
1: Enter a new webroot
2: /var/www/html
-------------------------------------------------------------------------------
Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 2
Waiting for verification...
Cleaning up challenges
Generating key (2048 bits): /etc/letsencrypt/keys/0000_key-certbot.pem
Creating CSR: /etc/letsencrypt/csr/0000_csr-certbot.pem
IMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at
/etc/letsencrypt/live/example.com/fullchain.pem. Your cert will
expire on 2018-04-23. To obtain a new or tweaked version of this
certificate in the future, simply run certbot again. To
non-interactively renew *all* of your certificates, run "certbot
renew"
- If you like Certbot, please consider supporting our work by:
Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate
Donating to EFF: https://eff.org/donate-le

Es gibt eine alternative Methode durch die Verwendung der Option „--nginx“ in Certbot, aber diese Methode scheint im Moment aufgrund des TLS-SNI-01-Problems in Let’s encrypt nicht zu funktionieren. Die oben gezeigte Webroot-Methode funktioniert jedoch gut.

Das neu generierte SSL-Zertifikat befindet sich in einem Unterordner des Ordners /etc/letsencrypt/live/. Der genaue Pfad wird in der Certbot-Ausgabe angezeigt.

Jetzt fügen wir dieses SSL-Zertifikat in unsere Nginx-Website-Datei ein. Bearbeiten Sie die Nginx-Standarddatei:

nano /etc/nginx/sites-available/default

und ändern Sie den SSL-Abschnitt wie folgt:

[...]
server {
listen 80 default_server;
listen [::]:80 default_server;

# SSL configuration

listen 443 ssl http2 default_server;
listen [::]:443 ssl http2 default_server;

ssl on;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers 'ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS';
ssl_prefer_server_ciphers on;

# Note: You should disable gzip for SSL traffic.
# See: https://bugs.debian.org/773332
#
# Read up on ssl_ciphers to ensure a secure configuration.
# See: https://bugs.debian.org/765782
#
# Self signed certs generated by the ssl-cert package
# Don't use them in a production server!
#
# include snippets/snakeoil.conf;

root /var/www/html;

# Add index.php to the list if you are using PHP
index index.php index.html index.htm index.nginx-debian.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 PHP scripts to FastCGI server
#
location ~ \.php$ {
include snippets/fastcgi-php.conf;

# With php-fpm (or other unix sockets):
fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
# With php-cgi (or other tcp sockets):
# fastcgi_pass 127.0.0.1:9000;
}

# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
location ~ /\.ht {
deny all;
}
} [...]

Ersetzen Sie „example.com“ im SSL-Zertifikatspfad durch Ihren eigenen Domänennamen. Starten Sie Nginx neu, um die Änderungen zu übernehmen.

systemctl restart nginx.service

Image der virtuellen Maschine

Dieses Tutorial ist als fertige virtuelle Maschine im OVA / OVF-Format für Howtoforge-Abonnenten verfügbar. Das VM-Format ist kompatibel mit VMWare und Virtualbox und wahrscheinlich einigen anderen Tools, die dieses Format importieren können. Sie finden den Download-Link im rechten Menü oben. Klicken Sie auf den Dateinamen, um den Download zu starten.

Die Anmeldedaten der VM lauten:

SSH-Anmeldung

Benutzername:administrator
Passwort:howtoforge

Führen Sie 'su' aus, um Root-Benutzer zu werden, das Root-Passwort lautet ebenfalls 'howtoforge'.

Das Image der virtuellen Maschine verwendet MySQL als Datenbankserver.

MySQL-Anmeldung

Benutzername:root
Passwort:howtoforge

Bitte ändern Sie die Passwörter nach dem ersten Booten.

Die VM ist für die statische IP 192.168.1.100 konfiguriert, die IP kann in der Datei /etc/network/interfaces.

geändert werden
  • nginx:https://nginx.net/
  • PHP:http://www.php.net/
  • MySQL: https://www.mysql.com/
  • MariaDB: https://mariadb.org/
  • Debian:https://www.debian.org/

Debian
  1. So installieren Sie Phorum mit Nginx unter Debian 9

  2. Anleitung zum Installieren und Einrichten von PHP und Nginx (LEMP) unter Debian 11

  3. So installieren Sie Magento mit Nginx unter Debian 10

  4. So installieren Sie WonderCMS mit Nginx unter Debian 11

  5. So installieren Sie LEMP Stack Nginx, MySQL, PHP unter Debian 11

Installieren Sie Nginx mit PHP und MySQL (LEMP) plus SSL unter Debian 10

So installieren Sie Nginx mit PHP-FPM unter Debian 10

So installieren Sie Nginx, MySQL und PHP (LEMP) unter Ubuntu 20.04

So installieren Sie phpBB mit LEMP (Nginx, MariaDB und PHP) unter Debian 11 Bullseye

So installieren Sie phpMyAdmin mit Nginx unter Debian 11

So installieren Sie Nginx, MySQL, PHP (LEMP) Stack auf einem Debian 8.3 Cloud Server