Présentation
Nous allons voir au travers de ce tutoriel comment installer un serveur web sous Linux Debian 10 buster. Nous allons voir l'installation de apache2, php, mysql, mariadb et phpmyadmin.
Les outils utilisés sont Putty et accessoirement Filezilla.
Installation
Connectez vous en root sur votre serveur dédié avec Putty.
Une fois connecté vérifiez que votre serveur est bien à jour en tapant les commandes suivante et dans l'ordre
- apt update
- apt upgrade
- apt dist-upgrade
c'est que votre serveur dédié est à jour. Si ce n'est pas le cas installez vos mises à jour.0 mis à jour, 0 nouvellement installés, 0 à enlever et 0 non mis à jour.
Maintenant nous allons commencer par installer les librairies de base. Tapez la commande suivante puis validez
à la question souhaitez-vous continuer ? [O/n] appuyez sur la lettre "o" puis validez.apt install build-essential
Patientez le temps de l'installation des paquets.
Une fois l'installation terminé vous allez maintenant installer apache2.
Installation Apache2
Pour se faire tapez la commande suivante
à la question souhaitez-vous continuer ? [O/n] appuyez sur la lettre "o" puis validez.apt install apache2
On va sécuriser un minimum apache2. Tapez
remplacernano /etc/apache2/conf-available/security.conf
- ServerTokens OS en ServerTokens Prod
- ServerSignature On en ServerSignature Off
Ensuite on relance apache2
apache2 utilise par défaut pour les sites web le cheminservice apache2 restart
Selon les attaques envers votre serveur dédié ils vont chercher dans ce chemin. Ce n'est pas pour autant qu'ils trouvent ce qu'ils veulent mais bon, personnellement je préfère modifier le chemin par défaut et laisser les attaques se confronter au néant lol. Il est donc possible de modifier le chemin par défaut de vos sites web. Voici comment faire si ça vous intéresse./var/www/
Vous allez taper la commande suivante
puis trouver la lignenano /etc/apache2/apache2.conf
et modifier pour mettre le chemin que vous désirez. Bien évidemment il devra être créé. Par exemple je créé mes sites web dans<Directory /var/www/>
dans ce cas la ligne devra être/home/mes-sites/
On referme le fichier en faisant le manipulation de touche suivante ctrl + x ensuite la touche "o" et pour finir la touche Entrée.<Directory /home/mes-sites/>
Ensuite on relance apache2
service apache2 restart
Installation de PHP
Dans un premier temps on installe les paquets nécessaires.
Ensuite on ajoute le dépôt packages.sury.org. Tapez la commande suivanteapt -y install apt-transport-https lsb-release ca-certificates
Vous tapez ensuite la ligne suivante qui va permettre la création du fichier php.list dans /etc/apt/sources.list.d/ Cela permettra lorsque vous regarderez si une mise à jour est disponible via la commande apt-get update de voir si votre version a besoin d'une mise à jour. S'il y a besoin il vous suffira de taper apt-get upgrade et la nouvelle version s'installera.wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg
Vérifiez la mise à jour des paquets du nouveau dépôt et les installersh -c 'echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/php.list'
Lancez ensuite l'installation de PHP. Alors attention car je vas vous donner 2 version de PHP que vous pouvez installer mais choisissez celle avec lequel votre site pourra tourner. Par exemple à l'heure de la rédaction de e tutoriel le forum PHPBB peut tourner sur la version PHP 8.0 alors que le forum vBulletin tourne sur la version PHP 7.4 et ne fonctionne donc pas sur la version PHP 8.0. Même si le fonctionnement sous PHP 8.0 va arriver dans la prochaine mise à jour de vBulletin.apt update && apt upgrade
Une fois sûr de votre version à installer vous tapez en fonction de la version
ouapt install php7.4 php7.4-apcu php7.4-bcmath php7.4-bz2 php7.4-cli php7.4-curl php7.4-gd php7.4-geoip php7.4-igbinary php7.4-imagick php7.4-intl php-json php7.4-mbstring php7.4-mysql php7.4-opcache php7.4-pgsql php7.4-readline php7.4-redis php7.4-soap php7.4-tidy php7.4-xml php7.4-xmlrpc php7.4-zip
Une fois PHP installé lorsque vous voulez vérifier votre version en tapant php -v il vous affiche (pour la version PHP 8.0)apt install php8.0 php8.0-apcu php8.0-bcmath php8.0-bz2 php8.0-cli php8.0-curl php8.0-gd php8.0-igbinary php8.0-imagick php8.0-intl php8.0-mbstring php8.0-mysql php8.0-opcache php8.0-pgsql php8.0-readline php8.0-redis php8.0-soap php8.0-tidy php8.0-xml php8.0-xmlrpc php8.0-zip
PHP 8.0.10 (cli) (built: Aug 26 2021 16:09:29) ( NTS )
Copyright (c) The PHP Group
Zend Engine v4.0.10, Copyright (c) Zend Technologies
with Zend OPcache v8.0.10, Copyright (c), by Zend Technologies
Installation de MariaDB
MariaDB est tout simplement le serveur mysql.
Tapez la commande suivante pour installer les paquets.
ensuite vous entrez la commande suivante mais vous pouvez vérifier les versions sur ce lien ICI car lors de la rédaction de ce tutoriel c'est la version 10.6 Stable la plus récente.apt install software-properties-common dirmngr
Une fois sur le site vous cliquez sur debian >> Debian 10 buster >> 10.6 [stable] (ou autre version plus récente mais prenez la stable)
Une fois la version choisi vous verrez en dessous qu'il vous met les lignes à taper pour l'installation.
Entrez ensuite
etapt-key adv --fetch-keys 'https://mariadb.org/mariadb_release_signing_key.asc'
on lance un update et upgrade et on installe si nécessaireadd-apt-repository 'deb [arch=amd64,arm64,ppc64el] https://ftp.igh.cnrs.fr/pub/mariadb/repo/10.6/debian buster main'
Maintenant on installe MariaDBapt update && apt upgrade
Une fois l'installation terminé vous pouvez vérifier votre version en tapant: mysqlapt install mariadb-server
Il vous retournera ceci
Tapez quit pour sortir et revenir en root.Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 45
Server version: 10.6.4-MariaDB-1:10.6.4+maria~buster mariadb.org binary distribution
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 est maintenant installé.
Voyons maintenant l'installation de phpmyadmin.
Installation de phpMyAdmin
Sur Debian 10 buster, phpMyAdmin ne fait plus parti des paquets installable. Il faut donc procéder autrement.
tapez la commande suivante
ensuite vous allez sur le site de phpMyAdmin https://www.phpmyadmin.net/downloads/ pour prendre la dernière version. Pour ma part à l'heure actuelle c'est la phpMyAdmin-5.1.1-all-languages.tar.gz donc vous faite un clic droit sur le nom et "copier l'adresse du lien".apt install php-mbstring php-zip php-gd
Tapez ensuite la ligne suivante pour télécharger phpMyAdmin sur votre serveur dédié
ensuite vous décompressez l'archive avec la commande suivante
vous déplacez le dossier décompressé dans /usr/share/phpmyadmin avec la commande suivante. Elle va déplacer le dossier et le renommer en phpmyadmin.tar xvf phpMyAdmin-5.1.1-all-languages.tar.gz
Pour toutes les dernières commandes utilisé dans ce tutoriel attention aux versions car lors de la rédaction j'ai utilisé la dernière version mais pour vous ce sera peut-être une version plus récente. Donc ne copiez/collez pas bêtement les lignes sinon ça ne fonctionnera pasmv phpMyAdmin-5.1.1-all-languages/ /usr/share/phpmyadmin
Passons maintenant à la configuration.
Vous allez créer le dossier tmp qui sert à ce que les fichiers temporaires soient mis dedans.
Vous définissez ensuite le propriétaire de l'exécutionmkdir -p /var/lib/phpmyadmin/tmp
Maintenant nous allons copier/coller le fichier de config et en le renommant et répondre à la question du blowfish_secretchown -R www-data:www-data /var/lib/phpmyadmin
Vous éditez le fichiercp /usr/share/phpmyadmin/config.sample.inc.php /usr/share/phpmyadmin/config.inc.php
puis vous cherchez la ligne et la modifieznano /usr/share/phpmyadmin/config.inc.php
ensuite plus bas$cfg['blowfish_secret'] = 'vous devez mettre ici 32 caractères minimum et tout attaché et ne mettez pas d'accent etc'; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */
vous dé-commentez les lignes de façon à faire ceci/* Storage database and tables */
// $cfg['Servers'][$i]['pmadb'] = 'phpmyadmin';
// $cfg['Servers'][$i]['bookmarktable'] = 'pma__bookmark';
// $cfg['Servers'][$i]['relation'] = 'pma__relation';
// $cfg['Servers'][$i]['table_info'] = 'pma__table_info';
// $cfg['Servers'][$i]['table_coords'] = 'pma__table_coords';
// $cfg['Servers'][$i]['pdf_pages'] = 'pma__pdf_pages';
// $cfg['Servers'][$i]['column_info'] = 'pma__column_info';
// $cfg['Servers'][$i]['history'] = 'pma__history';
// $cfg['Servers'][$i]['table_uiprefs'] = 'pma__table_uiprefs';
// $cfg['Servers'][$i]['tracking'] = 'pma__tracking';
// $cfg['Servers'][$i]['userconfig'] = 'pma__userconfig';
// $cfg['Servers'][$i]['recent'] = 'pma__recent';
// $cfg['Servers'][$i]['favorite'] = 'pma__favorite';
// $cfg['Servers'][$i]['users'] = 'pma__users';
// $cfg['Servers'][$i]['usergroups'] = 'pma__usergroups';
// $cfg['Servers'][$i]['navigationhiding'] = 'pma__navigationhiding';
// $cfg['Servers'][$i]['savedsearches'] = 'pma__savedsearches';
// $cfg['Servers'][$i]['central_columns'] = 'pma__central_columns';
// $cfg['Servers'][$i]['designer_settings'] = 'pma__designer_settings';
// $cfg['Servers'][$i]['export_templates'] = 'pma__export_templates';
Tout en bas du fichier vous ajoutez la ligne suivante/* Storage database and tables */
$cfg['Servers'][$i]['pmadb'] = 'phpmyadmin';
$cfg['Servers'][$i]['bookmarktable'] = 'pma__bookmark';
$cfg['Servers'][$i]['relation'] = 'pma__relation';
$cfg['Servers'][$i]['table_info'] = 'pma__table_info';
$cfg['Servers'][$i]['table_coords'] = 'pma__table_coords';
$cfg['Servers'][$i]['pdf_pages'] = 'pma__pdf_pages';
$cfg['Servers'][$i]['column_info'] = 'pma__column_info';
$cfg['Servers'][$i]['history'] = 'pma__history';
$cfg['Servers'][$i]['table_uiprefs'] = 'pma__table_uiprefs';
$cfg['Servers'][$i]['tracking'] = 'pma__tracking';
$cfg['Servers'][$i]['userconfig'] = 'pma__userconfig';
$cfg['Servers'][$i]['recent'] = 'pma__recent';
$cfg['Servers'][$i]['favorite'] = 'pma__favorite';
$cfg['Servers'][$i]['users'] = 'pma__users';
$cfg['Servers'][$i]['usergroups'] = 'pma__usergroups';
$cfg['Servers'][$i]['navigationhiding'] = 'pma__navigationhiding';
$cfg['Servers'][$i]['savedsearches'] = 'pma__savedsearches';
$cfg['Servers'][$i]['central_columns'] = 'pma__central_columns';
$cfg['Servers'][$i]['designer_settings'] = 'pma__designer_settings';
$cfg['Servers'][$i]['export_templates'] = 'pma__export_templates';
Vous refermez le fichier en sauvegardant. Toute cette partie vous pouvez la faire également via filezilla si vous êtes plus à l'aise pour l'édition de fichiers.$cfg['TempDir'] = '/var/lib/phpmyadmin/tmp';
Maintenant vous allez créer la table create_tables.sql
ensuite on ouvre MariaDB en tapant tout simplementmariadb < /usr/share/phpmyadmin/sql/create_tables.sql
il vaut mieux créer un user qui lui aura tout les droits. Pour cela tapez et modifiez la ligne suivante avec vos infos.mariadb
Remplacez papyinfo et motdepasse par vos informations.GRANT ALL PRIVILEGES ON *.* TO 'papyinfo'@'localhost' IDENTIFIED BY 'motdepasse' WITH GRANT OPTION;
sortez ensuite de MariaDB en tapant exit.
Vous allez configurer maintenant phpMyAdmin avec apache2.
Tapez
mettre dans le fichier cecinano /etc/apache2/conf-available/phpmyadmin.conf
Code : Tout sélectionner
Alias /phpmyadmin /usr/share/phpmyadmin
<Directory /usr/share/phpmyadmin>
Options SymLinksIfOwnerMatch
DirectoryIndex index.php
<IfModule mod_php5.c>
<IfModule mod_mime.c>
AddType application/x-httpd-php .php
</IfModule>
<FilesMatch ".+\.php$">
SetHandler application/x-httpd-php
</FilesMatch>
php_value include_path .
php_admin_value upload_tmp_dir /var/lib/phpmyadmin/tmp
php_admin_value open_basedir /usr/share/phpmyadmin/:/etc/phpmyadmin/:/var/lib/phpmyadmin/:/usr/share/php/php-gettext/:/usr/share/php/php-php-gettext/:/usr/share/javascript/:/usr/share/php/tcpdf/:/usr/share/doc/phpmyadmin/:/usr/share/php/phpseclib/
php_admin_value mbstring.func_overload 0
</IfModule>
<IfModule mod_php.c>
<IfModule mod_mime.c>
AddType application/x-httpd-php .php
</IfModule>
<FilesMatch ".+\.php$">
SetHandler application/x-httpd-php
</FilesMatch>
php_value include_path .
php_admin_value upload_tmp_dir /var/lib/phpmyadmin/tmp
php_admin_value open_basedir /usr/share/phpmyadmin/:/etc/phpmyadmin/:/var/lib/phpmyadmin/:/usr/share/php/php-gettext/:/usr/share/php/php-php-gettext/:/usr/share/javascript/:/usr/share/php/tcpdf/:/usr/share/doc/phpmyadmin/:/usr/share/php/phpseclib/
php_admin_value mbstring.func_overload 0
</IfModule>
</Directory>
# Authorize for setup
<Directory /usr/share/phpmyadmin/setup>
<IfModule mod_authz_core.c>
<IfModule mod_authn_file.c>
AuthType Basic
AuthName "phpMyAdmin Setup"
AuthUserFile /etc/phpmyadmin/htpasswd.setup
</IfModule>
Require valid-user
</IfModule>
</Directory>
# Disallow web access to directories that don't need it
<Directory /usr/share/phpmyadmin/templates>
Require all denied
</Directory>
<Directory /usr/share/phpmyadmin/libraries>
Require all denied
</Directory>
<Directory /usr/share/phpmyadmin/setup/lib>
Require all denied
</Directory>
tapez ensuite
puis relancez apache2a2enconf phpmyadmin.conf
Votre phpMyAdmin est maintenant accessible. Vous pouvez créer des utilisateurs etc. grâce à votre utilisateur qui à tout les droits. Un tutoriel est fait pour apprendre à créer des comptes etc.systemctl reload apache2
phpMyAdmin est accessible via votre domaine ou ip serveur dédié /phpmyadmin. Par exemple votre-site.com/phpmyadmin ou ip_serveur_dédié/phpmyadmin
A ce stade vous avez un serveur web qui tourne mais accessible uniquement via son adresse ip. Maintenant nous allons voir comment placer votre domaine et les fichiers de votre site.
On commence par créer votre espace sur la machine.
Comme vu dans la partie installation d'apache2 tout dépend où vous voulez créer votre espace pour votre site web.mkdir /home/mes-sites/papyinfo
Ensuite on se déplace dans le dossier
maintenant nous allons créer un fichier index.php de façon à tester si la redirection vers le dossier mais aussi du domaine qui pointera dessus est bon.cd /home/mes-sites/papyinfo
Tapez
Une page vide s'ouvre et vous allez mettre ceci dedansnano index.php
On referme le fichier en faisant le manipulation de touche suivante ctrl + x ensuite la touche "o" et pour finir la touche Entrée.<?php
echo "Bienvenue chez Papy___";
?>
Nous allons maintenant dire à Apache2 où se situe votre fichier et donc votre site.
Vous allez taper la commande suivante
ensuite vous tapezcd /etc/apache2/sites-available
Attention !!! mettez le même nom que votre dossier crée dans /home/mes-sites pour éviter de se perdre.nano papyinfo.conf
Vous vous retrouvez face à une page vide et vous allez copier/coller ce qui suit
Code : Tout sélectionner
<VirtualHost *:80>
ServerName www.papyinfo.fr
ServerAlias papyinfo.fr *.papyinfo.fr
ServerAdmin contact@votremail.fr
DocumentRoot /home/mes-sites/papyinfo
<Directory />
Require all granted
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /home/mes-sites/>
Require all granted
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
On referme le fichier en faisant le manipulation de touche suivante ctrl + x ensuite la touche "o" et pour finir la touche Entrer.
Tapez ensuite la commande suivante
papyinfo = le nom du fichier donné quelques lignes plus haut pour papyinfo.confa2ensite papyinfo
puis relancez apache2
Votre machine est lié à votre domaine mais le domaine lui n'y est pas.service apache2 restart
Allez sur le panel de votre domaine chez votre prestataire et modifiez la zone DNS du domaine. Je parlerai si vous l'avez loué chez OVH pour ce qui suit.
Une fois connecté allez sur zone DNS
Sur la ligne ou le type est A vous modifiez la ligne et dans Cible vous mettez l'adresse IP de votre serveur dédié. Vous validez et c'est bon.
Vous pouvez également ajouter une entrée sur le panel de votre domaine. Dans
- sous-domaine vous mettez www
- Cible vous mettez l'adresse ip du serveur dédié.
Ensuite si vous allez sur votre adresse de site vous devriez voir le texte mis dans le fichier index.php
Si vous ne vous êtes pas trompé normalement votre site est accessible désormais.
Petite précision qui a son importance, si vous uploadez votre site sur ftp avec le root il vous faudra taper la ligne suivante
Sinon vous risquez d'avoir des soucis avec les droits, en effet, votre user root n'est pas fait pour ça, ce qui touche aux sites web c'est le "user" www-data (déjà créé de base) donc pensez bien que si vous ajoutez des fichiers il vous faudra taper cette commande à chaque fois.chown -R www-data:www-data /home/mes-sites/papyinfo
Ce tutoriel est la propriété de papyinfo.fr