Dieses Handbuch zeigt Ihnen, wie Sie einen "alternativen" LAMP-Stack unter Debian 8 unter Verwendung von NGINX, PHP Fast Process Manager und MariaDB korrekt installieren und konfigurieren.
NGINX
NGINX ist ein "Reverse Proxy First, Webserver Second". Es ist eine beliebte und wachsende Alternative zu Apache und bietet in vielen Fällen mehr Flexibilität und bessere Leistung. In diesem Tutorial werden wir es als unseren Webserver verwenden.
Starten Sie Ihren bevorzugten SSH-Client und melden Sie sich bei Ihrem Server an. Für Windows-Benutzer ist "PuTTY" ein kostenloser und leichter SSH-Client. Linux- und Mac-Benutzer können das standardmäßig in ihrem Betriebssystem enthaltene Terminal verwenden. In diesem Tutorial wird davon ausgegangen, dass Sie als "Root" -Benutzer bei Ihrem Server angemeldet sind.
Stellen wir zunächst sicher, dass alles auf dem neuesten Stand ist. Geben Sie Folgendes ein, um nach Updates zu suchen und diese dann zu installieren.
apt-get update && apt-get upgrade
Wir werden unsere Konfigurationsdateien in vim bearbeiten. Vim ist nicht standardmäßig installiert, also installieren wir es!
apt-get install vim
Jetzt ist es Zeit, NGINX zu installieren. Wir möchten die neueste Version von NGINX aus dem offiziellen NGINX Debian-Repository installieren.
wget http://nginx.org/keys/nginx_signing.key
apt-key add nginx_signing.key
echo 'deb http://nginx.org/packages/debian/ jessie nginx' >> /etc/apt/sources.list
echo 'deb-src http://nginx.org/packages/debian/ jessie nginx' >> /etc/apt/sources.list
apt-get update && apt-get install nginx
Jetzt müssen wir die NGINX-Konfiguration etwas anpassen. Navigieren Sie zum Konfigurationsverzeichnis.
cd /etc/nginx
Eine kurze Vim-Lektion
Verwenden Sie die Pfeiltasten, um im Textdokument zu navigieren. Um Änderungen vorzunehmen, drücken Sie die Taste "Einfügen" auf Ihrer Tastatur. Wenn Ihre Tastatur keine Einfügetaste hat, drücken Sie die Taste "i". Im unteren Bereich von vim werden Sie feststellen, dass jetzt "INSERT" angezeigt wird. Im Einfügemodus können Sie über die Rücktaste löschen oder neue Zeichen durch Eingabe einfügen.
Lassen Sie uns unsere öffnen nginx.confund herumstöbern:
vi nginx.conf
Lassen Sie uns den Standardbenutzer ändern, die Anzahl der Arbeitsprozesse überprüfen und das Zugriffsprotokoll deaktivieren.
Die Anweisungen "user" und "worker_processes" befinden sich ganz oben. Probieren Sie die folgenden Werte aus:
Beachten Sie, dass Sie "worker_processes" auf die Anzahl der auf Ihrem Server verfügbaren CPU-Kerne festlegen möchten. In diesem Beispiel haben wir 1, was der NGINX-Standard ist.
user www-data;
worker_processes 1;
Wir möchten auch das Zugriffsprotokoll deaktivieren, um die E / A-Leistung zu verbessern. Navigieren Sie mit den Pfeiltasten nach unten, bis Sie "access_log" finden. Ändern Sie es wie folgt:
access_log off;
Zuletzt setzen wir "client_max_body_size" so, dass es einigen Änderungen entspricht, die später an PHP vorgenommen werden. Lassen Sie uns den Ärger sparen und es jetzt tun. Fügen Sie direkt unter "access_log" hinzu:
client_max_body_size 12m;
Wenn Sie mit der Bearbeitung fertig sind, drücken Sie "Esc" auf Ihrer Tastatur. Vim sagt nicht mehr "INSERT" am Ende der Datei.
Drücken Sie die folgende Tastenfolge, um unsere Änderungen zu speichern und vim zu beenden:
SHIFT :(colon)
wq
Press "Enter"
Das obige vim kung fu schreibt Ihre Änderungen auf die Festplatte und beendet vim und lässt Sie zurück in die Bash-Shell fallen.
Jetzt müssen wir eine ortsspezifische Konfiguration für unser Beispiel vornehmen! Wir werden auch die anderen Beispielkonfigurationen löschen. Versuche Folgendes:
cd conf.d
rm example_ssl.conf default.conf
vi my_site.conf
Wir werden eine kurze und einfache www.confVersion erstellen, die lose auf der Standard-NGINX-Konfiguration basiert, jedoch mit ein paar Änderungen. Drücken Sie Einfügen und Sie können das folgende Beispiel kopieren / einfügen.
Vergessen Sie nicht, die Direktive "root" so zu bearbeiten, dass sie auf das Stammverzeichnis Ihrer Website verweist, und "server_name", um Ihrer Domain zu entsprechen.
server {
listen 80;
root /path/to/your/website;
index index.php index.html index.htm;
server_name mydomainname.com www.mydomainname.com;
location / {
try_files $uri $uri/ /index.php;
}
location ~ \.php$ {
try_files $uri =404;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
fastcgi_pass unix:/var/run/php5-fpm.sock;
}
}
Jetzt sind wir mit dem NGINX-Konfigurationsabschnitt dieses Tutorials fertig. Wir werden NGINX gleich nach der Installation von PHP neu starten.
PHP-FPM
PHP-FPM ist der PHP Fast Process Manager. Dies ist bei Verwendung von NGINX erforderlich, da NGINX im Gegensatz zu Apache PHP nicht als Modul ausführt. Dies wurde durchgeführt, um den Speicherbedarf von NGINX zu verringern. Erinnern Sie sich an diesen Teil, in dem NGINX in erster Linie ein Reverse-Proxy ist? Hier kommt das ins Spiel; An NGINX gesendete PHP-Anforderungen werden an PHP-FPM weitergeleitet, um das schwere Heben durchzuführen.
Lassen Sie uns PHP-FPM installieren.
apt-get install php5-fpm php5-mysqlnd
Beachten Sie, dass Sie je nach den Anforderungen Ihrer PHP-Skripte möglicherweise andere PHP-Module installieren müssen, die nicht standardmäßig enthalten sind. Beliebt sind php5-gdund php5-mcrypt. Sie können diese mit dem folgenden Befehl installieren.
apt-get install php5-module_name_here
Nachdem wir PHP-FPM installiert haben, möchten wir einige schnelle Änderungen vornehmen, um die Sicherheit und Funktionalität zu verbessern.
cd /etc/php5/fpm
vi php.ini
Zeit für eine weitere kurze Vim-Lektion! Die php.iniDatei ist absolut riesig. Die Suche nach einigen Schlüsselwerten dauert den ganzen Tag. Da wir also wissen, wonach wir suchen, werden wir suchen. Geben Sie Folgendes ein:
/upload_max_filesize
Dies ist standardmäßig auf 2 Megabyte eingestellt. Wenn Sie Benutzern erlauben möchten, Dateien mit mehr als 2 Megabyte in Ihre PHP-Anwendungen hochzuladen, müssen Sie dies ändern. 10M ist momentan wahrscheinlich eine sichere Wette, aber auch höhere Werte sind akzeptabel. Diese Einstellung variiert je nach Konfiguration. Zum Zwecke des Tutorials:
upload_max_filesize = 10M
Noch eine krasse Sicherheitslücke. Scrollen Sie etwas weiter nach unten oder suchen Sie. Wir müssen "allow_url_fopen" auf "Off" setzen. Dies verhindert, dass PHP PHP-Dateien ausführt, die FERN gehostet werden, auch bekannt als RFI (Remote File Inclusion). Viele Server werden auf diese Weise gehackt.
allow_url_fopen = Off
Und weil wir "upload_max_filesize" geändert haben, müssen wir jetzt "post_max_size" ändern. Dieser Wert sollte etwas größer sein als "upload_max_filesize", da wir den Overhead berücksichtigen müssen, der mit unseren von PHP verarbeiteten Anforderungen verbunden ist.
Lassen Sie uns noch einmal mit "/ post_max_size" suchen.
post_max_size = 12M
Beachten Sie, dass Sie zu Ihrer NGINX-Konfiguration zurückkehren und "client_max_body_size" bearbeiten müssen, wenn Sie größere Werte als diese Beispiele für Ihre PHP-Dateigrößen verwenden möchten.
Das war's erstmal. Stellen Sie sicher, dass Sie sich nicht im Bearbeitungsmodus befinden, indem Sie "Esc" drücken. Speichern und beenden Sie vim.
SHIFT :(colon)
wq
Press 'Enter'
Das PHP-FPM-Setup ist abgeschlossen.
MariaDB
Selbst in einer Welt, die sich ständig in Richtung NoSQL oder MongoDB bewegt, fällt es einigen von uns immer noch leichter, einfach bei MySQL zu bleiben. Dies gilt insbesondere für viele Webanwendungen. Glücklicherweise gibt es jetzt eine Reihe von "Drop-In" -Ersatzteilen für Oracle MySQL. Debian 8 enthält jetzt die beliebte MariaDB. MariaDB ist eine Abzweigung von Oracle MySQL basierend auf Version 5.5. MariaDB nennt diese MariaDB in jeder Hinsicht MariaDB 10. Sie wird als VOLLSTÄNDIGER Ersatz für Oracle MySQL angesehen. Betrachten Sie es als MySQL im Herzen, ohne das Oracle-Branding und einige neue Funktionen.
apt-get install mariadb-server
WICHTIG: Sie müssen unbedingt ein sicheres Root-Passwort für MariaDB auswählen. Speichern Sie es an einem sicheren Ort. Sie müssen es während der MariaDB-Installation zweimal eingeben.
Lassen Sie uns die MariaDB-Konfiguration leicht anpassen. Wir werden das Abhören von MariaDB über die Netzwerkschnittstelle deaktivieren. Stattdessen bleiben wir wie bei PHP-FPM nur bei einem UNIX-Socket. Die meisten PHP-Anwendungen sollten die Verbindung zum Datenbankserver über einen UNIX-Socket anstelle der lokalen Loopback-Schnittstelle unterstützen.
cd /etc/mysql
vi my.cnf
Suchen Sie nach "bind-address = 127.0.0.1". Kommentieren Sie diese Zeile aus. Oben oder unten wird "Skip-Networking" hinzugefügt.
#bind-address = 127.0.0.1
skip-networking
Wir sind fertig mit MariaDB! Möglicherweise möchten Sie Ihre MariaDB-Konfiguration anpassen, je nachdem, ob Sie hauptsächlich die MyISAM- oder InnoDB-Speicher-Engines verwenden, aber auch, wie viele CPU-Kerne und RAM für Ihren Server verfügbar sind. Die Standardeinstellungen werden uns in der Zwischenzeit zum Laufen bringen.
Lassen Sie uns jeden der Dienste neu starten, für die in diesem Lernprogramm Konfigurationsdateien geändert wurden.
systemctl restart nginx.service
systemctl restart php5-fpm.service
systemctl restart mysql.service
Das war's - wir sind alle fertig. Zu diesem Zeitpunkt ist ein voll funktionsfähiger LNMP-Server (LEMP) online!
Dieser Leitfaden sollte als allgemeine Faustregel für den Einstieg in die oben genannten Dienste mit minimalem Optimierungsaufwand dienen. Weitere Informationen finden Sie in der Dokumentation zu den oben genannten Paketen. Während dieses Beispiel-Setup "out of the box" gut funktionieren sollte, können und müssen Anpassungen vorgenommen werden, um Ihren Anforderungen besser zu entsprechen.
Empfohlene Forschungsbereiche:
- Verwenden und Ändern der Cache-Steuerung von NGINX.
- PHP-FPM "statisch", "dynamisch" oder "ondemand" Task-Manager-Einstellungen.
- MariaDB-Leistungsoptimierung, um Ihren Datenbankserver optimal zu nutzen.