Nginx überholt Apache schnell als bevorzugten Webserver. Für Webanwendungen, die in Sprachen wie Rails und Python erstellt wurden, ist es praktisch allgegenwärtig, aber es ist etwas langsamer, sich in der PHP-Welt durchzusetzen. Ein Grund dafür ist, wie einfach PHP und Apache zusammenpassen. PHP und Nginx können jedoch fast genauso einfach zusammenarbeiten, und mit der Veröffentlichung von PHP 7 kann die Kombination der beiden eine ziemlich schnelle Option sein.
Die Pakete
Das wichtigste zuerst. Aktualisieren Sie Ubuntu und erhalten Sie die Nginx- und PHP-Pakete.
# sudo apt-get update && sudo apt-get -y upgrade # sudo apt-get -y install nginx php7.0 php7.0-fpm
Wenn die Installation abgeschlossen ist, sollten alle Pakete vorhanden sein und tatsächlich ausgeführt werden. Um sicherzustellen, dass dies der Fall ist, können Sie überprüfen, ob sowohl Nginx als auch die PHP-FPM-Dienste in Systemd ausgeführt werden.
# sudo systemctl status nginx # sudo systemctl status php7.0-fpm
Wenn Systemd bestätigt, dass beide Dienste ausgeführt werden, sollte der Server tatsächlich in Betrieb sein, und Sie sollten die standardmäßige Nginx-Willkommensseite sehen können, indem Sie zu localhost
navigieren im Browser.
Konfiguration
Natürlich ist das noch lange nicht bereit, tatsächlich etwas zu hosten. Es ist eine gewisse Konfiguration erforderlich, um Nginx auf einige tatsächliche Inhalte zu verweisen und die Sicherheit zu verbessern. Das Stammverzeichnis für Nginx-Konfigurationsdateien befindet sich unter /etc/nginx
. Glücklicherweise gibt es dort bereits Vorgaben von Ubuntu, die den Konfigurationsprozess viel einfacher machen.
Nginx.conf
Die Hauptkonfigurationsdatei für Nginx ist nginx.conf
. Öffnen Sie es im Texteditor Ihrer Wahl. Es erfordert Root-Berechtigungen, daher ist ein textbasierter Editor wie Vim wahrscheinlich am besten. Die Standardkonfiguration ist meistens in Ordnung. Es gibt natürlich Dinge, die getan werden können, um die Systemgeschwindigkeit und -sicherheit zu verbessern, aber das meiste davon würde den Rahmen dieses grundlegenden Tutorials sprengen. Wenn Sie die Leistung verbessern möchten, helfen die kommentierten Gzip-Optionen bei der Komprimierung und können die Dinge beschleunigen. Auf der Sicherheitsseite hilft das Hinzufügen der folgenden drei Zeilen, böswillige Aktivitäten zu verhindern.
add_header X-Frame-Options SAMEORIGIN; add_header X-Content-Type-Options nosniff; add_header X-XSS-Protection "1; mode=block";
Site-Konfiguration
Sobald die Zeilen hinzugefügt sind, speichern und beenden. Es gibt zwei Ordner im Nginx-Stamm, sites-available
und sites-enabled
. sites-available
speichert Site-Konfigurationen. sites-enabled
enthält symbolische Links zu den Konfigurationsdateien in sites-available
. Auf diese Weise ist das Aktivieren und Deaktivieren von Websites so einfach wie das Erstellen und Entfernen von Symlinks.
Erstellen Sie mit Ihrem Texteditor eine Datei unter /etc/nginx/sites-available/yoursite
. Diese Datei enthält alle Site-spezifischen Konfigurationen für Ihre neue PHP 7-Website. Das folgende Beispiel enthält in den Kommentaren eine Aufschlüsselung dessen, was jede Zeile bewirkt. Es ist eine ziemlich einfache Konfiguration, aber sie wird die Arbeit erledigen.
server { #Nginx should listen on port 80 for requests to yoursite.com listen 80; server_name yoursite.com; #Create access and error logs in /var/log/nginx access_log /var/log/nginx/yoursite.access_log main; error_log /var/log/nginx/yoursite.error_log info; #Nginx should look in /var/www/yoursite for your website root /var/www/yoursite/; #The homepage of your website is a file called index.php index index.php; #Specifies that Nginx is looking for .php files location ~ \.php$ { #If a file isn’t found, 404 try_files $uri =404; #Include Nginx’s fastcgi configuration include /etc/nginx/fastcgi.conf; #Look for the FastCGI Process Manager at this location fastcgi_pass unix:/run/php/php7.0-fpm.sock; } }
Wenn Sie diese Datei erstellt haben, speichern Sie sie und wechseln Sie zu sites-enabled
Verzeichnis. Erstellen Sie von dort aus den symbolischen Link zurück zu der gerade erstellten Datei.
# cd /etc/nginx/sites-enabled # sudo ln -s /etc/nginx/sites-available/yoursite
PHP.ini-Sicherheit
Sicherheit ist ein bewegliches Ziel, und es ist unmöglich, jeder möglichen Bedrohung einen Schritt voraus zu sein, aber es ist immer eine gute Idee, jede neue Serverinstallation so weit wie möglich zu sperren. Es gibt ein paar einfache Anpassungen, die an der php.ini
vorgenommen werden können Konfigurationsdatei, die hilft, PHP zu sichern. Öffnen Sie mit Ihrem Texteditor /etc/php/7.0/fpm/php.ini
. Dies ist eine riesige Datei. Auch hier ist Vim oder etwas mit einer Suchfunktion wahrscheinlich am besten.
Suchen Sie zuerst disable_functions
und fügen Sie phpinfo,system,mail,exec
hinzu an das Ende der Reihe von Funktionen, die bereits vorhanden sind. Suchen Sie dann file_uploads
und stellen Sie ihn auf Off
. Suchen Sie als Nächstes sql.safe_mode
und schalten Sie es On
. Zuletzt finden Sie allow_url_fopen
und stellen Sie ihn auf Off
. Bevor Sie die Datei schließen, fügen Sie am Ende eine weitere Zeile hinzu.
register_globals = Off
Wenn das alles erledigt ist, speichern und schließen. Starten Sie den Server neu und er sollte einsatzbereit sein.
# sudo systemctl restart php7.0-fpm # sudo systemctl restart nginx
Wohin als nächstes?
So wie es aussieht, sollte der Ubuntu-Server in der Lage sein, die meisten PHP-Websites auszuführen. Alle PHP-Dateien, die in /var/www/yoursite
platziert sind wird vom Server ausgeführt. Es wird nach index.php
gesucht Datei zuerst und die Website kann sich dort verzweigen. Natürlich gibt es noch viel mehr, was getan werden kann, um PHP und Nginx für Geschwindigkeit, Sicherheit und so ziemlich jede Sonderfallsituation zu konfigurieren, aber jetzt haben Sie einen starken Ausgangspunkt.