NGINX - LEMP Server - Installation Ubuntu 18.04
NGINX (engine-x) ist ein kostenloser Open Source High Performance HTTP, Reverse-Proxy und IMAP/POP3 Proxy Server. Er ist unter anderem wegen der hohen Performance und Stabilität, einfachen Konfiguration und den geringen Ressourcen-Anforderungen eine sehr gute Alternative zum Apache Webserver. Aus LAMP als Complete-Setup wird somit LEMP: Linux E(NGINX), Maria-DB, PHP. NGINX skaliert von der kleinen VPS (Virtual Private Server) bis hin zu komplexen Clustersystemen und wird unter anderem von einigen hochverfügbaren Anbietern wie Netflix, Cloudflare, Wordpress und Github eingesetzt. NGINX ist modular aufgebaut und unterstützt beispielsweise vHosts, FastCGI oder SSL.[1]
Diese Anleitung beschreibt ein Minimal Setup eines LEMP Servers, basierend auf Ubuntu 18.04, NGINX, Maria-DB und PHP 7.[2] Voraussetzung hierfür ist ein Server mit aktiver Netzwerkkonfiguration mit Internetzugriff zum Zugriff auf die Ubuntu Repositories.
Installation Webserver
Zuerst installiert man das Paket nginx:
sudo apt install nginx
Danach kann man schauen, ob der Webserver korrekt gestartet wurde:
sudo systemctl status nginx
Falls nginx nicht gestartet ist, kann man den Dienst hiermit starten:
sudo systemctl start nginx
In Ubuntu 18.04 gibt es die UFW (Firewall) welche standardmäßig keinen http und https Traffic nach außen erlaubt, für das Erlauben gibt es ein UFW Profil. Die auf dem System vorhanden UFW Profile kann man sich anzeigen lassen:
sudo ufw app list
Möchte man wissen was hinter den Paketen steckt (Ports), kann man sich mit sudo ufw app info "NameOfUFW-Profile" die Details anschauen. In diesem Fall verwenden Sie Nginx Full, dort ist Port 80 (http) und 443 (https) erlaubt.
sudo ufw allow in "Nginx Full"
Ruft man nun die IP des Webservers auf, sollte eine Willkommensnachricht vom nginx Webserver angezeigt werden: "Welcome to nginx!"
Installation Datenbankserver
Für die meisten Webanwendungen wird nicht nur ein Webserver benötigt, sondern auch eine Datenbank. Für diesen Zweck installieren Sie den MariaDB-Datenbankserver.
sudo apt install mariadb-server mariadb-client
Sollten hier keine Pakete gefunden werden können, kann es sein, dass Sie nicht alle Ubuntu Repositories eingebunden haben. Zur Installation von MariaDB sind die Ubuntu Universe Paketquellen erforderlich. Dazu bitte die Datei /etc/apt/sources.list editieren und auf die folgende Form abändern:
deb http://archive.ubuntu.com/ubuntu bionic main universe deb http://archive.ubuntu.com/ubuntu bionic-security main deb http://archive.ubuntu.com/ubuntu bionic-updates main universe
Danach bitte mittels folgendem Befehl die Paketquellen aktualisieren:
sudo apt update
Nun sollten Sie MariaDB installieren können:
sudo apt install mariadb-server mariadb-client
Sobald die Installation fertig ist bitte den Status des Datenbank-Servers prüfen:
sudo systemctl status mysql
Datenbank Zugriff absichern
Nach der Installation sollte MariaDB mit dem mysql_secure_installation Tool abgesichert werden. Hierzu bitte ausführen:
sudo mysql_secure_installation
Sie werden nach dem aktuellen root-Passwort für MariaDB gefragt, da es noch kein Root-Passwort gibt, bitte einfach ENTER drücken und das Passwort-Feld leer lassen. Bitte wie folgt fortfahren:
Enter current password for root (enter for none): # ENTER drücken Set root password? [Y/n] # ENTER drücken New password: # Geben Sie ein sicheres Root-Passwort für die Datenbank ein Re-enter new password: # Wiederholen Sie die Passwort Eingabe Remove anonymous users? [Y/n] # ENTER drücken Disallow root login remotely? [Y/n] # ENTER drücken Remove test database and access to it? [Y/n] # ENTER drücken Reload privilege tables now? [Y/n] # ENTER drücken
Nun haben wir nginx als Webserver und MariaDB als Datenbankserver installiert.
Administrations-User anlegen
Damit wir später mittels phpMyAdmin auch neue Datenbanken und User anlegen können legen wir einen Admin-Account an. Bitte beachten Sie, dass Sie unbedingt ein sehr starkes und sicheres Passwort verwenden sollten.
sudo mariadb -u root create user admin@localhost identified by 'IHRPASSWORTIMKLARTEXT'; grant all privileges on *.* to admin@localhost with grant option; flush privileges; exit;
Installation PHP 7
Zur Kommunikation von Webserver und Datenbank wird PHP (Version 7.2) verwendet. Es wird mit folgenden Befehlen installiert:
sudo apt install php-fpm sudo apt install php-mysql
PHP-MYSQL wird benötigt für die Kommunikation von PHP mit MYSQL (MariaDB). PHP-FPM ist ein FastCGI-Prozessmanager, welcher PHP-Prozesse vorhält, damit die Ladezeiten von Webseiten beschleunigt werden können. Bitte in der php.ini entsprechende Anpassungen vornehmen:
sudo nano /etc/php/7.2/fpm/php.ini
cgi.fix_pathinfo=0
sudo systemctl restart php7.2-fpm sudo systemctl status php7.2-fpm
Auch hier sollte der Status nun auf active (running) stehen. Das Neustarten des Dienstes ist erforderlich, damit die Änderungen an der Konfigurationsdatei übernommen werden. Damit der Nginx überhaupt weiß, dass er den PHP-FPM nutzen soll, müssen wir die Konfigurations-Datei des Default-vHosts ändern:
nano /etc/nginx/sites-available/default
server name IP-OR-FQDN;
Beispiel: server_name example.com;
Wegen des PHP-FPM sollte man in jedem der vHosts die entsprechenden Zeilen enthalten haben:
location ~ \.php$ { include snippets/fastcgi-php.conf; # # # With php-fpm (or other unix sockets): fastcgi_pass unix:/run/php/php7.2-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; }
phpMyAdmin installieren
Zuerst installieren wir das phpMyAdmin Paket aus den Paketquellen.[3] Für die automatische Konfiguration treffen wir keine Auswahl, da wir weder apache2 noch lighttpd im Einsatz haben. Sofern der Installer nach einer automatischen Konfiguration mittels dbconfig-common fragt, bestätigen wir dies. Außerdem werden diverse Passwörter vergeben (bitte merken).
sudo apt install phpmyadmin
Danach wird ein Symlink vom Default-phpMyAdmin-Verzeichnis auf den WWW-Public-Folder gesetzt:
sudo ln -s /usr/share/phpmyadmin /var/www/html/phpmyadmin
Damit ein Aufruf via Browser möglich ist, muss nun noch ein vHost für NGINX erstellt werden, dazu bitte folgende Datei erstellen:
sudo nano /etc/nginx/sites-available/pma.example.com
Mit folgendem Inhalt befüllen:
server { listen 80; listen [::]:80; server_name pma.example.com; root /usr/share/phpmyadmin/; index index.php index.html index.htm index.nginx-debian.html; access_log /var/log/nginx/phpmyadmin_access.log; error_log /var/log/nginx/phpmyadmin_error.log; location / { try_files $uri $uri/ /index.php; } location ~ ^/(doc|sql|setup)/ { deny all; } location ~ \.php$ { fastcgi_pass unix:/run/php/php7.2-fpm.sock; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; include snippets/fastcgi-php.conf; } location ~ /\.ht { deny all; } }
Damit die Konfiguration aktiviert wird, muss man noch einen Symlink von der sites-available-Datei zum sites-enabled-Folder setzen:[4]
sudo ln -s /etc/nginx/sites-available/pma.example.com /etc/nginx/sites-enabled/
Nun den NGINX neustarten und phpMyAdmin sollte nun via Browser erreichbar sein:
sudo service nginx restart
Einzelnachweise
- ↑ nginx (nginx.org)
- ↑ Quick Reference LEMP Stack Install with PHP on Ubuntu (lemp.io, 14.01.2015)
- ↑ How to Install phpMyAdmin with Nginx (LEMP) on Ubuntu 18.04 LTS (linuxbabe.com, 18.05.2018)
- ↑ a2ensite for Nginx on Ubuntu (evermoretechnologies.com, 10.07.2017)
Autor: Jonas Sterr Ich beschäftige mich mit den Themen Software Defined Storage, Proxmox Virtualisierung auf Basis von KVM, QEMU & Ceph im Produktmanagement der Thomas-Krenn.AG in Freyung. Proxmox ist meine absolute Leidenschaft und ich freue mich gerne über Kontaktanfragen und einen Austausch auf LinkedIn.
|