- architecture-web
Maîtriser les environnements d'hébergements web sous GNU/Linux et savoir administrer un système GNU/Linux pour le web.
- Rappels sur le fonctionnement des réseaux et d'Internet (design, protocoles et matériel)
- Fonctionnement du protocole TCP
- Présentation de Debian
- Mise en place d'une machine virtuelle Debian avec publication de ports
- Initiation à la philosophie des systèmes UNIX
- Administration de base sur GNU/Linux :
- Utiliser les commandes de base du shell (rappels)
- Créer des alias et utiliser
.bashrc - Utiliser un éditeur de texte (nano, vi(m) ou emacs)
- Créer un utilisateur
- Comprendre et gérer correctement les droits sur les fichiers
- Gérer les paquets avec
apt(mise à jour, installation/suppression) - Installer et configurer un serveur SSH
- Sécuriser une connexion SSH (usage de clés de chiffrement)
- Installer et configurer le serveur web Apache 2
- Savoir utiliser les services de
systemd(démarrage, arrêt, status, enabled/disabled) - Afficher les sockets
- Scanner les ports
- Introduction à Git et Github
- Déploiement de clé publique sur Github
- Déploiement manuel d'un site/application web avec git et un dépôt remote
- Fonctionnement d'Apache :
- Configurations d'Apache (principale, par site,
.htaccess) - Mise en place d'un site web (activer/désactiver)
- Les Virtual Host
- Mise en place de plusieurs sites web
- Les directives principales
- Mise en place d'un site web PHP avec le module Apache
- La réécriture d'URL avec le module
mod_rewrite - Installation et usage d'un certificat TLS
- Configurations d'Apache (principale, par site,
- Parcours d'une requête HTTP sur Internet
- Consulter le glossaire (protocoles, matériel, modèle OSI et couches, etc.) associé
Apache HTTP Server : guide pratique (vhosts, TLS, performances) : Servir un site statique avec Apache, de Stéphane Robert. Réaliser le TP jusqu'à Activer HTTPS avec Let’s Encrypt (exclus).
- Comment Apache sait quel site afficher quand j’ai plusieurs domaines et plusieurs sites web ?
- Comment tester le fonctionnement de ma configuration multisite avec le client cURL ?
- Que fait la commande
sudo chown -R www-data:www-data /var/www/monsite? Qui est l'utilisateurwww-data? - A quoi sert la directive suivante :
<Directory /var/www/monsite>
Options -Indexes +FollowSymLinks
AllowOverride None
Require all granted
</Directory>
- Que fait la commande
sudo apache2ctl configtest? - Que signifie la directive
<VirtualHost *:80>? - A quoi sert la directive
ServerName? - Peut-on surcharger (override) une configuration d'un site web avec Apache ? Si oui, comment ?
- A quoi sert le programme
apache2ctl? - A quoi servent les directives
<Directory>,<Files>et<FilesMatch>. Où se placent-elles ? - Apache enregistre des logs (activité du site et erreurs du serveur). Où les trouvent-on ? Inspecter les avec
cat. Monitorer les logs en temps réel avectail -f /path/vers/fichier_log.
N'hésitez pas à utiliser la documentation très complète (et traduite en français) d'Apache pour vous former, confirmer ou vérifier des informations. La documentation offre des guides, des conseils (sécurité, etc.), des exemples ainsi que la référence de toutes les directives.
Consulter la documentation officielle
-
À quoi sert la réécriture d'URL ? Peut-elle être placée dans un fichier .htacess ?
-
Comment activer le module
rewriteet vérifier qu'il est bien installé ? -
A l'aide des directives d'Apache de réécriture d'URL, implémenter les URL suivantes :
- Client :
/ancien-contactréécrite en/ancien-contact.html - Client :
/a-propos.htmlréécrite en/a-propos.php - Client :
/article-42réécrite en/article.php?id=42, oùidest un entier positif - Client :
/article-42réécrite enarticle.php?id=42uniquement si le fichierarticle.phpexiste sur le serveur
- Client :
-
À quoi servent les flags suivants :
- [L]
- [R]
- [NC]
- [QSA]
- [F]
Utiliser l'excellent site Regexr pour tester vos expressions régulières et réviser les éléments de syntaxe des expressions.
Pour travailler sur des serveurs GNU/Linux, il est indispensable de maîtriser les bases d'un éditeur de texte dans le shell.
Choisissez un éditeur de texte parmi nano, vim ou emacs et réalisez un/son tutoriel pour apprendre les bases : créer, parcourir et éditer un fichier, faire une recherche par pattern.
- nano :
man nano, liste des commandesCtr+ G; - vim :
vimtutor - emacs : emacs, puis
Ctr + h t
L'avantage de
nanoet devi(m), c'est qu'ils sont installés par défaut sur toutes les distributions GNU/Linux. Ainsi, si vous de disposez pas des privilèges pour installer un autre éditeur de texte, vous êtes en mesure de travailler sereinement.
- Inspecter la sortie de
man -f ls cut grep trpour savoir ce que fait chaque commande; - Créer un alias
llsqui affiche la liste longue triée par taille décroissante (en utilisantls -l); - Créer un alias
dirsqui n’affiche que les répertoires du répertoire courant (en utilisantls,grepoucut); - Créer un alias
bigqui affiche uniquement les 5 plus gros fichiers du répertoire courant; - Créer un alias
ownersqui affiche uniquement propriétaire et nom de fichier (en utilisantls,cutettr); - Enregistrer ces alias dans votre fichier
~/.bash_aliases.
Conseil : dès que vous rencontrez un nouveau programme/commande, utiliser le manuel
man <nouveau programme>. Apprenez à utiliserman(navigation, recherche par pattern pour retrouver rapidement une option)
#installer
apt install git
#créer un dépôt
git init
#configurer git
git config --global user.name "votre name"
git config --global user.emaim "votre emails"
git config --global core.editor "votre éditeur préféré"
#vérifier la configuration
git config --list
#éditer la configuration
git config --global --edit
#renommer branche 'master' en 'main'
git branch --move master main
#lister les branches
git branch
#préparer un commit
git add
#faire un commit
git commit -m "message"
#inspecter
git status
git logOuvrages recommandés !
- Les réseaux de zéro : comprendre les réseaux par la pratique, publié chez Eyrolles, par Vincent Sénétaire, Jean-Manassé Pouabou, 2022. Excellent ouvrage, LP++
- TCP/IP Network Administration, publié chez O'Reilly, par Craig Hunt, 2002. LP+
- Glossaire : définition des protocoles, modèle OSI, matériel, etc.