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.
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:
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:
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…:
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: