Wie installiere ich Linux, Apache, MariaDB, PHP (LAMP) auf Debian 9?

Einführung

Ein "LAMP" -Stack ist eine Gruppe von Open Source-Software, die normalerweise zusammen installiert wird, damit ein Server dynamische Websites und Web-Apps hosten kann. Dieser Begriff ist eigentlich eine Abkürzung für das Betriebssystem L inux mit dem Webserver A pache. Die Site-Daten werden in einer M ariaDB-Datenbank gespeichert, und dynamischer Inhalt wird von P HP verarbeitet.

In diesem Handbuch werden wir einen LAMP-Stack auf einem Debian 9-Server installieren.

Voraussetzungen

Um dieses Tutorial abzuschließen, benötigen Sie einen Debian 9-Server mit einem nicht-root-fähigen Benutzerkonto und einer grundlegenden Firewall. Dies kann unter Verwendung unserer initial server setup guide for Debian 9 konfiguriert werden.

Schritt 1 - Installieren von Apache und Aktualisieren der Firewall

Der Apache-Webserver gehört zu den beliebtesten Webservern der Welt. Es ist gut dokumentiert und wurde in weiten Teilen der Webgeschichte verwendet. Daher ist es eine hervorragende Standardoption für das Hosten einer Website.

Installieren Sie Apache mit dem Debian-Paketmanager + apt +:

sudo apt update
sudo apt install apache2

Da dies ein "+ sudo +" - Befehl ist, werden diese Vorgänge mit Root-Rechten ausgeführt. Sie werden aufgefordert, das Kennwort Ihres regulären Benutzers einzugeben, um Ihre Absichten zu überprüfen.

Sobald Sie Ihr Passwort eingegeben haben, gibt "+ apt " an, welche Pakete installiert werden sollen und wie viel zusätzlichen Speicherplatz sie belegen. Drücken Sie ` Y ` und drücken Sie ` ENTER`, um fortzufahren. Die Installation wird fortgesetzt.

Stellen Sie als Nächstes sicher, dass Ihre Firewall HTTP- und HTTPS-Datenverkehr zulässt, vorausgesetzt, Sie haben die Anweisungen zur Ersteinrichtung des Servers befolgt, indem Sie die UFW-Firewall installiert und aktiviert.

Bei der Installation unter Debian 9 wird UFW mit App-Profilen geliefert, mit denen Sie Ihre Firewall-Einstellungen anpassen können. Zeigen Sie die vollständige Liste der Anwendungsprofile an, indem Sie Folgendes ausführen:

sudo ufw app list

Die Profile "+ WWW +" werden zum Verwalten der von Webservern verwendeten Ports verwendet:

OutputAvailable applications:
. . .
 WWW
 WWW Cache
 WWW Full
 WWW Secure
. . .

Wenn Sie das Profil "+ WWW Full " überprüfen, wird angezeigt, dass der Datenverkehr zu den Ports " 80 " und " 443 +" aktiviert wird:

sudo ufw app info "WWW Full"
OutputProfile: WWW Full
Title: Web Server (HTTP,HTTPS)
Description: Web Server (HTTP,HTTPS)

Ports:
 ,

Zulassen von eingehendem HTTP- und HTTPS-Verkehr für dieses Profil:

sudo ufw allow in “WWW Full”

Sie können sofort eine Stichprobe durchführen, um sicherzustellen, dass alles wie geplant gelaufen ist, indem Sie die öffentliche IP-Adresse Ihres Servers in Ihrem Webbrowser aufrufen:

http://

Sie sehen die Standard-Debian 9-Apache-Webseite, die zu Informations- und Testzwecken zur Verfügung steht. Es sollte ungefähr so ​​aussehen:

image: http: //assets.digitalocean.com/how-to-install-lamp-debian-9/small_apache_default_debian9.png [Debian 9 Apache-Standard]

Wenn Sie diese Seite sehen, ist Ihr Webserver jetzt korrekt installiert und über Ihre Firewall erreichbar.

Wenn Sie die öffentliche IP-Adresse Ihres Servers nicht kennen, gibt es verschiedene Möglichkeiten, diese zu ermitteln. In der Regel ist dies die Adresse, die Sie für die Verbindung zu Ihrem Server über SSH verwenden.

Es gibt verschiedene Möglichkeiten, dies über die Befehlszeile zu tun. Zuerst können Sie die Werkzeuge "+ iproute2 +" verwenden, um Ihre IP-Adresse zu erhalten, indem Sie Folgendes eingeben:

ip addr show eth0 | grep inet | awk '{ print $2; }' | sed 's/\/.*$//'

Dies gibt Ihnen zwei oder drei Zeilen zurück. Alle Adressen sind korrekt, aber Ihr Computer kann möglicherweise nur eine von ihnen verwenden. Probieren Sie also jede einzelne aus.

Eine alternative Methode besteht darin, mit dem Dienstprogramm "+ curl +" eine externe Partei zu kontaktieren, um zu erfahren, wie es Ihren Server sieht. Fragen Sie dazu einen bestimmten Server nach Ihrer IP-Adresse:

sudo apt install curl
curl http://icanhazip.com

Unabhängig von der Methode, mit der Sie Ihre IP-Adresse abrufen, geben Sie diese in die Adressleiste Ihres Webbrowsers ein, um die Standard-Apache-Seite anzuzeigen.

Schritt 2 - MariaDB installieren

Nachdem Sie Ihren Webserver eingerichtet haben, ist es Zeit, MariaDB zu installieren. MariaDB ist ein Datenbankverwaltungssystem. Grundsätzlich wird damit der Zugriff auf Datenbanken organisiert und bereitgestellt, in denen Ihre Site Informationen speichern kann.

MariaDB ist eine von der Community erstellte Abzweigung von MySQL. In Debian 9 ist der Standard-MySQL-Server MariaDB 10.1, und das Paket + mysql-server +, das normalerweise zur Installation von MySQL verwendet wird, ist ein Übergangspaket, das MariaDB tatsächlich installiert. Es wird jedoch empfohlen, MariaDB mit dem eigentlichen Programmpaket "+ mariadb-server" zu installieren.

Verwenden Sie erneut "+ apt +", um diese Software zu erwerben und zu installieren:

sudo apt install mariadb-server

Mit diesem Befehl erhalten Sie auch eine Liste der zu installierenden Pakete sowie den Speicherplatz, den sie belegen. Geben Sie "+ Y +" ein, um fortzufahren.

Führen Sie nach Abschluss der Installation ein einfaches Sicherheitsskript aus, das mit MariaDB vorinstalliert wird. Dadurch werden einige unsichere Standardeinstellungen entfernt und der Zugriff auf Ihr Datenbanksystem gesperrt. Starten Sie das interaktive Skript, indem Sie Folgendes ausführen:

sudo mysql_secure_installation

Hier werden Sie durch eine Reihe von Eingabeaufforderungen geführt, in denen Sie einige Änderungen an den Sicherheitsoptionen Ihrer MariaDB-Installation vornehmen können. Bei der ersten Aufforderung werden Sie aufgefordert, das aktuelle Datenbankkennwort * root * einzugeben. Dies ist ein Administratorkonto in MariaDB mit erweiterten Berechtigungen. Stellen Sie sich das so vor, als wäre es dem * root * -Konto für den Server selbst ähnlich (obwohl das Konto, das Sie gerade konfigurieren, ein MariaDB-spezifisches Konto ist). Da Sie gerade MariaDB installiert haben und noch keine Konfigurationsänderungen vorgenommen haben, ist dieses Passwort leer. Drücken Sie einfach an der Eingabeaufforderung die Taste "+ ENTER +".

Bei der nächsten Eingabeaufforderung werden Sie gefragt, ob Sie ein Datenbankkennwort * root * einrichten möchten. Geben Sie "+ A " ein und drücken Sie " ENTER". In Debian ist das * root * -Konto für MariaDB eng mit der automatisierten Systemwartung verknüpft, daher sollten wir die konfigurierten Authentifizierungsmethoden für dieses Konto nicht ändern. Andernfalls könnte eine Paketaktualisierung das Datenbanksystem beschädigen, indem der Zugriff auf das Administratorkonto aufgehoben wird. Später wird erläutert, wie Sie optional ein zusätzliches Administratorkonto für den Kennwortzugriff einrichten können, wenn die Socket-Authentifizierung für Ihren Anwendungsfall nicht geeignet ist.

Von dort aus können Sie + Y + und dann + ENTER + drücken, um die Standardeinstellungen für alle nachfolgenden Fragen zu übernehmen. Dadurch werden einige anonyme Benutzer und die Testdatenbank entfernt, entfernte * root * -Logins deaktiviert und diese neuen Regeln geladen, sodass MariaDB die von Ihnen vorgenommenen Änderungen sofort berücksichtigt.

Bei Neuinstallationen auf Debian-Systemen ist der Benutzer * root * MariaDB so eingestellt, dass er sich standardmäßig mit dem Plugin + unix_socket + und nicht mit einem Passwort authentifiziert. Dies bietet in vielen Fällen eine größere Sicherheit und Benutzerfreundlichkeit, kann jedoch auch kompliziert sein, wenn Sie einem externen Programm (z. B. phpMyAdmin) Administratorrechte erteilen müssen.

Da der Server das * root * -Konto für Aufgaben wie die Protokollrotation und das Starten und Stoppen des Servers verwendet, sollten Sie die Authentifizierungsdetails des * root * -Kontos nicht ändern. Das Ändern der Kontoanmeldeinformationen in der Datei "+ /etc/mysql/debian.cnf +" funktioniert möglicherweise zunächst, aber Paketaktualisierungen können diese Änderungen möglicherweise überschreiben. Anstatt das * root * -Konto zu ändern, empfehlen die Paketbetreuer, ein separates Administratorkonto zu erstellen, wenn Sie einen kennwortbasierten Zugriff einrichten müssen.

Zu diesem Zweck erstellen wir ein neues Konto mit dem Namen "+ admin +" mit denselben Funktionen wie das Konto "* root *", das jedoch für die Kennwortauthentifizierung konfiguriert ist. Öffnen Sie dazu die MariaDB-Eingabeaufforderung von Ihrem Terminal aus:

sudo mariadb

Jetzt können wir einen neuen Benutzer mit * root * -Privilegien und passwortbasiertem Zugriff erstellen. Ändern Sie den Benutzernamen und das Passwort nach Ihren Wünschen:

GRANT ALL ON *.* TO ''@'localhost' IDENTIFIED BY '' WITH GRANT OPTION;

Löschen Sie die Berechtigungen, um sicherzustellen, dass sie in der aktuellen Sitzung gespeichert und verfügbar sind:

FLUSH PRIVILEGES;

Beenden Sie anschließend die MariaDB-Shell:

exit

Wenn Sie nun als neuer Administrator auf Ihre Datenbank zugreifen möchten, müssen Sie sich als dieser Benutzer mit dem Kennwort authentifizieren, das Sie gerade mit dem folgenden Befehl festgelegt haben:

mariadb -u  -p

Zu diesem Zeitpunkt ist Ihr Datenbanksystem eingerichtet und Sie können mit der Installation von PHP, der letzten Komponente des LAMP-Stacks, fortfahren.

Schritt 3 - PHP installieren

PHP ist die Komponente Ihres Setups, die Code verarbeitet, um dynamischen Inhalt anzuzeigen. Es kann Skripts ausführen, eine Verbindung zu Ihren MariaDB-Datenbanken herstellen, um Informationen abzurufen, und den verarbeiteten Inhalt zur Anzeige an Ihren Webserver übergeben.

Nutzen Sie erneut das "+ apt +" - System, um PHP zu installieren. Fügen Sie diesmal außerdem einige Hilfspakete hinzu, damit PHP-Code unter dem Apache-Server ausgeführt werden und mit Ihrer MariaDB-Datenbank kommunizieren kann:

sudo apt install php libapache2-mod-php php-mysql

Dies sollte PHP ohne Probleme installieren. Wir werden dies gleich testen.

In den meisten Fällen möchten Sie die Art und Weise ändern, in der Apache Dateien bereitstellt, wenn ein Verzeichnis angefordert wird. Wenn ein Benutzer ein Verzeichnis vom Server anfordert, sucht Apache zunächst nach einer Datei mit dem Namen "+ index.html ". Wir möchten den Webserver anweisen, PHP-Dateien anderen vorzuziehen, also lassen Sie Apache zuerst nach einer ` index.php +` -Datei suchen.

Geben Sie dazu diesen Befehl ein, um die Datei + dir.conf + in einem Texteditor mit Root-Rechten zu öffnen:

sudo nano /etc/apache2/mods-enabled/dir.conf

Es wird so aussehen:

/etc/apache2/mods-enabled/dir.conf

<IfModule mod_dir.c>
   DirectoryIndex index.html index.cgi index.pl  index.xhtml index.htm
</IfModule>

Verschieben Sie die PHP-Indexdatei (oben hervorgehoben) an die erste Position nach der Angabe von + DirectoryIndex +, wie folgt:

/etc/apache2/mods-enabled/dir.conf

<IfModule mod_dir.c>
   DirectoryIndex  index.html index.cgi index.pl index.xhtml index.htm
</IfModule>

Wenn Sie fertig sind, speichern und schließen Sie die Datei, indem Sie "+ STRG + X " drücken. Bestätigen Sie das Speichern, indem Sie " Y " eingeben und dann " ENTER +" drücken, um den Speicherort der Datei zu überprüfen.

Starten Sie danach den Apache-Webserver neu, damit Ihre Änderungen erkannt werden. Tun Sie dies, indem Sie Folgendes eingeben:

sudo systemctl restart apache2

Sie können den Status des Dienstes "+ apache2 " auch mit " systemctl +" überprüfen:

sudo systemctl status apache2
Sample Output● apache2.service - The Apache HTTP Server
  Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled)
  Active: active (running) since Tue 2018-09-04 18:23:03 UTC; 9s ago
 Process: 22209 ExecStop=/usr/sbin/apachectl stop (code=exited, status=0/SUCCESS)
 Process: 22216 ExecStart=/usr/sbin/apachectl start (code=exited, status=0/SUCCESS)
Main PID: 22221 (apache2)
   Tasks: 6 (limit: 4915)
  CGroup: /system.slice/apache2.service
          ├─22221 /usr/sbin/apache2 -k start
          ├─22222 /usr/sbin/apache2 -k start
          ├─22223 /usr/sbin/apache2 -k start
          ├─22224 /usr/sbin/apache2 -k start
          ├─22225 /usr/sbin/apache2 -k start
          └─22226 /usr/sbin/apache2 -k start

Um die Funktionalität von PHP zu verbessern, haben Sie die Möglichkeit, einige zusätzliche Module zu installieren. Um die verfügbaren Optionen für PHP-Module und -Bibliotheken anzuzeigen, leiten Sie die Ergebnisse von "+ apt search " in " less +", einen Pager, mit dem Sie durch die Ausgabe anderer Befehle scrollen können:

apt search php- | less

Scrollen Sie mit den Pfeiltasten nach oben und unten und drücken Sie + Q +, um den Vorgang zu beenden.

Das Ergebnis sind alle optionalen Komponenten, die Sie installieren können. Es gibt Ihnen eine kurze Beschreibung für jede:

OutputSorting...
Full Text Search...
bandwidthd-pgsql/stable 2.0.1+cvs20090917-10 amd64
 Tracks usage of TCP/IP and builds html files with graphs

bluefish/stable 2.2.9-1+b1 amd64
 advanced Gtk+ text editor for web and software development

cacti/stable 0.8.8h+ds1-10 all
 web interface for graphing of monitoring systems

cakephp-scripts/stable 2.8.5-1 all
 rapid application development framework for PHP (scripts)

ganglia-webfrontend/stable 3.6.1-3 all
 cluster monitoring toolkit - web front-end

haserl/stable 0.9.35-2+b1 amd64
 CGI scripting program for embedded environments

kdevelop-php-docs/stable 5.0.3-1 all
 transitional package for kdevelop-php

kdevelop-php-docs-l10n/stable 5.0.3-1 all
 transitional package for kdevelop-php-l10n
…
:

Um mehr über die Funktionen der einzelnen Module zu erfahren, können Sie im Internet nach weiteren Informationen suchen. Alternativ können Sie sich die ausführliche Beschreibung des Pakets ansehen, indem Sie Folgendes eingeben:

apt show

Es wird viel ausgegeben, mit einem Feld namens "+ Description +", das eine längere Erklärung der vom Modul bereitgestellten Funktionen enthält.

Um beispielsweise herauszufinden, was das + php-cli + - Modul tut, können Sie Folgendes eingeben:

apt show php-cli

Zusammen mit einer großen Menge anderer Informationen finden Sie Folgendes:

Output…
Description: command-line interpreter for the PHP scripting language (default)
This package provides the /usr/bin/php command interpreter, useful for
testing PHP scripts from a shell or performing general shell scripting tasks.
.
PHP (recursive acronym for PHP: Hypertext Preprocessor) is a widely-used
open source general-purpose scripting language that is especially suited
for web development and can be embedded into HTML.
.
This package is a dependency package, which depends on Debian's default
PHP version (currently 7.0).
…

Wenn Sie nach der Recherche entscheiden, dass Sie ein Paket installieren möchten, können Sie dies mit dem Befehl + apt install + tun, wie Sie es für die andere Software getan haben.

Wenn Sie entschieden haben, dass "+ php-cli +" etwas ist, das Sie brauchen, können Sie Folgendes eingeben:

sudo apt install php-cli

Wenn Sie mehr als ein Modul installieren möchten, können Sie dies tun, indem Sie jedes durch ein Leerzeichen getrennte Modul mit dem Befehl + apt install + wie folgt auflisten:

sudo apt install

Zu diesem Zeitpunkt ist Ihr LAMP-Stack installiert und konfiguriert. Bevor Sie jedoch weitere Änderungen vornehmen oder eine Anwendung bereitstellen, ist es hilfreich, Ihre PHP-Konfiguration proaktiv zu testen, falls Probleme auftreten, die behoben werden sollten.

Schritt 4 - Testen der PHP-Verarbeitung auf Ihrem Webserver

Um zu testen, ob Ihr System richtig für PHP konfiguriert ist, erstellen Sie ein sehr einfaches PHP-Skript mit dem Namen "+ info.php +". Damit Apache diese Datei finden und korrekt bereitstellen kann, muss sie in einem ganz bestimmten Verzeichnis namens "Web Root" gespeichert werden.

In Debian 9 befindet sich dieses Verzeichnis unter + / var / www / html / +. Erstellen Sie die Datei an diesem Speicherort, indem Sie Folgendes ausführen:

sudo nano /var/www/html/info.php

Dies öffnet eine leere Datei. Fügen Sie den folgenden Text (gültiger PHP-Code) in die Datei ein:

/var/www/html/info.php

<?php
phpinfo();
?>

Wenn Sie fertig sind, speichern und schließen Sie die Datei.

Jetzt können Sie testen, ob Ihr Webserver die von diesem PHP-Skript erzeugten Inhalte korrekt anzeigen kann. Um dies auszuprobieren, besuchen Sie diese Seite in Ihrem Webbrowser. Sie benötigen die öffentliche IP-Adresse Ihres Servers erneut.

Die Adresse, die Sie besuchen möchten, lautet:

http:///info.php

Die Seite, zu der Sie kommen, sollte ungefähr so ​​aussehen:

Diese Seite enthält einige grundlegende Informationen zu Ihrem Server aus Sicht von PHP. Dies ist nützlich für das Debuggen und um sicherzustellen, dass Ihre Einstellungen korrekt angewendet werden.

Wenn Sie diese Seite in Ihrem Browser sehen können, funktioniert Ihr PHP wie erwartet.

Sie möchten diese Datei wahrscheinlich nach diesem Test entfernen, da sie möglicherweise nicht autorisierten Benutzern Informationen über Ihren Server liefert. Führen Sie dazu den folgenden Befehl aus:

sudo rm /var/www/html/info.php

Sie können diese Seite jederzeit neu erstellen, wenn Sie später erneut auf die Informationen zugreifen müssen.

Fazit

Nachdem Sie nun einen LAMP-Stack installiert haben, haben Sie viele Möglichkeiten, was Sie als Nächstes tun möchten. Grundsätzlich haben Sie eine Plattform installiert, mit der Sie die meisten Arten von Websites und Websoftware auf Ihrem Server installieren können.