informatique:se:linux:applications:creer_serveur_linux_apache_2_mysql_php

Créer un serveur Apache 2, MariaDB et PHP sous Linux

Nom de la section

L'association des mots Linux, Apache, MariaDB et PHP donne l'acronyme LAMP.

  • Debian 10
  • Apache 2.4
  • PHP 7.4
  • MariaDB xxx
Avant de commencer, consulter la page sur Préparer et configurer son serveur Web

Vous venez d'être livré d'un serveur Linux. Il ne reste plus qu'à installer le nécessaire pour avoir votre site Internet. En premier, il faut installer le service Apache 2. On l'appelle également le service Web ou encore httpd. Il permet de recevoir des requêtes et répondre en envoyant des ressources (pages HTML, contenu XML, fichiers divers…). Les protocoles de communication en standard sont http (80/tcp) et https (443/tcp).

Pour installer votre serveur web Apache 2 sous Debian il suffit de saisir la commande dans un Terminal :

sudo apt install apache2

Des paquets supplémentaires vous seront proposés, je vous invite à les accepter car ils vous seront utiles.

C'est l'heure de la vérification. Une fois l'installation terminée vous pouvez ouvrir un navigateur et saisir votre nom de serveur dans la barre d'URL. Par exemple, tapez l'URL http://localhost/

Accueil Apache 2 en standard avec Debian

Il existe des modules qui permettent d'agrémenter les possibilités offertes par Apache 2. Il n'est pas nécessaire de les activer si vous n'en avez pas besoin. N'activez des modules que si vous êtes sûre de les utiliser.

nom description activer désactiver
UserDir utilisé dans le configuration multi utilisateurs sudo a2enmod userdir sudo a2dismod userdir
rewrite permet d'utiliser les directives de redirections sudo a2enmod rewrite sudo a2dismod rewrite
headers utilisé dans le configuration SSL sudo a2enmod headers sudo a2dismod headers
ssl permet d'utiliser le https sudo a2enmod ssl sudo a2dismod ssl
remoteip utiliser l'adresse IP du client derrière un proxy sudo a2enmod remoteip sudo a2dismod remoteip

L'activation d'un ou plusieurs modules nécessite le redémarrage d'Apache 2 :

sudo service apache2 restart

Je décris comment installer l'interpréteur PHP qui sera appelé par Apache 2. Nous utiliserons la version PHP-FPM.

PHP-FPM (FastCGI Process Manager) est une alternative à PHP. C'est une mise en œuvre avec quelques fonctionnalités supplémentaires utiles pour les sites de toute taille, en particulier les sites les plus fréquentés.

Pour l'installation de PHP, j'utilise le dépôt de Ondřej Surý, dans lequel il y a les dernières versions pour Debian. Les processeurs pris en charge sont : ARM64, ARMhf, amd64 et i386.

sudo apt install gnupg
# add key
wget -q https://packages.sury.org/php/apt.gpg -O- | sudo apt-key add -
 # add into sources.list
sudo echo "deb https://packages.sury.org/php/ buster main" | sudo tee /etc/apt/sources.list.d/php.list
sudo apt update
sudo apt install php php-fpm
sudo systemctl status php7.4-fpm

A noter que la configuration de FPM pour Apache 2 s'effectue directement dans le fichier de configuration /etc/php/7.4/fpm/pool.d/www.conf. Nous n'interviendrons pas dans ce fichier.

Activer le module proxy FCGI pour Apache2 en exécutant le code suivant.

sudo a2enmod proxy_fcgi setenvif
sudo a2enconf php7.4-fpm

Modifier l'ordre de traitement des pages index dans le fichier /etc/apache2/mods-available/dir.conf

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

Redémarrer les services Apache2 et PHP FPM:

$ sudo systemctl restart php7.4-fpm apache2

Je propose une page d'accueil standard du serveur Apache 2 en PHP qui permet d'afficher un ensemble d'informations avant de rediriger le visiteur.

<!DOCTYPE html>
<html>
  <head>
    <title>site non configuré pour <?PHP echo $_SERVER['HTTP_HOST'];?></title>
    <meta charset="UTF-8" />
    <meta http-equiv="refresh" content="10; url=https://www.abonnel.fr/" />
  </head>
  <body>
    <h1>Serveur trouvé</h1>
    <p>Les paramètres ne sont pas configurés pour le site <strong><?PHP echo $_SERVER['HTTP_HOST'];?></strong></p>
    <p>Je vous redirige dans 10 secondes vers <a href="https://www.abonnel.fr/">ici</a>.</p>
  </body>
</html>

Je remplace la page /var/www/html/index.html par /var/www/html/index.php.

sudo apt install php-memcached
 
sudo ln -s /etc/php/7.4/mods-available/memcached.ini /etc/php/7.4/fpm/conf.d/20-memcached.ini
 
sudo ln -s /etc/php/7.4/mods-available/memcached.ini /etc/php/7.4/cli/conf.d/20-memcached.ini
 
sudo systemctl restart php7.4-fpm apache2
sudo apt-get install php-igbinary php-msgpack
 
sudo systemctl restart php7.4-fpm apache2
 
sudo phpenmod msg

Pour vérifier la prise en compte, il suffit de demande à phpinfo().

<?php
  phpinfo();
?>

Le contenu de cette section se trouve dans une page indépendante :

L'objectif est d'utiliser un compte utilisateur pour modifier le dossier le contenu du dossier /var/www et les sous-dossiers.

Prérequis :

  • PHP 7.4
  • Apache 2.4
  • MariaDB / MySQL 5.5 et plus

Les modules PHP mysql, zip, gd et mbstring sont nécessaires pour une utilisation optimale de l'application.

sudo apt install php7.4-mysql php7.4-mbstring php-zip php-gd

Télécharger l'archive présent sur le site phpmyadmin.net permet d'avoir la dernière version stable en date. A l'heure où j'écris ces lignes, il s'agit de la version 5.0.2.

  cd /var/www
  wget https://files.phpmyadmin.net/phpMyAdmin/5.0.2/phpMyAdmin-5.0.2-all-languages.tar.gz
  sudo tar -xzvf phpMyAdmin-5.0.2-all-languages.tar.gz
  sudo rm phpMyAdmin-5.0.2-all-languages.tar.gz
	cd phpMyAdmin-5.0.2-all-languages
	sudo chgrp -R www-data .
	sudo chmod -R g+s .

Configuration simple avec le fichier présent dans ``/var/html/phpMyAdmin-5.0.2-all-languages/config.inc.php``

<?php
// use here a value of your choice at least 32 chars long
$cfg['blowfish_secret'] = '1{dd0`<Q),5XP_:R9UK%%8\"EEcyH#{o';
 
$i=0;
$i++;
$cfg['Servers'][$i]['auth_type']     = 'cookie';
// if you insist on "root" having no password:
// $cfg['Servers'][$i]['AllowNoPassword'] = true;

configuration site avaible

  sudo nano /etc/apache2/sites-available/100-phpmyadmin.conf
Alias /phpmyadmin /var/www/phpMyAdmin-5.0.2-all-languages

<Directory /var/www/phpMyAdmin-5.0.2-all-languages>
    Options Indexes FollowSymLinks
    DirectoryIndex index.php

    <IfModule mod_php5.c>
        AddType application/x-httpd-php .php

        php_flag magic_quotes_gpc Off
        php_flag track_vars On
        php_flag register_globals Off
        php_value include_path .
    </IfModule>

</Directory>

# Authorize for setup
<Directory /var/www/phpMyAdmin-5.0.2-all-languages/setup>
    <IfModule mod_authn_file.c>
    AuthType Basic
    AuthName "phpMyAdmin Setup"
    AuthUserFile /etc/phpmyadmin/htpasswd.setup
    </IfModule>
    Require valid-user
</Directory>

# Disallow web access to directories that don't need it
<Directory /var/www/phpMyAdmin-5.0.2-all-languages/libraries>
    Order Deny,Allow
    Deny from All
</Directory>
<Directory /var/www/phpMyAdmin-5.0.2-all-languages/setup/lib>
    Order Deny,Allow
    Deny from All
</Directory>

Activer la configuration du site

  sudo a2ensite 100-phpmyadmin
  sudo systemctl reload apache2

Code intégral et interactif en cours de rédaction sur https://github.com/cedricAbonnel/server-web/scripts/install-phpmyadmin

Entrer votre commentaire. La syntaxe wiki est autorisée:
   __ __ __  __   __  ___   ___   _____
  / //_/ \ \/ /  /  |/  /  / _ \ / ___/
 / ,<     \  /  / /|_/ /  / ___// (_ / 
/_/|_|    /_/  /_/  /_/  /_/    \___/
 
  • informatique/se/linux/applications/creer_serveur_linux_apache_2_mysql_php.txt
  • Dernière modification: 2020/07/06 21:02
  • par Cédric ABONNEL