So installieren Sie den Linux-, Apache-, MySQL-, PHP (LAMP) -Stack unter Ubuntu 16.04

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 ein Akronym, das dasLinux-Betriebssystem mit demApache-Webserver darstellt. Die Site-Daten werden in einerMySQL-Datenbank gespeichert, und dynamischer Inhalt wird vonPHP verarbeitet.

In diesem Handbuch wird ein LAMP-Stack auf einem Ubuntu 16.04-Droplet installiert. Ubuntu wird unsere erste Anforderung erfüllen: ein Linux-Betriebssystem.

Voraussetzungen

Bevor Sie mit diesem Handbuch beginnen, sollten Sie ein separates Benutzerkonto ohne Rootberechtigung mitsudo-Berechtigungen auf Ihrem Server einrichten. Sie können dies lernen, indem Sie die Schritte 1 bis 4 ininitial server setup for Ubuntu 16.04ausführen.

Schritt 1: Apache installieren und in Firewall zulassen

Der Apache-Webserver gehört zu den beliebtesten Webservern der Welt. Es ist gut dokumentiert und wurde in weiten Teilen der Geschichte des Webs verwendet. Dies macht es zu einer hervorragenden Standardoption für das Hosten einer Website.

Wir können Apache einfach mit Ubuntus Paketmanagerapt installieren. Mit einem Paketmanager können wir die meiste Software schmerzfrei aus einem von Ubuntu verwalteten Repository installieren. Weitere Informationen zuhow to use aptfinden Sie hier.

Für unsere Zwecke können wir mit den folgenden Befehlen beginnen:

sudo apt-get update
sudo apt-get install apache2

Da wir den Befehlsudo verwenden, werden diese Operationen 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, teilt Ihnenapt mit, welche Pakete installiert werden sollen und wie viel zusätzlichen Speicherplatz sie belegen werden. Drücken SieY und drücken SieEnter, um fortzufahren. Die Installation wird fortgesetzt.

Setzen Sie Global ServerName auf Syntaxwarnungen unterdrücken

Als Nächstes fügen wir der Datei/etc/apache2/apache2.confeine einzelne Zeile hinzu, um eine Warnmeldung zu unterdrücken. Wenn SieServerName nicht global festlegen, erhalten Sie, obwohl harmlos, die folgende Warnung, wenn Sie Ihre Apache-Konfiguration auf Syntaxfehler überprüfen:

sudo apache2ctl configtest
OutputAH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set the 'ServerName' directive globally to suppress this message
Syntax OK

Öffnen Sie die Hauptkonfigurationsdatei mit Ihrer Textbearbeitung:

sudo nano /etc/apache2/apache2.conf

Fügen Sie am Ende der Datei eineServerName-Direktive hinzu, die auf Ihren primären Domainnamen verweist. Wenn Ihrem Server kein Domänenname zugeordnet ist, können Sie die öffentliche IP-Adresse Ihres Servers verwenden:

Note

[.note] # Wenn Sie die IP-Adresse Ihres Servers nicht kennen, fahren Sie mit dem Abschnitt zuhow to find your server’s public IP address fort, um sie zu finden.
#

/etc/apache2/apache2.conf

. . .
ServerName server_domain_or_IP

Speichern und schließen Sie die Datei, wenn Sie fertig sind.

Überprüfen Sie als Nächstes, ob Syntaxfehler vorliegen, indem Sie Folgendes eingeben:

sudo apache2ctl configtest

Da wir die globaleServerName-Richtlinie hinzugefügt haben, sollten Sie nur Folgendes sehen:

OutputSyntax OK

Starten Sie Apache neu, um Ihre Änderungen zu implementieren:

sudo systemctl restart apache2

Jetzt können Sie die Firewall anpassen.

Passen Sie die Firewall an, um Webdatenverkehr zuzulassen

Angenommen, Sie haben die Anweisungen zur Ersteinrichtung des Servers befolgt, um die UFW-Firewall zu aktivieren, stellen Sie als Nächstes sicher, dass Ihre Firewall HTTP- und HTTPS-Datenverkehr zulässt. Sie können sicherstellen, dass UFW ein Anwendungsprofil für Apache hat:

sudo ufw app list
OutputAvailable applications:
  Apache
  Apache Full
  Apache Secure
  OpenSSH

Wenn Sie sich das Profil vonApache Fullansehen, sollte es zeigen, dass es den Verkehr zu den Ports 80 und 443 ermöglicht:

sudo ufw app info "Apache Full"
OutputProfile: Apache Full
Title: Web Server (HTTP,HTTPS)
Description: Apache v2 is the next generation of the omnipresent Apache web
server.

Ports:
  80,443/tcp

Eingehenden Datenverkehr für dieses Profil zulassen:

sudo ufw allow in "Apache Full"

Sie können sofort eine Stichprobe durchführen, um zu überprüfen, ob alles wie geplant verlaufen ist, indem Sie die öffentliche IP-Adresse Ihres Servers in Ihrem Webbrowser aufrufen (im Hinweis unter der nächsten Überschrift erfahren Sie, wie Ihre öffentliche IP-Adresse lautet, wenn Sie nicht über diese Informationen verfügen bereits):

http://your_server_IP_address

Sie sehen die standardmäßige Ubuntu 16.04 Apache-Webseite, die zu Informations- und Testzwecken zur Verfügung steht. Es sollte ungefähr so ​​aussehen:

Ubuntu 16.04 Apache default

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

So finden Sie die öffentliche IP-Adresse Ihres Servers

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.

Über die Befehlszeile finden Sie einige Möglichkeiten. Zunächst können Sie die Tools voniproute2verwenden, um Ihre 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, das Dienstprogrammcurlzu verwenden, um eine externe Partei zu kontaktieren und Ihnen mitzuteilen, wieit Ihren Server sieht. Sie können dies tun, indem Sie einen bestimmten Server nach Ihrer IP-Adresse fragen:

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

Unabhängig von der Methode, mit der Sie Ihre IP-Adresse abrufen, können Sie diese in die Adressleiste Ihres Webbrowsers eingeben, um zu Ihrem Server zu gelangen.

Schritt 2: Installieren Sie MySQL

Nachdem wir unseren Webserver eingerichtet haben, ist es Zeit, MySQL zu installieren. MySQL ist ein Datenbankverwaltungssystem. Grundsätzlich wird damit der Zugriff auf Datenbanken organisiert und bereitgestellt, in denen auf unserer Website Informationen gespeichert werden können.

Auch hier können wirapt verwenden, um unsere Software zu erwerben und zu installieren. Dieses Mal werden wir auch einige andere "Hilfspakete" installieren, die uns dabei unterstützen, dass unsere Komponenten miteinander kommunizieren:

sudo apt-get install mysql-server

[.note] #Note: In diesem Fall müssen Siesudo apt-get update nicht vor dem Befehl ausführen. Dies liegt daran, dass wir es kürzlich in den obigen Befehlen ausgeführt haben, um Apache zu installieren. Der Paketindex auf unserem Computer sollte bereits aktuell sein.
#

Auch hier wird eine Liste der zu installierenden Pakete angezeigt, zusammen mit dem Speicherplatz, den sie belegen. Geben SieY ein, um fortzufahren.

Während der Installation werden Sie von Ihrem Server aufgefordert, ein Kennwort für den MySQL-Root-Benutzer auszuwählen und zu bestätigen. Dies ist ein Administratorkonto in MySQL, das über erweiterte Berechtigungen verfügt. Stellen Sie sich das so vor, als würde es dem Root-Konto für den Server selbst ähneln (das, das Sie jetzt konfigurieren, ist jedoch ein MySQL-spezifisches Konto). Stellen Sie sicher, dass dies ein sicheres, eindeutiges Kennwort ist, und lassen Sie es nicht leer.

Nach Abschluss der Installation möchten wir ein einfaches Sicherheitsskript ausführen, das einige gefährliche Standardeinstellungen entfernt und den Zugriff auf unser Datenbanksystem ein wenig sperrt. Starten Sie das interaktive Skript, indem Sie Folgendes ausführen:

mysql_secure_installation

Sie werden aufgefordert, das Kennwort einzugeben, das Sie für das MySQL-Root-Konto festgelegt haben. Als nächstes werden Sie gefragt, ob SieVALIDATE PASSWORD PLUGIN konfigurieren möchten.

[.warning] #Warning: Das Aktivieren dieser Funktion ist eine Art Urteilsaufruf. Wenn diese Option aktiviert ist, werden Kennwörter, die nicht den angegebenen Kriterien entsprechen, von MySQL mit einem Fehler abgelehnt. Dies führt zu Problemen, wenn Sie ein schwaches Kennwort in Verbindung mit einer Software verwenden, die automatisch MySQL-Benutzeranmeldeinformationen konfiguriert, z. B. die Ubuntu-Pakete für phpMyAdmin. Es ist sicher, die Validierung deaktiviert zu lassen, aber Sie sollten immer sichere, eindeutige Kennwörter für Datenbankanmeldeinformationen verwenden.
#

Beantworten Siey mit Ja oder etwas anderem, um fortzufahren, ohne es zu aktivieren.

VALIDATE PASSWORD PLUGIN can be used to test passwords
and improve security. It checks the strength of password
and allows the users to set only those passwords which are
secure enough. Would you like to setup VALIDATE PASSWORD plugin?

Press y|Y for Yes, any other key for No:

Sie werden aufgefordert, eine Ebene für die Kennwortüberprüfung auszuwählen. Beachten Sie, dass bei der Eingabe von2 für die stärkste Ebene Fehler auftreten, wenn Sie versuchen, ein Kennwort festzulegen, das keine Zahlen, Groß- und Kleinbuchstaben sowie Sonderzeichen enthält oder auf einem allgemeinen Wörterbuch basiert Wörter.

There are three levels of password validation policy:

LOW    Length >= 8
MEDIUM Length >= 8, numeric, mixed case, and special characters
STRONG Length >= 8, numeric, mixed case, special characters and dictionary                  file

Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 1

Wenn Sie die Kennwortüberprüfung aktiviert haben, wird eine Kennwortstärke für das vorhandene Root-Kennwort angezeigt, und Sie werden gefragt, ob Sie dieses Kennwort ändern möchten. Wenn Sie mit Ihrem aktuellen Passwort zufrieden sind, geben Sie an der Eingabeaufforderungn für "Nein" ein:

Using existing password for root.

Estimated strength of the password: 100
Change the password for root ? ((Press y|Y for Yes, any other key for No) : n

Für den Rest der Fragen sollten SieY drücken und an jeder Eingabeaufforderung die TasteEnter drücken. Dadurch werden einige anonyme Benutzer und die Testdatenbank entfernt, Remote-Root-Anmeldungen deaktiviert und diese neuen Regeln geladen, sodass MySQL die von uns vorgenommenen Änderungen sofort berücksichtigt.

Jetzt ist Ihr Datenbanksystem eingerichtet und wir können weitermachen.

Schritt 3: Installieren Sie PHP

PHP ist die Komponente unseres Setups, die Code verarbeitet, um dynamischen Inhalt anzuzeigen. Es kann Skripte ausführen, eine Verbindung zu unseren MySQL-Datenbanken herstellen, um Informationen abzurufen, und den verarbeiteten Inhalt an unseren Webserver übergeben, um ihn anzuzeigen.

Wir können dasapt-System erneut nutzen, um unsere Komponenten zu installieren. Wir werden auch einige Hilfspakete einbinden, damit PHP-Code unter dem Apache-Server ausgeführt werden und mit unserer MySQL-Datenbank kommunizieren kann:

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

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

In den meisten Fällen möchten wir 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 derzeit zunächst nach einer Datei mit dem Namenindex.html. Wir möchten unseren Webserver anweisen, PHP-Dateien zu bevorzugen, daher wird Apache zuerst nach einerindex.php-Datei suchen.

Geben Sie dazu diesen Befehl ein, um die Dateidir.confin 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


    DirectoryIndex index.html index.cgi index.pl index.php index.xhtml index.htm

Wir möchten die oben hervorgehobene PHP-Indexdatei wie folgt an die erste Position nach der Spezifikation vonDirectoryIndexverschieben:

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


    DirectoryIndex index.php index.html index.cgi index.pl index.xhtml index.htm

Wenn Sie fertig sind, speichern und schließen Sie die Datei, indem SieCtrl-X drücken. Sie müssen das Speichern bestätigen, indem SieY eingeben und dannEnter drücken, um den Speicherort der Datei zu bestätigen.

Danach müssen wir den Apache-Webserver neu starten, damit unsere Änderungen erkannt werden. Sie können dies tun, indem Sie Folgendes eingeben:

sudo systemctl restart apache2

Wir können den Status des Dienstesapache2auch mitsystemctl überprüfen:

sudo systemctl status apache2
Sample Output● apache2.service - LSB: Apache2 web server
   Loaded: loaded (/etc/init.d/apache2; bad; vendor preset: enabled)
  Drop-In: /lib/systemd/system/apache2.service.d
           └─apache2-systemd.conf
   Active: active (running) since Wed 2016-04-13 14:28:43 EDT; 45s ago
     Docs: man:systemd-sysv-generator(8)
  Process: 13581 ExecStop=/etc/init.d/apache2 stop (code=exited, status=0/SUCCESS)
  Process: 13605 ExecStart=/etc/init.d/apache2 start (code=exited, status=0/SUCCESS)
    Tasks: 6 (limit: 512)
   CGroup: /system.slice/apache2.service
           ├─13623 /usr/sbin/apache2 -k start
           ├─13626 /usr/sbin/apache2 -k start
           ├─13627 /usr/sbin/apache2 -k start
           ├─13628 /usr/sbin/apache2 -k start
           ├─13629 /usr/sbin/apache2 -k start
           └─13630 /usr/sbin/apache2 -k start

Apr 13 14:28:42 ubuntu-16-lamp systemd[1]: Stopped LSB: Apache2 web server.
Apr 13 14:28:42 ubuntu-16-lamp systemd[1]: Starting LSB: Apache2 web server...
Apr 13 14:28:42 ubuntu-16-lamp apache2[13605]:  * Starting Apache httpd web server apache2
Apr 13 14:28:42 ubuntu-16-lamp apache2[13605]: AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set the 'ServerNam
Apr 13 14:28:43 ubuntu-16-lamp apache2[13605]:  *
Apr 13 14:28:43 ubuntu-16-lamp systemd[1]: Started LSB: Apache2 web server.

Installieren Sie PHP-Module

Um die Funktionalität von PHP zu verbessern, können wir optional einige zusätzliche Module installieren.

Um die verfügbaren Optionen für PHP-Module und -Bibliotheken anzuzeigen, können Sie die Ergebnisse vonapt-cache search inless umleiten, einen Pager, mit dem Sie durch die Ausgabe anderer Befehle scrollen können:

apt-cache search php- | less

Verwenden Sie die Pfeiltasten, um nach oben und unten zu scrollen, undq, um das Programm zu beenden.

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

libnet-libidn-perl - Perl bindings for GNU Libidn
php-all-dev - package depending on all supported PHP development packages
php-cgi - server-side, HTML-embedded scripting language (CGI binary) (default)
php-cli - command-line interpreter for the PHP scripting language (default)
php-common - Common files for PHP packages
php-curl - CURL module for PHP [default]
php-dev - Files for PHP module development (default)
php-gd - GD module for PHP [default]
php-gmp - GMP module for PHP [default]
…
:

Um weitere Informationen zu den Funktionen der einzelnen Module zu erhalten, können Sie entweder im Internet suchen oder sich die ausführliche Beschreibung des Pakets ansehen, indem Sie Folgendes eingeben:

apt-cache show package_name

Es wird viel ausgegeben, mit einem Feld namensDescription-en, das eine längere Erklärung der vom Modul bereitgestellten Funktionen enthält.

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

apt-cache show php-cli

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

Output…
Description-en: 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 Befehlapt-get install tun, wie wir es für unsere andere Software getan haben.

Wenn wir entscheiden würden, dassphp-cli etwas ist, das wir brauchen, könnten wir Folgendes eingeben:

sudo apt-get install php-cli

Wenn Sie mehr als ein Modul installieren möchten, können Sie dies tun, indem Sie jedes Modul durch ein Leerzeichen getrennt auflisten und dem Befehlapt-get installfolgendermaßen folgen:

sudo apt-get install package1 package2 ...

Zu diesem Zeitpunkt ist Ihr LAMP-Stack installiert und konfiguriert. Wir sollten unser PHP trotzdem testen.

Schritt 4: Testen Sie die PHP-Verarbeitung auf Ihrem Webserver

Um zu testen, ob unser System richtig für PHP konfiguriert ist, können wir ein sehr einfaches PHP-Skript erstellen.

Wir werden dieses Skriptinfo.php nennen. Damit Apache die Datei finden und korrekt bereitstellen kann, muss sie in einem bestimmten Verzeichnis gespeichert werden, das als "Web-Root" bezeichnet wird.

In Ubuntu 16.04 befindet sich dieses Verzeichnis bei/var/www/html/. Wir können die Datei an diesem Ort erstellen, indem wir Folgendes eingeben:

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

Dies öffnet eine leere Datei. Wir möchten den folgenden Text, bei dem es sich um gültigen PHP-Code handelt, in die Datei einfügen:

info.php

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

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

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

http://your_server_IP_address/info.php

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

Ubuntu 16.04 default PHP info

Auf dieser Seite finden Sie im Wesentlichen 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 dies erfolgreich war, 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. Dazu können Sie Folgendes eingeben:

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.

Als unmittelbaren nächsten Schritt sollten Sie sicherstellen, dass die Verbindungen zu Ihrem Webserver gesichert sind, indem Sie sie über HTTPS bereitstellen. Die einfachste Option ist hieruse Let’s Encrypt, um Ihre Site mit einem kostenlosen TLS / SSL-Zertifikat zu sichern.

Einige andere beliebte Optionen sind:

Note: Wir werden die obigen Links zu unserer 16.04-Dokumentation so aktualisieren, wie sie geschrieben wurde.