GNU/Linux >> LINUX-Kenntnisse >  >> Ubuntu

Ubuntu 16.04 (LTS) LAMP-Server-Tutorial mit Apache, PHP 7 und MySQL

LAMP ist die Abkürzung für L inux, A pache, M ySQL, P PS. Dieses Tutorial zeigt, wie Sie einen Apache-Webserver auf einem Ubuntu 16.04 LTS (Xenial Xerus) Server mit PHP 7 (mod_php) und MySQL/MariaDB-Unterstützung installieren und wie Sie ein SSL-Zertifikat mit Let’s encrypt einrichten. Zusätzlich werde ich PHPMyAdmin installieren, um die MySQL-Administration zu vereinfachen. Ein LAMP-Setup ist eine perfekte Basis für gängige CMS-Systeme wie Joomla, Wordpress oder Drupal.

Vorbemerkung

In diesem Tutorial verwende ich den Hostnamen server1.example.com mit der IP-Adresse 192.168.1.100. Diese Einstellungen können für Sie abweichen, daher müssen Sie sie gegebenenfalls ersetzen.

Ich empfehle, ein minimales Ubuntu-Server-Setup als Grundlage für das Tutorial zu verwenden, das kann ein virtuelles oder Root-Server-Image mit einer Ubuntu 16.04-Minimalinstallation von einem Webhosting-Unternehmen sein, oder Sie verwenden unser minimales Server-Tutorial, um einen Server von Grund auf neu zu installieren.

Ich führe alle Schritte in diesem Tutorial mit Root-Rechten aus, stellen Sie also sicher, dass Sie als Root angemeldet sind:

sudo su

1. MySQL oder MariaDB-Datenbank installieren

Derzeit sind zwei weit verbreitete MySQL-Datenbanksysteme verfügbar, der klassische "MySQL"-Server, der von Oracle entwickelt wurde und jetzt in Version 5.7 verfügbar ist, und der MySQL-Fork namens MariaDB, der vom ursprünglichen MySQL-Entwickler Monty Widenius entwickelt wurde.

Im Folgenden zeige ich Ihnen, wie Sie beide Alternativen installieren. Folgen Sie einfach entweder Kapitel 1.1 oder 1.2, aber nicht beiden. Ich werde MySQL 5.7 für das Image der virtuellen Maschine verwenden, das von Howtoforge heruntergeladen werden kann.

1.1 Installieren Sie MySQL 5.7

Um MySQL 5.7 zu installieren, führen Sie diesen Befehl aus:

apt-get -y install mysql-server mysql-client

Die Pakete mysql-server und mysql-client sind sogenannte 'Meta-Pakete', sie installieren immer die neueste MySQL-Version, die von Ubuntu erhältlich ist. Die neueste Version ist derzeit MySQL 5.7.

Wir haben das Root-Passwort für MySQL bereits während der Installation festgelegt, aber ich möchte die anonyme Benutzer- und Testdatenbank aus Sicherheitsgründen entfernen. Führen Sie dazu den folgenden mysql_secure_installation-Befehl aus.

mysql_secure_installation

Ihnen werden folgende Fragen gestellt:

Securing the MySQL server deployment.
Enter password for user root: <-- Enter the MySQL root password
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:
Using existing password for root.
Change the password for root ? ((Press y|Y for Yes, any other key for No) : <-- Choose 'y' here if you like to enable the password validation, I don't need that function, so I choose 'n' here.
... skipping.
By default, a MySQL installation has an anonymous user,
allowing anyone to log into MySQL without having to have
a user account created for them. This is intended only for
testing, and to make the installation go a bit smoother.
You should remove them before moving into a production
environment.
Remove anonymous users? (Press y|Y for Yes, any other key for No) : <-- y
Success.

Normally, root should only be allowed to connect from
'localhost'. This ensures that someone cannot guess at
the root password from the network.
Disallow root login remotely? (Press y|Y for Yes, any other key for No) : <-- y
Success.
By default, MySQL comes with a database named 'test' that
anyone can access. This is also intended only for testing,
and should be removed before moving into a production
environment.

Remove test database and access to it? (Press y|Y for Yes, any other key for No) : <-- y
- Dropping test database...
Success.
- Removing privileges on test database...
Success.
Reloading the privilege tables will ensure that all changes
made so far will take effect immediately.
Reload privilege tables now? (Press y|Y for Yes, any other key for No) : <-- y
Success.
All done!

Das MySQL-Setup ist jetzt gesichert.

1.2 MariaDB 10 installieren

Führen Sie den folgenden Befehl aus, um den MariaDB-Server und -Client zu installieren:

apt-get -y install mariadb-server mariadb-client

Jetzt setzen wir ein Root-Passwort für MariaDB.

mysql_secure_installation

Ihnen werden folgende Fragen gestellt:

Enter current password for root (enter for none): <-- press enter
Set root password? [Y/n] <-- y
New password: <-- Enter the new MariaDB root password here
Re-enter new password: <-- Repeat the password
Remove anonymous users? [Y/n] <-- y
Disallow root login remotely? [Y/n] <-- y
Reload privilege tables now? [Y/n] <-- y

Testen Sie die Anmeldung bei MariaDB mit dem "mysql-Befehl"

mysql -u root -p

und geben Sie das MariaDB-Root-Passwort ein, das Sie oben festgelegt haben. Das Ergebnis sollte dem folgenden Screenshot ähneln:

Um die MariaDB-Shell zu verlassen, geben Sie den Befehl „quit“ ein und drücken Sie die Eingabetaste.

2. Installieren Sie den Apache-Webserver

Apache 2 ist als Ubuntu-Paket verfügbar, daher können wir es wie folgt installieren:

apt-get -y install apache2

Richten Sie nun Ihren Browser auf http://192.168.1.100, und Sie sollten die Apache2-Standardseite sehen (es funktioniert!):

Das Dokumentenstammverzeichnis des Apache-Standard-Vhosts ist /var/www/html unter Ubuntu und die Hauptkonfigurationsdatei ist /etc/apache2/apache2.conf. Das Konfigurationssystem ist in /usr/share/doc/apache2/README.Debian.gz vollständig dokumentiert .

3. Installieren Sie PHP 7

Wir können PHP 7 und das Apache PHP-Modul wie folgt installieren:

apt-get -y install php7.0 libapache2-mod-php7.0

Starten Sie dann Apache neu:

systemctl restart apache2

4. Testen Sie PHP und erhalten Sie Details zu Ihrer PHP-Installation

Das Dokumentenstammverzeichnis der Standardwebsite ist /var/www/html. In diesem Verzeichnis erstellen wir nun eine kleine PHP-Datei (info.php) und rufen sie in einem Browser auf. Die Datei zeigt viele nützliche Details über unsere PHP-Installation an, wie z. B. die installierte PHP-Version.

nano /var/www/html/info.php
<?php
phpinfo();
?>

Ändern Sie dann den Eigentümer der Datei info.php in den Benutzer und die Gruppe www-data.

chown www-data:www-data /var/www/html/info.php

Nun nennen wir diese Datei in einem Browser (z. B. http://192.168.1.100/info.php):

Wie Sie sehen, funktioniert PHP 7.0 und es funktioniert über den Apache 2.0-Handler, wie in der Server-API-Zeile gezeigt. Wenn Sie weiter nach unten scrollen, sehen Sie alle Module, die bereits in PHP5 aktiviert sind. MySQL ist dort nicht aufgeführt, was bedeutet, dass wir noch keine MySQL-/MariaDB-Unterstützung in PHP haben.

5. Erhalten Sie MySQL-/MariaDB-Unterstützung in PHP

Um MySQL-Unterstützung in PHP zu erhalten, können wir das Paket php7.0-mysql installieren. Es ist eine gute Idee, einige andere PHP-Module zu installieren, die Sie möglicherweise für Ihre Anwendungen benötigen. Sie können wie folgt nach verfügbaren PHP-Modulen suchen:

apt-cache search php7.0

Wählen Sie die benötigten aus und installieren Sie sie wie folgt:

apt-get -y install php7.0-mysql php7.0-curl php7.0-gd php7.0-intl php-pear php-imagick php7.0-imap php7.0-mcrypt php-memcache  php7.0-pspell php7.0-recode php7.0-sqlite3 php7.0-tidy php7.0-xmlrpc php7.0-xsl php7.0-mbstring php-gettext

Starten Sie nun Apache2 neu:

systemctl restart apache2

PHP 7 hat jetzt MySQL / MariaDB-Unterstützung, wie in phpinfo() oben gezeigt.

6. Installieren Sie den Opcache + APCu PHP-Cache, um PHP zu beschleunigen

PHP 7 wird mit einem eingebauten Opcode-Cacher zum Zwischenspeichern und Optimieren von PHP-Zwischencode ausgeliefert, er hat den Namen „opcache“ und ist im Paket php7.0-opcache verfügbar. Es wird dringend empfohlen, einen Opcache zu installieren, um Ihre PHP-Seite zu beschleunigen. Neben Opcache werde ich APCu installieren, das ein Kompatibilitäts-Wrapper für Opcache ist, um die Funktionen des APC-Cache bereitzustellen, ein häufig verwendetes Caching-System in PHP 5.x-Versionen und viele CMS-Systeme verwenden es immer noch.

Opcache und APCu können wie folgt installiert werden:

apt-get -y install php7.0-opcache php-apcu

Machen Sie sich keine Sorgen, wenn angezeigt wird, dass Opcache bereits installiert ist.

Starten Sie nun Apache neu:

systemctl restart apache2

Laden Sie nun http://192.168.1.100/info.php in Ihrem Browser neu und scrollen Sie erneut nach unten zum Modulbereich. Dort sollten Sie nun viele neue Module finden:

Bitte vergessen Sie nicht, die Datei info.php zu löschen, wenn Sie sie nicht mehr benötigen, da sie vertrauliche Details Ihres Servers enthält. Führen Sie den folgenden Befehl aus, um die Datei zu löschen.

rm -f /var/www/html/info.php

7. Aktivieren Sie die SSL-Website in Apache

SSL/TLS ist eine Sicherheitsschicht, um die Verbindung zwischen dem Webbrowser und Ihrem Server zu verschlüsseln. Die meisten Webbrowser zeigen heute Websites als unsicher an, wenn die Verbindung zwischen dem Server und dem Webbrowser nicht mit SSL verschlüsselt ist. In diesem Kapitel zeige ich Ihnen, wie Sie Ihre Website mit SSL sichern.

Führen Sie die folgenden Befehle auf Ihrem Server aus, um die SSL-Unterstützung (https://) zu aktivieren. Ausführen:

a2enmod ssl
a2ensite default-ssl

Dadurch wird das SSL-Modul aktiviert und der Datei /etc/apache2/sites-available/default-ssl.conf im Ordner „/etc/apache2/sites-enabled“ ein symbolischer Link hinzugefügt, um sie in die aktive Apache-Konfiguration aufzunehmen. Starten Sie dann Apache neu, um die neue Konfiguration zu aktivieren:

systemctl restart apache2

Testen Sie nun die SSL-Verbindung, indem Sie https://192.168.1.100 in einem Webbrowser öffnen.

Sie erhalten eine SSL-Warnung, da das SSL-Zertifikat des Servers ein „self-signed“ SSL-Zertifikat ist, das bedeutet, dass der Browser diesem Zertifikat standardmäßig nicht vertraut und Sie die Sicherheitswarnung erst akzeptieren müssen. Nachdem Sie die Warnung akzeptiert haben, sehen Sie die Apache-Standardseite.

Das geschlossene "Grüne Schloss" vor der URL im Browser zeigt an, dass die Verbindung verschlüsselt ist.

Es gibt zwei Möglichkeiten, die SSL-Warnung zu beseitigen:Ersetzen Sie entweder das selbstsignierte SSL-Zertifikat /etc/ssl/certs/ssl-cert-snakeoil.pem durch ein offiziell signiertes SSL-Zertifikat, das Sie von einer SSL-Autorität kaufen oder erhalten ein kostenloses SSL-Zertifikat von Let's encrypt, das ich in Kapitel 8 beschreibe.

8. Erhalten Sie ein kostenloses SSL-Zertifikat von Let's Encrypt

Der erste Schritt zum Sichern der Website mit einem SSL-Zertifikat von Let's Encrypt ist die Installation des Pakets python-letsencrypt-apache . Führen Sie den folgenden Befehl aus:

apt-get -y install python-letsencrypt-apache

Im nächsten Schritt fordern wir ein SSL-Zertifikat von Let’s Encrypt an. Während dieses Vorgangs versucht der Let’s Encrypt-Server, sich über den Domänennamen, den Sie für den letsencrypt-Befehl angeben, mit Ihrem Server zu verbinden. Es ist wichtig, dass dieser Domainname bereits im DNS auf Ihren Server verweist, damit die Website bereits unter ihrem Domainnamen auf Port 80 (http) erreichbar ist. Wenn die Website nicht aus dem Internet erreichbar ist, schlägt die Erstellung des SSL-Zertifikats von Let's Encrypt fehl.

Bevor wir mit der Erstellung des SSL-Zertifikats beginnen können, legen Sie den Domänennamen in der vhost-Konfigurationsdatei fest. Öffnen Sie die Standard-vhost-Datei mit einem Editor:

nano /etc/apache2/sites-available/000-default.conf

und fügen Sie die Zeile hinzu:

ServerName example.com

Direkt unter der Zeile „DocumentRoot“. Ersetzen Sie example.com durch den Domainnamen Ihrer eigenen Website.

Erstellen Sie dann das SSL-Zertifikat mit diesem Befehl:

letsencrypt --apache -d example.com

Ersetzen Sie hier example.com wieder durch Ihren Domainnamen. Der Befehl startet einen Assistenten, der Ihnen einige Fragen stellt.

Geben Sie die E-Mail-Adresse ein, unter der der für diese Website verantwortliche Administrator erreichbar ist.

Akzeptieren Sie die Geschäftsbedingungen der SSL-Behörde Let's Encrypt.

Wählen Sie aus, ob Sie Nicht-SSL-Anfragen automatisch an https:// umleiten möchten. Ich wähle hier Ja aus, um Duplicate-Content-Probleme zu vermeiden, wenn die Website als http://- und https://-Version verfügbar ist.

Das SSL-Zertifikat wurde erfolgreich ausgestellt.

Wenn Sie jetzt mit einem Browser auf die Website zugreifen, werden Sie automatisch zu SSL umgeleitet und das grüne Schloss vor der URL-Leiste im Browser zeigt an, dass wir jetzt ein vertrauenswürdiges SSL-Zertifikat verwenden.

8.1 Lassen Sie uns die automatische Verlängerung verschlüsseln

SSL-Zertifikate von Let's Encrypt sind nur für einen kurzen Zeitraum von 80 Tagen gültig. Daher werden wir jetzt einen Cronjob einrichten, um das SSL-Zertifikat bei Bedarf automatisch zu erneuern. Der Befehl lautet „letsencrypt renew“.

Richten Sie einen Cronjob für die automatische LE-Erneuerung ein. Ausführen:

crontab -e

um die Root-Crontab in einem Editor zu öffnen. Fügen Sie am Ende der Datei folgende Zeile ein:

0 1 * * * /usr/bin/letsencrypt renew &> /dev/null

Speichern Sie die Datei, dies aktiviert den Cronjob. Dieser Cronjob ruft jede Nacht um 1 Uhr morgens den Befehl Let’s Encrypt renew auf. Der Befehl erneuert das SSL-Zertifikat nur bei Bedarf (30 Tage vor Ablauf), es ist kein Problem, es jede Nacht auszuführen.

9. Installieren Sie phpMyAdmin

phpMyAdmin ist eine Webschnittstelle, über die Sie Ihre MySQL-Datenbanken verwalten können. Es ist eine gute Idee, es zu installieren:

apt-get -y install phpmyadmin

WICHTIG:Der apt-Installer wird Ihnen nun mehrere Fragen stellen, eine davon ist die Auswahl des Webservertyps. Ein häufiger Fehler ist, dass der Webservertyp nur hervorgehoben, aber nicht ausgewählt ist. Um ein Element in einem passenden Menü auszuwählen, müssen Sie die Leertaste auf der Tastatur drücken, nachdem Sie mit der Tabulatortaste oder den Cursortasten zu dem Element navigiert sind. Es reicht nicht aus, es nur hervorzuheben!

Sie sehen die folgenden Fragen:

Web server to configure automatically: <-- Select the option: apache2
Configure database for phpmyadmin with dbconfig-common? <-- Yes
MySQL application password for phpmyadmin: <-- Press enter, apt will create a random password automatically.

9.1 Root-Zugriff auf PHPMyAdmin mit MariaDB

Der folgende Schritt ist nur für MariaDB-Installationen erforderlich, wenn Sie MySQL 5.7 verwenden, überspringen Sie diesen Schritt.

MariaDB aktiviert standardmäßig ein Plugin namens "unix_socket" für den Root-Benutzer. Dieses Plugin verhindert, dass sich der Root-Benutzer bei PHPMyAdmin anmelden kann und dass TCP-Verbindungen zu MySQL für den Root-Benutzer funktionieren. Um einen Benutzer mit Berechtigungen zum Erstellen anderer Benutzer und Datenbanken in PHPMyAdmin zu erhalten, erstelle ich einen neuen MySQL-Benutzer mit dem Namen "admin" mit denselben Berechtigungen wie der Root-Benutzer.

Melden Sie sich als Root-Benutzer auf der Shell bei der MySQL-Datenbank an:

mysql -u root

Erstellen Sie einen neuen Benutzer mit dem Namen „admin“ und dem Passwort „howtoforge“. Ersetzen Sie in den folgenden Befehlen das Passwort "howtoforge" durch ein sicheres Passwort!

CREATE USER 'admin'@'localhost' IDENTIFIED BY 'howtoforge';
GRANT ALL PRIVILEGES ON *.* TO 'admin'@'localhost' WITH GRANT OPTION;
FLUSH PRIVILEGES;
exit

Danach erreichen Sie phpMyAdmin unter http://192.168.1.100/phpmyadmin/:

10 Image-Download der virtuellen Maschine für dieses Tutorial

Dieses Tutorial ist als gebrauchsfertiges Image der virtuellen Maschine im ovf/ova-Format verfügbar, das mit VMWare und Virtualbox kompatibel ist. Das Image der virtuellen Maschine verwendet die folgenden Anmeldedaten:

SSH-/Shell-Anmeldung

Benutzername:administrator
Passwort:howtoforge

Dieser Benutzer hat sudo-Rechte.

MySQL-Anmeldung

Benutzername:root
Passwort:howtoforge

Die IP der VM ist 192.168.1.100, sie kann in der Datei /etc/network/interfaces geändert werden. Bitte ändern Sie alle oben genannten Passwörter, um die virtuelle Maschine zu sichern.

  • Apache:http://httpd.apache.org/
  • PHP:http://www.php.net/
  • MySQL:http://www.mysql.com/
  • MariaDB:https://mariadb.com/
  • Ubuntu:http://www.ubuntu.com/
  • phpMyAdmin:http://www.phpmyadmin.net/

Ubuntu
  1. WordPress Installation auf Ubuntu Linux mit Apache und MySQL

  2. Ubuntu 14.10 LAMP-Server-Tutorial mit Apache 2, PHP 5 und MySQL (MariaDB)

  3. Ubuntu 15.04 LAMP-Server-Tutorial mit Apache 2, PHP 5 und MariaDB (anstelle von MySQL)

  4. So installieren Sie Apache, MySQL, PHP (LAMP) unter Ubuntu 16.04 LTS

  5. So richten Sie Opencart mit LAMP (PHP, Apache, Mariadb) unter Ubuntu 20.04 ein

Installieren Sie Apache, MySQL, PHP (LAMP) Stack auf Ubuntu 18.04 LTS

Installieren Sie Apache, MySQL, PHP (LAMP Stack) auf Ubuntu 20.04 LTS

So installieren Sie Apache, MySQL, PHP unter Ubuntu 18.04 LTS

So installieren Sie Linux, Apache, MySQL und PHP (LAMP) auf einem Ubuntu 20.04 Cloud Server

So installieren Sie Linux, Apache, MySQL und PHP (LAMP) auf einem Ubuntu 12.04-Cloud-Server

So installieren Sie LAMP unter Ubuntu 15.10 (Linux, Apache, MySQL und PHP)