From Mageia wiki
Jump to: navigation, search


Drakconf multiflag.png
Autres langues
English ; français
Résumé :
Cette page va vous permettre de mettre en place un serveur web, propulsé par Apache, motorisé par PHP en utilisant une base de données MariaDB.

Présentation

Lamp logo.gif

Chacun de ces logiciels sont indépendants et ont une fonction précise.

LAMP est un acronyme :

  • Linux est le système d’exploitation qui dirige l’utilisation des ressources d’un ordinateur.
  • Apache est le serveur HTTP
  • MySQL est le serveur de gestion de bases de données relationnelles, remplacé par MariaDB
  • PHP est un langage de programmation interprété

Bien entendu, ces logiciels sont les plus populaires, mais ils peuvent être substitués par d’autres : Linux par Windows (contre-indiqué !), Apache par Lighttpd ou Nginx, MySQL par MariaDB ou Drizzle, PHP par Python ou Perl.

Avec LAMP, nous pouvons donc mettre en place un serveur Web, hébergeant un site web dynamique écrit en PHP, tout en allant chercher des données dans une base MySQL/MariaDB.
Certaines distributions dont Mageia, proposent un métapaquet appelé LAMP pour installer le tout en une seule commande.
Mageia a fait le choix dès sa version 2 de privilégier la bifurcation de Mysql qui se nomme MariaDB. Vous ne remarquerez aucune différence notable entre ces deux logiciels à l’usage.

Installation

Pour commencer l’installation de votre serveur LAMP, votre base urpmi doit être à jour. Ensuite seulement…
Pour ce faire saisissez la commande suivante : urpmi.update -a

Installer le méta-paquetage task-lamp-php pour mettre en œuvre tous les services associés (Apache, MySQL/MariaDB et PHP)

Dans un terminal, saisissez la commande suivante : urpmi task-lamp-php
Ou simplement avec le Centre de Contrôle de Mageia.


Apache : le serveur web (1/4)

Solution N° 1 le serveur Apache peut être démarré en mode graphique.

Services httpd et mysqld démarrés et activés
  • Pour ce faire, après avoir lancé le centre de contrôle Mageia, dans Sytème -> Gérer les services système en les (dés)activant
  • Pour pouvoir démarrer le service, cocher la case httpd pour le rendre disponible pendant des phases de démarrage du système. Cliquer sur le bouton démarrer pour le rendre actif, ou arrêter pour le tenir stoppé.

Solution N° 2 le serveur Apache peut être démarré avec un terminal.

  • Dans un terminal en tant que root (super utilisateur) vous pouvez saisir ces commandes :

Pour vérifier l’état.

# systemctl status httpd.service

Pour lancer le service si celui est inactif

# systemctl start httpd.service

Pour lancer le service si celui est déjà actif

# systemctl restart httpd.service

Pour activer le service au démarrage.

# systemctl enable httpd.service

Pour désactiver le service au démarrage.

# systemctl disable httpd.service

Pour arrêter le service.

# systemctl stop httpd.service
  • Pour vérifier que le serveur Apache fonctionne saisissez dans la barre d’adresse de votre navigateur préféré (Firefox) «localhost». It works doit s’afficher, comme l’indique l’image ci-dessous.
Remarque :
Pour connaître l’adresse IP d’un serveur, saisissez cette commande soit en tant que root ou en mode sudo, qui vous indiquera à coup sûr la destination de votre serveur local. Il faut évidemment remplacer ce nom par celui de votre carte réseau.
Pour identifier le nom de celle-ci, écrire la commande ip address ou ip link. Dans le cas présent, le nom de la carte réseau est enp1s0.
# ip addr sho enp1s0 | grep inet | awk '{ print $2 ; }' | sed 's/\/.* $//'
Le serveur Apache en action

Changer votre répertoire de travail

Par défaut, le répertoire de travail se situe dans /var/www/html/. Vous pouvez, si vous le souhaitez modifier cet état de fait. Pour cela le fichier de configuration se trouve dans le dossier /etc/httpd/conf/. Modifier la ligne 117 contenant l’expression DocumentRoot dans le ficher httpd.conf. Modifier aussi les lignes 122 et 129 <Directory "/var/www"> tout en respectant la structure.
Pour que ce nouveau répertoire soit pris en compte saisir la commande ci-après :

# systemctl reload httpd.service

Le changement de répertoire est effectif mais celui-ci est vide, la page s’affiche donc avec un index of /. Pour remédier à cela, créer un fichier index.html ou copier celui inscrit dans le dossier /var/www/html/ vers votre dossier nouvellement créé.

Remarque :
Penser à raffraichir la page de votre navigateur, pour prendre en compte votre nouvel index.html

MariaDB : le serveur de base de données (2/4)

Solution N° 1 le serveur MariaDB peut être démarré en mode graphique.

  • Pour ce faire, après avoir lancé le centre de contrôle Mageia, dans Sytème -> Gérer les services système en les (dés) activant
  • Pour pouvoir démarrer le service, cocher la case mysqld pour le rendre disponible pendant des phases de démarrage du système. Cliquer sur le bouton démarrer pour le rendre actif ou arrêter pour le stopper.

Solution N° 2 le serveur MariaDB peut être démarré avec un terminal.

Remarque :
Cela peut être déroutant pour un débutant, quand vous allez exécuter ces commandes pour la première fois (MySQL/MariaDB), mais nous avons bien affaire à MariaDB
  • Dans un terminal en tant que root (super utilisateur) vous pouvez saisir ces commandes :

Pour vérifier l’état.

# systemctl status mysqld.service

Pour démarrer le service.

# systemctl start mysqld.service

Pour activer le service au démarrage.

# systemctl enable mysqld.service

Pour désactiver le service au démarrage.

# systemctl disable mysqld.service

Pour arrêter le service.

# systemctl stop mysqld.service
Attention !
MariaDB est installé sans mot de passe root, il est recommandé de définir le mot de passe root avec la commande suivante dès que possible : mysql_secure_installation.
# 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): OK, successfully used password, moving on... Setting the root password ensures that nobody can log into the MariaDB root user without the proper authorisation. You already have a root password set, so you can safely answer 'n'. Change the root password? [Y/n] New password: Re-enter new password: Password updated successfully! Reloading privilege tables. ... Success!
  • Les questions qui suivent vont sécuriser l’installation de votre base de données. Vous pouvez laisser les options par défaut et valider par [Entrée] à chacune d’entre elles.
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] ... 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] ... 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] - 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] ... 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!

Tester MariaDB

Maintenant que les paramètres sont renseignés, tester MariaDB. Bien s’assurer que MariaDB est démarré avec la commande suivante en tant que root ou en mode sudo :

# systemctl restart mysqld.service

Vous pouvez vous connecter à la base de données.

# mysql -u root -p

Incriver votre mot de passe root créé précédemment.

Enter password: Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 8 Server version: 10.3.12-MariaDB Mageia MariaDB Server Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MariaDB [(none)]> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | +--------------------+ 3 rows in set (0.004 sec) MariaDB [(none)]>

Pour quitter la base de données

exit

PHP : le serveur de contenu (3/4)

Remarque :
Vérifier que le paquet apache-mod_php est bien installé et que le service httpd soit redémarré.

En vue d’augmenter les capacités de l’interpréteur PHP, installer les paquetages suivant. Bien sûr, ce n’est pas une obligation.

  • php-bcmath : Pour les calculs mathématiques d’une grande précision
  • php-dba : couche d’abstraction de base de données pour applications PHP.
  • php-enchant : Enchant fournit une uniformité et une conformité pour toutes les bibliothèques d’orthographe
  • php-fpm : gestionnaire de processus FastCGI avec des fonctionnalités supplémentaires utiles pour les sites très fortement chargés.
Remarque :
Pour savoir si un paquetage est déjà installé ou non sur le système, exécuter la commande suivante : urpmq --fuzzy NomDuPaquet

Tester PHP

Pour vérifier que le système est configuré convenablement, créer un script PHP dans cet exemple info.php, puis tenter de l’afficher avec votre navigateur web.

echo "<?php phpinfo();?>" >>/var/www/html/info.php && chmod a+r /var/www/html/info.php

Dès lors, quand vous saisissez l’url http://<NomDeVotreServeur>/info.php, dans le cas présent http://localhost/info.php

Attention !
Si vous avez changé votre répertoire de travail, pensez à indiquer le bon pour que la page s’affiche

vous devriez pouvoir afficher la page d’accueil PHP, ci-après.

Le serveur PHP en action

phpMyAdmin, une interface conviviale (4/4)

Cette application permet de gérer sa base de données avec une interface web beaucoup plus conviviale que la console.


Solution 1 : À partir du navigateur local (sur le serveur en question) :

Pour démarrer phpMyAdmin, dans la barre d’adresse de votre navigateur, saisissez :

http://localhost/phpmyadmin

Solution 2 : À partir d'un navigateur distant (vous ne disposez pas d’interface graphique) :

Si votre serveur ne dispose pas d’interface graphique, vous pouvez accéder à phpMyAdmin depuis un autre ordinateur de votre réseau. Pour cela il faut modifier le fichier phpmyadmin.conf pour y déclarer l’adresse IP de la machine client. Vous pouvez modifier ce fichier à l’aide d’un éditeur de texte tel que Vim ou Nano, le fichier se trouve dans le dossier /etc/httpd/conf/site.d/

# cd /etc/httpd/conf/site.d/
# vim phpmyadmin.conf
# phpMyAdmin - Web based MySQL browser written in php # # Allows only localhost by default # # But allowing phpMyAdmin to anyone other than localhost should be considered # dangerous unless properly secured by SSL Alias /phpmyadmin /usr/share/phpmyadmin <Directory /usr/share/phpmyadmin/> <IfModule mod_authz_core.c> # Apache 2.4 <RequireAny> Require ip 127.0.0.1 Require ip 192.168.1.x Require ip ::1 </RequireAny> </IfModule> <IfModule !mod_authz_core.c> # Apache 2.2 Order Deny,Allow Deny from All Allow from 127.0.0.1 Allow from 191.168.1.x Allow from ::1 </IfModule> ErrorDocument 403 "Access denied per /etc/httpd/conf/webapps.d/phpmyadmin.conf" php_flag session.auto_start 0 </Directory> <Directory /usr/share/phpmyadmin/setup/> <IfModule mod_authz_core.c> # Apache 2.4 <RequireAny> Require ip 127.0.0.1 Require ip 192.168.1.x Require ip ::1 </RequireAny> </IfModule> <IfModule !mod_authz_core.c> # Apache 2.2 Order Deny,Allow Deny from All Allow from 127.0.0.1 Allow from 192.168.1.x Allow from ::1 </IfModule> ErrorDocument 403 "Access denied per /etc/httpd/conf/webapps.d/phpmyadmin.conf" </Directory>

Une fois modifié, il ne reste plus qu’à saisir dans la barre du navigateur hôte :

http://192.168.1.x/phpmyadmin
Le serveur phpMyAdmin en action


Dans l’interface, inscrire le mot de passe que vous avez créé précédemment en tant qu’utilisateur root. Au premier lancement de phpMyAdmin une erreur s’affiche par l’absence du répertoire tmp.

$cfg.png

Pour remédier à ce problème, nous créons ce dossier dans /usr/share/phpmyadmin/ en tant que root ou en mode sudo.

$ cd /usr/share/phpmyadmin && mkdir tmp

Nous faisons de même pour accorder les droits en lecture et écriture pour le répertoire tmp/.

# chmod 700 tmp/

Donner les droits de propriété à apache au répertoire tmp/.

# chown apache:apache /usr/share/phpmyadmin/tmp

Sécuriser phpMyAdmin

Par défaut, dans phpMyAdmin, le compte administrateur est nommé root. Un attaquant possède déjà 50% de la solution, et, doit seulement se concentrer sur la recherche du mot de passe. Je sais, nous sommes sur une installation en local, mais il est de bon ton de faire les choses au mieux.


Premièrement, il est vivement conseillé de créer un autre compte administrateur avec un nom farfelu.

PhpMyadmin Comtes utilisateurs.png
  • Pour ce faire aller dans l’onglet Comptes utilisateurs -> Ajouter un compte utilisateur. Saisissez un Nom d’utilisateur et un Mot de passe suffisamment complexe. Pour le Nom d’hôte, rester en Local.
  • Base de données pour ce compte d’utilisateur
  1. cocher Créer une base portant son nom et donner à cet utilisateur tous les privilèges sur cette base.
  2. cocher Accorder tous les privilèges à un nom passe-partout (utilisateur\_%).
  • Privilèges globaux
  1. Cocher Tout cocher, ce qui aura pour effet de sélectionner Données, Structure, Administration
  • Pour finaliser la création du compte administrateur nouvellement créé cliquer sur Exécuter.


Deuxièmement, il est plus qu’indiqué de créer un compte utilisateur avec des droits limités pour faire le travail routinier. Cela limitera toute maladresse éventuelle.

  • Répéter les opérations précédentes excepté dans Privilèges globaux
  1. Cocher uniquement Données et Structure
Attention !
Lors de la création de votre utilisateur root ou ordinaire, ne pas mettre d’accents sur les mots. Lors de la connexion à phpMyAdmin l’accentuation n’est pas gérée.


Troisièmement, vous pouvez maintenant retirer les comptes par défaut root Retirer les comptes utilisateurs sélectionnés.

  1. Cocher Supprimer les bases de données portant le même nom que les utilisateurs.


Quatrièmement, il est souhaitable de sécuriser l’adresse web qui est prédéfini comme http://localhost/phpmyadmin/. Nous allons modifier cet état de fait pour plus de sécurisation. Encore une fois, ce n’est pas nécessaire parce que nous sommes en local sur notre propre machine, mais sur une machine distante ce n’est pas la même chose. Par conséquent il vaut mieux être plus vigilant que pas assez.

# cd /etc/httpd/conf/sites.d

Éditer le fichier phpmyadmin.conf.

# vim phpmyadmin.conf
# phpMyAdmin - Web based MySQL browser written in php # # Allows only localhost by default # # But allowing phpMyAdmin to anyone other than localhost should be considered # dangerous unless properly secured by SSL

Alias /LeNomQueVousSouhaitez /usr/share/phpmyadmin

Mettez l’alias que vous voulez. Si celui-ci est LeNomQueVousSouhaitez votre adresse web aura la forme suivante : http://localhost/LeNomQueVousSouhaitez/. Pour que les modifications soient prises en compte saisissez cette commande.

# systemctl reload httpd.service
Localhost LeNomQueVousSouhaitez.png

Les liens par défaut

Saisissez dans la barre d’adresse : http://127.0.0.1/ Si la page affiche : « It works ! » apache est bien installé.

L’accès à phpmyadmin : http://127.0.0.1/phpmyadmin
Bienvenue à phpMyAdmin
login : root
par défaut pass :

L’accès aux pages : http://127.0.0.1/
L’accès au dossier de travail est ici : /var/www/html/

Ajouter le SSL

Essayer d’ouvrir d’abord :
https://127.0.0.1/

Si vous obtenez une page « erreur ».

Installer le paquet depuis le centre de contrôle Mageia :
apache-mod_ssl

Relancer :
https://127.0.0.1/
Confirmer l’exception de sécurité.

Ainsi se termine ce tutoriel, avec l’aide précieuse de cette documentation et de celle-ci et bien d’autres informations glaner sur le web.