# Installation d'un serveur web Debian9 - PHP 7.1 - MariaDB - Apache2 - CMS Joomla Voici un mémo pour faire un serveur web de base pour le CMS Joomla. **Note : Cette installation est juste pratique, il faudra ajouter vos certificats, configurer correctement Debian et Apache pour pas lâcher trop d'informations.** Attention, le VHOST est à configurer en fonction de vos besoins, celui-ci est volontairement "léger". **Installation** Récupérer l'iso Debian9 net-install et faire l'installation de base (ssh et fichiers de bases) Récup des dépôts pour php 7.1 : `apt-get install apt-transport-https lsb-release ca-certificates` `wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg` `echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/php.list` `apt-get update` Installation PHP 7.1 et Apache 2 `apt install --no-install-recommends php7.1 libapache2-mod-php7.1 php7.1-mysql php7.1-curl php7.1-json php7.1-gd php7.1-mcrypt php7.1-msgpack php7.1-memcached php7.1-intl php7.1-sqlite3 php7.1-gmp php7.1-geoip php7.1-mbstring php7.1-redis php7.1-xml php7.1-zip php7.1-cli php7.1-common` `apt install apache2 apache2-utils unzip` \*\* On active php pour Apache et le mode rewrite (ré écriture au vol des URL) : `a2dismod mpm_event` `a2enmod php7.1` `a2enmod rewrite` \*\* On vérifie le fonctionnement en mettant une page php dans /var/www/html/ , (le dossier html est le dossier par défaut d'Apache). \*\* J'utilise nano mais vous pouvez choisir votre éditeur. `nano /var/www/html/test.php` \*\* On met ce code à l'intérieur : ``` ServerAdmin contact@test.com ServerName test DocumentRoot /var/www/test/ ``` \*\* Mise en place du site pour Apache `a2ensite test` \*\* Une fois fait, il faut mettre à jour le serveur DNS pour lier l'IP et le vhost (si c'est en local, le fichier host de votre distribution fera l'affaire) `x.x.x.x test` **Création de la Base de Données** \*\* Mise en place de l'utilisateur et de la base de donnée pour test: `mysql -u root -p` \--CREATE DATABASE nom\_db; \--GRANT ALL PRIVILEGES ON nom\_db.\* TO "user\_db"@"localhost" IDENTIFIED BY 'mot\_de\_passe'; \--FLUSH PRIVILEGES; `CREATE DATABASE test_db;` `GRANT ALL PRIVILEGES ON test_db.* TO "testuser"@"localhost" IDENTIFIED BY '123456789';` `FLUSH PRIVILEGES;` `exit` \*\* Lorsque c'est fait pour chaque site, et vu que nous sommes au début, on peut reboot. \*\* Ensuite se connecter sur le nom de domaine (http://test) **Commandes utiles pour manager la base de données en ligne de commande** \*\* Pour lister les tables de données : `show databases;` \*\* Supprimer une bdd `mysql> drop database exemple;` \*\* Création d’un utilisateur Première action, création d’un utilisateur avec un mot de passe. Deux façons de faire sont possibles en fonction de la façon dont vous voulez attribuer le mot de passe au moment de la création de l’utilisateur. \*\* Lister les utilisateurs `select user,host from mysql.user;` - -- Mot de passe en clair dans la requête `CREATE USER 'user'@'localhost' IDENTIFIED BY 'password';` - -- Mot de passe passé sous un algorithme de Hash `SELECT PASSWORD('password');` -- Création du Hash du mot de passe `CREATE USER 'user'@'localhost' IDENTIFIED BY PASSWORD '*2470C0C06DEE42FD1618BB9900DFG1E6Y89F4';` \*\* Renommer un utilisateur `RENAME USER 'user'@'localhost' TO 'user2'@'localhost';` \*\* Changer un mot de passe `SET PASSWORD FOR 'user'@'localhost' = PASSWORD('newpassword');` \*\* Attribution de privilèges `GRANT SELECT, INSERT, UPDATE, DELETE ON `database`.* TO 'user'@'localhost';` \*\* Si vous voulez attribuer tout les droits sur une base de données à un utilisateur, il vous suffit d’effectuer la requête suivante : `GRANT ALL ON `database`.* TO 'user'@'localhost';` `FLUSH PRIVILEGES;` \*\* Révocation de privilèges `REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'user'@'localhost';` \*\* Voir les priviléges d'un utilisateur sur une base `show grants for "utilisateur"@"localhost";` \*\* Suppression Utilisateur `DROP USER 'user'@'localhost';`