So installieren Sie Apache, PHP 7.2 und MySQL auf CentOS 7.4 (LAMP)

Dieses Tutorial zeigt, wie man einen Apache Webserver auf CentOS 7 Server mit PHP (mod_php) und MySQL-Datenbank installiert. Das Akronym LAMP ist die Abkürzung für Linux, Apache, MySQL, PHP.

Dieses aktualisierte Tutorial zeigt die Installation der neuesten PHP-Versionen (7.0, 7.1 und 7.2) auf CentOS 7.4.

1 Vorbemerkung

In diesem Tutorial verwende ich den Hostnamen server1.example.com mit der IP p 192.168.1.100. Diese Einstellungen können für Sie unterschiedlich sein, so dass Sie sie gegebenenfalls ersetzen müssen.

Ich werde hier den EPEL-Repo hinzufügen, um die neueste phpMyAdmin wie folgt zu installieren:

rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY*
yum -y install epel-release

Um Dateien auf der Shell zu bearbeiten, installiere ich den Nano-Editor. Wenn Sie vi für die Dateibearbeitung bevorzugen, dann überspringen Sie diesen Schritt.

yum -y install nano

2 Installation von MySQL / MariaDB

MariaDB ist eine MySQL-Gabel des ursprünglichen MySQL-Entwicklers Monty Widenius. MariaDB ist mit MySQL kompatibel und ich habe mich dafür entschieden, MariaDB hier anstelle von MySQL zu verwenden. Führen Sie diesen Befehl aus, um MariaDB mit yum zu installieren:

yum -y install mariadb-server mariadb

Dann erstellen wir die Systemstartup-Links für MySQL (so dass MySQL beim Systemstart automatisch startet) und starten den MySQL-Server:

systemctl start mariadb.service
systemctl enable mariadb.service

Setzt Passwörter für das MySQL Root-Konto:

mysql_secure_installation
[root@server1 ~]# mysql_secure_installation

NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
      SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!

In order to log into MariaDB to secure it, we'll need the current
password for the root user.  If you've just installed MariaDB, and
you haven't set the root password yet, the password will be blank,
so you should just press enter here.

Enter current password for root (enter for none): <--ENTER
OK, successfully used password, moving on...

Setting the root password ensures that nobody can log into the MariaDB
root user without the proper authorisation.

Set root password? [Y/n] 
New password: <--yourmariadbpassword
Re-enter new password: <--yourmariadbpassword
Password updated successfully!
Reloading privilege tables..
 ... Success!

By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB 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? [Y/n] <--ENTER
 ... 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? [Y/n] <--ENTER
 ... Success!

By default, MariaDB 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? [Y/n] <--ENTER
 - 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? [Y/n] <--ENTER
 ... Success!

Cleaning up...

All done!  If you've completed all of the above steps, your MariaDB
installation should now be secure.

Thanks for using MariaDB!
[root@server1 ~]#

3 Installation des Apache

CentOS 7 wird mit Apache 2.4 ausgeliefert. Apache ist direkt als CentOS 7-Paket verfügbar, daher können wir es so installieren:

yum -y install httpd

Hier ein Screenshot des Installationsprozesses.

Apache http-Server auf CentOS installieren

Konfigurieren Sie nun Ihr System so, dass es den Apache beim Booten startet…..

systemctl start httpd.service
systemctl enable httpd.service

Um von außen auf den Webserver zugreifen zu können, müssen wir die HTTP- (80) und HTTPS- (443) Ports in der Firewall öffnen, die Standard-Firewall auf CentOS ist firewalld, die mit dem Befehl firewalld-cmd konfiguriert werden kann.

firewall-cmd --permanent --zone=public --add-service=http 
firewall-cmd --permanent --zone=public --add-service=https
firewall-cmd --reload

Richten Sie nun Ihren Browser auf die IP-Adresse Ihres Servers, in meinem Fall http://192.168.1.100, und Sie sollten die Apache Platzhalterseite sehen:

Apache Webserver auf CentOS 7 gestartet

4 Installation von PHP

Die PHP-Version, die standardmäßig mit CentOS ausgeliefert wird, ist recht alt (PHP 5.4). Daher zeige ich Ihnen in diesem Kapitel einige Möglichkeiten, neuere PHP-Versionen wie PHP 7.0 oder 7.1 aus dem Remi-Repository zu installieren.

Fügen Sie das Remi CentOS-Repository hinzu.

rpm -Uvh http://rpms.remirepo.net/enterprise/remi-release-7.rpm

Installieren Sie yum-utils, wenn wir das Dienstprogramm yum-config-manager benötigen.

yum -y install yum-utils

und führen Sie das Yum-Update durch.

yum update

Nun müssen Sie wählen, welche PHP-Version Sie auf dem Server verwenden möchten. Wenn Sie PHP 5.4 verwenden möchten, fahren Sie mit Kapitel 4.1 fort. Um PHP 7.0 zu installieren, folgen Sie den Befehlen in Kapitel 4.2, für PHP 7.1 Kapitel 4.3 und für PHP 7.1 verwenden Sie stattdessen Kapitel 4.4. Folgen Sie nur einem der 4.x-Kapitel und nicht allen, da Sie mit Apache mod_php immer nur eine PHP-Version auf einmal verwenden können.

4.1 PHP installieren 5.4

Um PHP 5.4 zu installieren, führen Sie diesen Befehl aus:

yum -y install php

4.2 Installation von PHP 7.0

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

yum-config-manager --enable remi-php70
yum -y install php php-opcache

4.3 Installation von PHP 7.1

Wenn Sie stattdessen PHP 7.1 verwenden möchten, verwenden Sie:

yum-config-manager --enable remi-php71
yum -y install php php-opcache

4.4 Installation von PHP 7.2

Wenn Sie stattdessen PHP 7.2 verwenden möchten, verwenden Sie:

yum-config-manager --enable remi-php72
yum -y install php php-opcache

In diesem Beispiel und in der herunterladbaren virtuellen Maschine werde ich PHP 7.2 verwenden.

Wir müssen den Apache neu starten, um die Änderungen zu übernehmen:

 systemctl restart httpd.service

5 PHP testen / Details über Ihre PHP-Installation erfahren

Das Dokumentenverzeichnis der Standardwebsite ist /var/wwww/html. Wir erstellen in diesem Verzeichnis eine kleine PHP-Datei (info.php) und rufen sie in einem Browser auf, um die PHP-Installation zu testen. Die Datei zeigt viele nützliche Details über unsere PHP-Installation, wie z.B. die installierte PHP-Version.

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

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

PHP 7.2 auf CentOS 7 installiert

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

6 MySQL-Unterstützung in PHP erhalten

Um MySQL-Unterstützung in PHP zu erhalten, können wir das Paket php-mysqlnd installieren. Es ist eine gute Idee, einige andere PHP-Module zu installieren, da Sie diese für Ihre Anwendungen benötigen könnten. Sie können auf diese Weise nach verfügbaren PHP5-Modulen suchen:

yum search php

Wählen Sie die gewünschten aus und installieren Sie sie so:

yum -y install php-mysqlnd php-pdo

Im nächsten Schritt werde ich einige gängige PHP-Module installieren, die von CMS-Systemen wie WordPress, Joomla und Drupal benötigt werden:

yum -y install php-gd php-ldap php-odbc php-pear php-xml php-xmlrpc php-mbstring php-soap curl curl-devel

Starten Sie nun den Apache-Webserver neu:

 systemctl restart httpd.service

Laden Sie nun http://192.168.1.100/info.php in Ihrem Browser neu und scrollen Sie erneut nach unten zum Modulbereich. Du solltest dort jetzt viele neue Module wie Curl etc. finden…:

MySQL-Unterstützung zu PHP 7.2 auf CentOS hinzugefügt

Wenn Sie die php-Info-Ausgabe nicht mehr benötigen, dann löschen Sie diese Datei aus Sicherheitsgründen.

rm /var/www/html/info.php

7 phpMyAdmin-Installation

phpMyAdmin ist eine Weboberfläche, über die Sie Ihre MySQL-Datenbanken verwalten können.
phpMyAdmin kann nun wie folgt installiert werden:

yum -y install phpMyAdmin

Nun konfigurieren wir phpMyAdmin. Wir ändern die Apache-Konfiguration so, dass phpMyAdmin Verbindungen nicht nur vom localhost zulässt (indem wir die <RequireAny>-Stanza auskommentieren und die Zeile’Require all granted‘ hinzufügen):

nano /etc/httpd/conf.d/phpMyAdmin.conf
[...]
Alias /phpMyAdmin /usr/share/phpMyAdmin
Alias /phpmyadmin /usr/share/phpMyAdmin

<Directory /usr/share/phpMyAdmin/>
 AddDefaultCharset UTF-8

 <IfModule mod_authz_core.c>
 # Apache 2.4
# <RequireAny>
# Require ip 127.0.0.1
# Require ip ::1
# </RequireAny>
 Require all granted
 </IfModule>
 <IfModule !mod_authz_core.c>
 # Apache 2.2
 Order Deny,Allow
 Deny from All
 Allow from 127.0.0.1
 Allow from ::1
 </IfModule>
</Directory>


<Directory /usr/share/phpMyAdmin/>
        Options none
        AllowOverride Limit
        Require all granted
</Directory>

[...]

Als nächstes ändern wir die Authentifizierung in phpMyAdmin von Cookie auf http:

nano /etc/phpMyAdmin/config.inc.php
[...]
$cfg['Servers'][$i]['auth_type']     = 'http';    // Authentication method (config, http or cookie based)?
[...]

Starten Sie den Apache neu:

systemctl restart  httpd.service

Danach können Sie phpMyAdmin unter http://192.168.1.100/phpmyadmin/: erreichen:

PHPMyAdmin installiert auf CentOS 7.4

Das könnte Dich auch interessieren …