Lorsque l’on souhaite héberger un site web sur son serveur et le mettre en ligne, il nous suffit de disposer d’un serveur Apache, on peut alors publier du contenu statique sur des pages HTML – on s’aperçoit rapidement des limitations.
Grâce à PHP, langage de programmation orienté objet, nous allons pouvoir aller plus loin et générer du contenu dynamique. Afin de stocker différents types de données, il peut être intéressant de faire aussi appel à une base de données, telle que MYSQL.
Ce guide détaille les étapes pour installer PHP sur son serveur Ubuntu, ainsi que MYSQL.
Pour les étapes qui suivent, j’utilise un VPS Ubuntu avec un Serveur HTTP Apache installé et fonctionnel.
Pré-requis:
- Disposer d’un serveur dédié ou VPS Ubuntu – vous pouvez commander un VPS chez OVH
- Et avoir installé un serveur HTTP Apache
Installation de PHP avec Apache sur Ubuntu
Module PHP pour Apache
Pour commencer, nous allons installer le module PHP pour notre serveur Apache. En tant que Super User, on entrera la commande:
apt install libapache2-mod-php
Qui installera le module PHP Apache ainsi que certaines dépendances.
Ajout des modules fréquemment utilisés
Avant de poursuivre, profitons-en également pour installer certains modules fréquemment utilisés en conjonction avec PHP.
Plus de détails sur ces modules courants sur Ubuntu-fr.org.
Nous allons donc simplement regrouper et installer cet ensemble de modules en une seule commande :
apt install php-cli php-common php-mbstring php-gd php-intl php-xml php-mysql php-zip php-curl php-xmlrpc
Et recharger notre serveur Apache :
systemctl reload apache2
Test de PHP sur notre serveur Apache
Nous pouvons maintenant tester rapidement que notre Module PHP a bien été installé et activé sur notre serveur Apache. Pour ce faire, nous allons créer un fichier PHP contenant une simple fonction et le publier sur le répertoire racine de notre serveur HTTP.
nano /var/www/html/info.php
Dans ce fichier, nous ajouterons simplement les lignes:
<?php
phpinfo();
?>
Puis on enregistrera le fichier.
Avec notre navigateur web, entrons maintenant l’adresse IP de notre serveur suivi de « /info.php ».
http://ip/info.php
Ce qui devrait nous afficher un ensemble d’informations liées à l’installation de PHP sur notre serveur :
De manière générale, on évitera de rendre de telles informations publiques, elles pourraient être utiles à quiconque souhaitant s’attaquer notre serveur.
Maintenant que nous disposons de PHP, nous pouvons passer à la partie MYSQL.
Installation de MYSQL sur Ubuntu
Installation de MYSQL
Pour installer MYSQL server sur notre serveur Ubuntu, il suffit, en tant que Super User, d’entrer la commande :
apt install mysql-server
Ceci étant fait, nous pouvons lancer le script suivant qui nous permettra de définir quelques configurations de sécurité :
mysql_secure_installation
On nous demande dans un premier temps de définir un mot de passe pour l’utilisateur root de MYSQL. Ensuite on peut définir si l’on souhaite supprimer l’accès anonyme à la base de donnée, si l’on souhaite désactiver la connexion à distance en tant que root (autre que sur localhost), si l’on souhaite supprimer les bases de test, et finalement si l’on souhaite recharger la table des privilèges.
Securing the MySQL server deployment.
Connecting to MySQL using a blank password.
The 'validate_password' component is installed on the server.
The subsequent steps will run with the existing configuration
of the component.
Please set the password for root here.
New password:
Re-enter new password:
Estimated strength of the password: 100
Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) : Y
By default, a MySQL installation has an anonymous user,
allowing anyone to log into MySQL 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? (Press y|Y for Yes, any other key for No) : 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? (Press y|Y for Yes, any other key for No) : Y
Success.
By default, MySQL 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? (Press y|Y for Yes, any other key for No) : 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? (Press y|Y for Yes, any other key for No) : Y
Success.
All done!
Je réponds personnellement Yes à l’ensemble de ces questions.
Nous pouvons maintenant nous connecter à notre base de donnée en tant qu’utilisateur root avec le mot de passe que nous venons de définir :
mysql -u root -p
A partir de là, nous pouvons créer un nouvel utilisateur, ce qui nous permettra d’éviter le compte root qui dispose de privilèges élevés, et nous autorisera également à nous connecter à distance à notre base de données.
Création d’un utilisateur
Pour créer un nouvel utilisateur dans notre base de données MYSQL, on lancera la requête SQL suivante en choisissant notre nom d’utilisateur ainsi qu’un mot de passe :
CREATE USER 'utilisateur'@'localhost' IDENTIFIED BY 'motdepasse';
Nous pouvons dès à présent quitter le compte root pour nous connecter à MYSQL en utilisant notre nouvel utilisateur fraichement créé.
exit
mysql -u utilisateur -p
Et voilà!
Maintenant que nous avons PHP et MYSQL à disposition, nous pouvons développer un site web dynamique. Aujourd’hui, il existe plusieurs Système de Gestion de Contenu (CMS) pour faciliter cela, tels que WordPress. Pour continuer, vous pouvez suivre ce guide pour installer WordPress sur votre serveur.
Pour apprendre plus sur PHP et MYSQL, il existe aussi d’excellents tutoriels très complets, tel que celui d’OpenClassrooms