Debian 9 LAMP Server Handleiding met Apache, PHP 7 en MariaDB

LAMP is kort voor Linux, Apache, MySQL, PHP. Deze handleiding laat zien hoe je een Apache webserver kunt installeren op een Debian Stretch (9) server met PHP 7 (mod_php) en MariaDB ondersteuning. MariaDB is een afsplitsing van de bekende MySQL databaseserver, het biedt een MySQL compatibele functieset en is een beetje sneller volgens benchmarks die ik op het internet vond. MariaDB werkt met alle toepassingen die MySQL vereisen, zoals WordPress, Joomla enz.

Een LAMP opstelling is een perfecte basis voor CMS systemen als Joomla, WordPress of Drupal.

1 Opmerking vooraf

In deze handleiding gebruik ik de hostnaam server1.example.com met het IP adres 192.168.1.100. Deze instellingen kunnen voor jou anders zijn, dus moet je ze waar nodig vervangen.

2. MariaDB installeren als vervanger van MySQL

Eerst installeren we MariaDB als volgt:

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

Vervolgens beveiligen we MariaDB met het commando mysql_secure_installation. Voer het onderstaande commando uit en volg de wizard.

mysql_secure_installation

De aanbevolen invoer wordt in rood getoond.

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): <-- Hit return
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] <-- y
New password: <-- Enter the new password for the MariaDB root user
Re-enter new password: <-- Enter the password again
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] <-- 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? [Y/n] <-- y
... 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] <-- 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? [Y/n] <-- y
... 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!

De MariaDB installatie is nu beveiligd.

3. Apache webserver installeren

Apache is beschikbaar als een Debian pakket, dus kunnen we het als volgt installeren:

apt-get -y install apache2

Leid nu je browser naar http://192.168.1.100, en je zou de Apache2 placeholder pagina moeten zien(Het werkt!):

Debian 9 Apache standaard pagina

Apache’s standaard document root is /var/www op Debian, en het configuratiebestand is /etc/apache2/apache2.conf. Extra configuraties worden opgeslagen in submappen van de map /etc/apache2, zoals /etc/apache2/mods-enabled (voor Apache modules), /etc/apache2/sites-enabled (voor virtuele hosts), en /etc/apache2/conf-enabled.

4. PHP 7.1 installeren

We kunnen PHP en de Apache PHP module als volgt installeren:

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

We moeten Apache daarna opnieuw starten:

service apache2 restart

5 PHP testen / Details over je PHP installatie krijgen

De document root van de standaard web site is /var/www/html. We zullen nu een klein PHP bestand(info.php) in die directory maken en het in een browser aanroepen. Het bestand zal veel nuttige gegevens over onze PHP installatie weergeven, zoals de geïnstalleerde PHP versie.

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

Nu roepen we dat bestand aan in een browser (bv. http://192. 168.1.100/info.php):

PHP geïnstalleerd op Debian 9 in Apache

Zoals je ziet werkt PHP 7.0, en het werkt via de Apache 2.0 Handler, zoals te zien is in de regel Server API. Als je verder naar beneden scrollt, zie je alle modules die in PHP5 al ingeschakeld zijn. MySQL / MariaDB staat er niet bij, wat betekent dat we nog geen MySQL ondersteuning in PHP5 hebben.

6 Ondersteuning voor MySQL en MariaDB in PHP krijgen

Om MySQL ondersteuning in PHP te krijgen, installeren we het php7.0-mysql pakket. Het is een goed idee om ook enkele andere PHP modules te installeren omdat je die misschien nodig hebt voor je toepassingen. Je kunt op deze manier zoeken naar beschikbare PHP 7 modules:

apt-cache search php7.0

Kies de modules die je nodig hebt en installeer ze als volgt:

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

Start nu Apache opnieuw op:

service apache2 restart

7 PHP Cache om de snelheid van PHP te verbeteren

Om PHP te versnellen moet een Opcache geïnstalleerd worden. Controleer of de PHP Opcache module correct geïnstalleerd en ingeschakeld is.Voer dit commando uit:

php --version

De uitvoer moet de regel bevatten die ik rood gemarkeerd heb.

PHP 7.0.27-0+deb9u1 (cli) (built: Jan 5 2018 13:51:52) ( NTS )
Copyright (c) 1997-2017 The PHP Group
Zend Engine v3.0.0, Copyright (c) 1998-2017 Zend Technologies
with Zend OPcache v7.0.27-0+deb9u1, Copyright (c) 1999-2017, by Zend Technologies

Als je de Opcache module niet in het resultaat ziet, installeer hem dan met dit commando:

apt-get -y install php7.0-opcache

Er is nog een andere cache die nuttig kan zijn, hij heet APCu. APCu is een gratis PHP opcode cacher voor het cachen en optimaliseren van PHP tussencode.

APCu kan als volgt geïnstalleerd worden:

apt-get -y install php-apcu

Herstart nu Apache:

service apache2 restart

Herlaad nu http://192.168.1.100/info.php in je browser en scroll weer naar beneden naar de modules sectie. Je zou daar nu veel nieuwe modules moeten vinden, waaronder de MySQL module die als MariaDB driver gebruikt wordt:

MySQL ondersteuning ingeschakeld in PHP 7

8 phpMyAdmin

phpMyAdmin is een webinterface waarmee je je MySQL en MariaDB databases kunt beheren. Het is een goed idee om het te installeren:

apt-get -y install phpmyadmin

Je krijgt de volgende vragen te zien:

Configureer phpMyAdmin voor Apache

Web server to reconfigure automatically: <-- apache2

Gebruik dbconfig-common om phpMyAdmin in te stellen

Configure database for phpmyadmin with dbconfig-common?<-- Yes

Maak automatisch een toepassingswachtwoord

MySQL application password for phpmyadmin: <-- Press enter, apt will create a random password automatically.

Daarna kun je phpMyAdmin openen onder http://192.168.1.100/phpmyadmin/:

PHPMyAdmin op Debian 9

9 Schakel de MySQL root login voor phpMyAdmin in.

Hoewel je op de shell als root gebruiker in MariaDB kunt inloggen, werkt de root login niet in phpMyAdmin. Om de root gebruiker ook phpMyAdmin te laten gebruiken, voer je op de shell het volgende commando uit:

echo "UPDATE mysql.user SET plugin = 'mysql_native_password' WHERE user = 'root' AND plugin = 'unix_socket';FLUSH PRIVILEGES;" | mysql -u root -p

10 Verbindingen