Crash course. Systèmes Administration LAMP



Documents pareils
Linux et le Shell. Francois BAYART. Atelier du samedi 20 Novembre

Aide-Mémoire unix. 9 février 2009

TP1 - Prise en main de l environnement Unix.

Maintenance et gestion approfondie des Systèmes d exploitation Master 2 SILI. Année universitaire David Genest

Formation Technicien Supérieur de Support en Informatique T2SI. Le module LINUX. Session J04 Version 01


Dans le cadre de SECURIDAY Et sous le thème de Computer Forensics Investigation SECURINETS. Analyse des fichiers LOG. Tarek LABIDI (RT3)

Unix/Linux I. 1 ere année DUT. Université marne la vallée

Serveur de sauvegardes incrémental

Serveur Linux : FTP. Mise en place d un service FTP sous Linux. Bouron Dimitri 20/04/2014

Année Universitaire ième année IMAC Mardi 6 janvier Cloud computing Travaux Pratiques

Installation de Zabbix

La Comptabilité UNIX System V Acctcom

Installation d'un serveur FTP géré par une base de données MySQL

Bon ben voilà c est fait!

Installation d'un serveur sftp avec connexion par login et clé rsa.

Mise en place d un serveur Proxy sous Ubuntu / Debian

Sauvegarde sous MAC avec serveur Samba

BTS SIO SISR3 TP 1-I Le service Web [1] Le service Web [1]

Projet Administration Réseaux

Tuto 2 : Configuration Virtual box, Configuration et installation du serveur XiBO

Commandes Linux. Gestion des fichiers et des répertoires. Gestion des droits. Gestion des imprimantes. Formation Use-IT

Pharmed. gestion de pharmacie hospitalière. Installation / déploiement

Shell Bash Niveau débutant

sshgate Patrick Guiran Chef de projet support

Déploiement d OCS 1.02 RC2 sous Debian Etch 64

Gestion d identités PSL Exploitation IdP Authentic

PRESENTATION RESSOURCES. Christian Dupaty BTS Systèmes Numériques Lycée Fourcade Gardanne Académie d Aix Marseille

D r o i t s D r o i t s Q u i z z : i n t e r n e t t e x t e

Un serveur web léger et ouvert

Serveurs de noms Protocoles HTTP et FTP

Stage SambaÉdu Module B. Jour 9 Outils complémentaires et problèmes récurrents divers

Introduction à Linux (pour le HPC) «Linux 101» Présentation :

Serveur de partage de documents. Étude et proposition d'une solution afin de mettre en place un serveur de partage de documents.

Pas-à-pas : activer WebDAV pour le partage des fichiers iwork sur ipad

[ GLPI et OCS pour Gentoo 2006] ArtisanMicro. Alexandre BALMES

Guide d'installation de la base de données ORACLE 10g ( ) pour linux FEDORA CORE 4.

Environnements informatiques

TP 1 Prise en main de l environnement Unix

CONFIGURATION DU SERVEUR DE MAILS EXIM. par. G.Haberer, A.Peuch, P.Saade

Réseaux et protocoles Damien Nouvel

«Astrophysique et instrumentations associées» Cours UNIX Benoît Semelin

1 Démarrage de Marionnet

Atelier Migration. Mohamadi ZONGO Formateur assistant Kassim ASSIROU Atelier Migration.

Atelier individuel. Linux 101. Frédérick Lefebvre & Maxime Boissonneault frederick.lefebvre@calculquebec.ca U. Laval - Janv. 2014

SERVEUR WEB LINUX LAMP. Raymond RAZAFIMAMONJY Administration LINUX / UNIX Chapitre 15

Documentation FOG. Déploiement d images de systèmes d exploitation à travers le réseau.

Hébergement de site web Damien Nouvel

PPe jaune. Domingues Almeida Nicolas Collin Leo Ferdioui Lamia Sannier Vincent [PPE PROJET FTP]

Les différentes méthodes pour se connecter

Ce manuel vous accompagne au long des procédures d installation et de restauration de PheBuX 2004 [alternative solutions]

C.M. 1 & 2 : Prise en main de Linux

Mac OS X en entreprise

Installation des outils OCS et GLPI

Cours Linux. Cours en ligne Administrateur Systèmes Linux. Académie Libre

Configuration matériel. Tâche 2 : Installation proprement dite de l application sur un serveur de test virtualisé sous VmWare Workstation.

Installation d ORACLE 10g sous Debian Etch

PPE GESTION PARC INFORMATIQUE

Tutoriel Création d une source Cydia et compilation des packages sous Linux

PUPPET. Romain Bélorgey IR3 Ingénieurs 2000

MANUEL INSTALLATION. GANESHA version 4. Editeur Anéma SAS Département Développement

Table des matières Hakim Benameurlaine 1

Vade mecum installation et configuration d une machine virtuelle V5.1.0

Atelier Le gestionnaire de fichier

Tutoriel compte-rendu Mission 1

Pratique et administration des systèmes

Raspberry pi : Développer une petite application web sur Raspberry

Sécuriser les applications web de l entreprise

CASE-LINUX MAIL - ROUNDCUBE

Catalogue des formations 2015

SSH. Romain Vimont. 7 juin Ubuntu-Party

Installation d OwnCloud 8.0 sous Debian Avec connexion des utilisateurs active directory et mise en place de HTTPS

Open Source Job Scheduler. Installation(s)

Installation d un serveur HTTP (Hypertext Transfer Protocol) sous Débian 6

1 / Introduction. 2 / Gestion des comptes cpanel. Guide débuter avec WHM. 2.1Créer un package. 2.2Créer un compte cpanel

Table des matières Avant-propos... V Scripting Windows, pour quoi faire?... 1 Dans quel contexte?

Personnes ressources Tice. Académie de Rouen

Transfert d un site local vers un serveur. NPDS REvolution 13. Rédaction : Axel Relecture : Dev & Jpb

KAJOUT WASSIM INTERNET INFORMATION SERVICES (IIS) 01/03/2013. Compte-rendu sur ISS KAJOUT Wassim

L3 informatique TP n o 2 : Les applications réseau

Solution d inventaire automatisé d un parc informatique et de télédistribution OCS INVENTORY NG. EHRHARD Eric - Gestionnaire Parc Informatique

LINUX - Sécurité. Déroulé de l'action. - 3 jours - Contenu de formation

OUAPI Guide d installation Outil d administration de parc informatique. Documentation d installation et de paramétrage

1. La plate-forme LAMP

Sauvegardes par Internet avec Rsync

Automatisation de l administration système avec

Réalisation d un portail captif d accès authentifié à Internet

e-obs : Conception et utilisation Rémy Decoupes Ether // ums3365

Expérience d un hébergeur public dans la sécurisation des sites Web, CCK. Hinda Feriani Ghariani Samedi 2 avril 2005 Hammamet

INSTALLATION DE BACKUPPC

Outils pour la pratique

Déploiement d'un serveur ENT

L auto-hébergement. Sébastien Dufromentel, Clément Février ALDIL, Conférence jeudi du libre. 7 février 2013

Note : Ce tutoriel a été réalisé sur GNU/Linux (Ubuntu) avec un serveur LAMP installé en local.

Serveur Mandataire SQUID

GUIDE D INSTALLATION. Portaneo Enterprise Portal version 4.0

Ajout et Configuration d'un nouveau poste pour BackupPC

RESUME DE CARRIERE. Alice JULIENNE. 23 ans Nationalité Française Développeur Web Front-End. Compétences

Transcription:

Crash course Systèmes Administration LAMP

DISCLAIMER : Ceci contient de la vulgarisation!

DISCLAIMER (bis) : Faites ce que je dis, pas ce que je fais

Bases d un OS

L environnement de travail un noyau (kernel ) un shell un terminal des programmes

Le noyau Gestionnaire de communication entre les couches applicatives et les couches hardware http://en.wikipedia.org/wiki/kernel_(computing)

Le shell C est une interface avec le noyau Un shell est un programme comme un autre. Exemples : sh (historique) bash ( Bourne shell ) tcsh (Dérivé du C-shell) Windows (graphique) GNOME, KDE (graphique) Finder (graphique),...

Les deux modes d un shell Interactive mode : en ligne de commande $ echo test test Batch mode : depuis un fichier ( script ) $./testscript.sh test

Le terminal Un programme qui permet d entrer/sortir des informations En local : le shell lui-même À distance : une application terminal Un shell ou un programme est généralement attaché à un terminal

Les programmes Une collection passive d instructions un programme un process Exemples : Chrome cat Apache Server etc...

Les processus ou process (1/2) process = l éxecution d un programme Une machine multi-tâches permet l exécution de plusieurs processus (et donc de plusieurs applications, a priori) Un processus appartient à un utilisateur, qui l a généralement lancé

Les processes (2/2) daemon = processus en tâche de fond Généralement ce sont des enfants de processus plus globaux, comme init Un daemon est détaché d un terminal La majorité des daemons sont des enfants de init : cron, sshd, syslogd, etc...

Les sockets Chaque processus est complètement indépendant nécessité de points d échange communs : Les sockets sockets locales = fichiers, piles FIFO, LIFO sockets réseau = port + IP

builtins vs. paquets Les builtin sont intégrés au système / au shell Exemples : ls, cat, screen, dir (Windows), AppleScript (Mac OS X) etc Les paquets sont des programmes externes au systèmes, précompilés ou pas Exemple : avrdude (logiciel d upload sur Arduino), Sublime, htop, etc...

Acquérir un nouveau paquet Debian $ sudo apt-get install [XXX] Free BSD $ pkg_add -r [XXX] Mac OS X Packet manager : brew ou Macports (à installer) puis : $ brew install [XXX] Autres? Il faut installer un packet-manager spécifique Ex : chocolatey pour Windows

Quelques subtilités du shell

Entrée et sortie d un programme Clavier #0 stdin Programme #1 stdout Affichage #2 stderr

Exemples ls : pas d entrée, écrit dans #1 (stdout) cat : entrée #0, écrit dans #1 mv : entrée #0, pas de sortie stderr (#2) est la sortie standard pour tous les messages d erreur

La redirection (>) > et < permettent de rediriger les flux d entrée et de sortie de/vers d autres points > redirige #1 en écrasant >> redirige #1 en ajoutant à la suite < écrase #0 On peut expliciter et chaîner #1 et #2 Exemples : $ ls -la > /dev/null $ ls -la 2>/dev/null 1>&2

Le pipe ( - Alt+Maj+L sur Mac) Permet d envoyer/récupérer les entrées et sorties de/vers d autres programmes Tout est chaînable Exemples : $ ls -la 2>&1 tail $ cat monfichier.txt wc -l $ cat <(echo allo ) grep alli wc $ tail -f err.log sed -e s/toto/ta > log.sock

Les builtins utiles

mkdir / cd / ls / mv / cp / rm Exemples : $ cd - #revient au dossier précédent $ cd #va au /home de l utilisateur courant $ ls -la #affichage en liste avec les cachés $ mkdir test #créé le dossier test $ cp source destination #copie $ mv source destination #déplacement $ rm test #supprime le fichier test $ rmdir test #supprime le dossier test $ rm -fr test #equivalent

history Exemples : $ history #affiche l historique $ history -c #efface l historique $!4 #réexecute la commande n 4 de l hist. A savoir :!!:$ #contient les arguments de la commande précédemment exécutée [Ctrl-R] #rentre en mode recherche inversée

chmod / chgrp / chown Change les permissions et la propriété $ ls -la file.md -rw-r--r-- 1 tchap admin file.md

chmod / chgrp / chown $ ls -la file.md -rw-r--r-- 1 tchap admin file.md Ordre des permissions : [d] [user:rwx] [group:rwx] [all:rwx] Exemples : $ chmod a+x README.md $ chmod g+w,a+rw,u+rwx README.md $ chmod 755 README.md #x=1, w=2 et r=4

chmod / chgrp / chown $ ls -la file.md -rw-r--r-- 1 tchap admin file.md Owner (propriétaire) du fichier Exemples : $ chown newix README.md

chmod / chgrp / chown $ ls -la file.md -rw-r--r-- 1 tchap admin file.md Groupe du fichier Exemples : $ chgrp www_ README.md $ chown tchap:www_ README.md

sudo / su su = substitute user sudo = do as substituted-user Attention : pour utiliser sudo, il faut être dans les sudoers (pas le cas des offres mutualisées) Exemples : $ sudo chmod 777 file.sh $ sudo su - eric $ su #équivalent sudo su - root

more / cat / head / vim more affiche un fichier texte cat permet de concaténer N fichiers head affiche les N premières lignes d un fichier vi (ou vim) est un éditeur complet Exemples : $ cat file1 file2 > file3 $ head -n 20 test.sh > file4 http://en.wikipedia.org/wiki/vim_(text_editor)#features_and_improvements_over_vi

tail Affiche la fin d un fichier Pratique pour afficher des logs en continu pendant du debug Exemple : $ tail -n 50 apache.log $ tail -f e.log grep -e 500 404

grep / sed / awk Recherche d expression régulières, et action Exemples : grep -c mot file.vi #compte les mots cat test grep -e [0-9] #cherche les entiers cat test sed 's/[0-9]/xx/g' #remplace les entiers par XX awk 'length($0) > 10' README.md #affiche les lignes de plus de 10 caractères

En savoir plus sur sa machine (virtuelle )

uname Affiche les informations système Exemple : uname -a # Affiche toutes les informations

top / htop top = builtin, htop = paquet Permet de connaître l état du processeur et de la mémoire :

crontab (1/2) Gère les tâches programmées exécutées par cron (crond) Tâche = commande + timing cron crontab

crontab (2/2) Utilisation : $ crontab -l # liste les taches dans #1 $ crontab -e # édite avec $EDITOR Syntaxe : 00 11 * * *./do.sh #tous les jours à 11h00 23 */2 */3 * *./do.sh #tous les 3 jours, toutes les 2 heures à H:23

ps Affiche les processus en cours Exemples : ps #mes processus ps axf #tous les processus, en arbre Sur Mac OS X, $ brew install pstree pour visionner un arbre $ pstree

netstat Affiche les sockets ouvertes : locales et réseau Exemple : netstat -an #ne résoud pas les DNS (-n)

LAMP : Configuration minimale

Une requête web au serveur... Socket réseau Bufferisation Apache Redirection et appels PHP Processing dynamique MySQL Rechercher en BDD

PHP (1/2) Fichier de configuration : /etc/php.ini Copier php.ini.default sur une fresh install Penser à : Corriger la timezone : date.timezone = "Europe/Paris" Enlever l unicode automatique : detect_unicode = Off Vérifier : $ php -i grep timezone

PHP (2/2) PHP n est pas un démon! Pas besoin de le redémarrer... Exécution en ligne de commande : $ php monscript.php Dans un script sh : #!\usr\bin\php #ou autre chemin

Apache (1/3) contrôle : apachectl démon : httpd chaque connexion client/serveur = un process Configuration : /etc/apache2/httpd.conf Ajouter une libraire : LoadModule Inclure les autres confs perso, exemple : Include /etc/apache2/other/*.conf

Apache (2/3) Création d un vhost : Vérifier : apachectl -S

Apache (3/3).htaccess : à éviter, sauf éventuellement pour les accès restreints (et encore) Mots de passe : utiliser $ htpasswd Exemple : $ htpasswd -c /www/.htpasswd tchap

SQL (1/3) Postgre : contraintes clé étrangères Mysql/Maria : rapidité / simplicité Mongo : document-driven MySQL - démon : mysqld Installation via paquet, puis: http://dev.mysql.com/doc/refman/5.5/en/unix-postinstallation.html

SQL (2/3) Todo : Créer un mot de passe root Automatiser le lancement du serveur au démarrage Vérifier l accès, la création de base, de tables, etc..

SQL (3/3) Clients SQL : Mac OS X : Sequel Pro (http://www.sequelpro. com/) Web-browser : phpmyadmin Clients Mongo : Web-browser : rockmongo

Bonnes pratiques MySQL Une base = un nouvel utilisateur spécifique qui porte le même nom On utilise JAMAIS root pour se connecter au démon On créé les tables en minuscule

Déployer une application web Quelques protips

Problématiques Un déploiement peut être long Nécessite des changements à tous les étages de la requête (Apache, code, BDD) Si une requête arrive pendant le déploiement (état indéfini du code) faille de sécurité

Approche ancestrale 1. Déploiement FTP 2. Modifications de base en local sur serveur 3. Modification de la configuration Apache 4. Redémarrage Apache BEURK!

Approche pragmatique Déploiement dit atomique 1. Déploiement SSH dans un nouveau dossier 2. Modification de la configuration Apache 3. Script de modifications de base 4. Redémarrage Apache 5. Linking au dernier moment MIEUX

Approche des winners Déploiement atomique et maintenance 1. Déploiement SSH dans un nouveau dossier 2. Modification de la configuration Apache 3. Passage en mode maintenance 4. Script de modification de base 5. Linking 6. Redémarrage Apache 7. Sortie de mode maintenance TOP!

$ ln -sfvn live-[id] live #pointe le raccourci live vers le bon dossier Déploiement atomique du code git + rsync, le combo gagnant $ git pull origin live #récupère la version live du code $ rsync -rlpt deploy/. live-[id]/. #copie le dossier de déploiement dans un dossier atteignable par Apache

Exemple

Deploiement à distance S='myserver.com' # SERVER P=22 # PORT PATH='~/deploy.sh' # SCRIPT PATH function deploy(){ ssh -t -t -t ${S} -p ${P} "${PATH} $*" }

Déploiement - Ne pas oublier Les sessions sont-elles toujours valables? Les caches ont-ils besoin d être vidés? Les droits des fichiers sont-ils bons? Quid des fichiers uploadés coté utilisateur lors d un déploiement atomique? il faut garder un lien vers ces fichiers... les configurations spécifiques à l environnement ont-elles été mises à jour?

Débugger

Analyser un bug (1/5) Ca marche pas

Analyser un bug (2/5) 1. Quelle partie de la pile applicative? a. J ai une réponse 200 du serveur, c est pas Apache b. Que me disent mes logs d erreur Apache? c. Si rien, que me disent tous mes autres logs? 2. Est-ce reproductible? 3. Quelles sont les conditions du bug? 4. Quelle est l erreur ressentie? Page blanche? Mauvais calcul? Comportement erroné? il faut identifier ce qui ne va pas

Analyser un bug (3/5) Retracer les différentes étapes de la fonction qui ne marche pas Exemple : Lance l évenement clic sur le bouton Appel d une fonction JS Fait un appel AJAX Attend la réponse Insère le texte de la réponse dans le DOM

Analyser un bug (4/5) Des sessions ouvertes avec des tail -f... Exemple : tail -f access* grep 500 404 #indique les erreurs 500 ou 404 au fil de l eau tail -f error* grep Fatal #les erreurs non rattrapées de PHP Attention aux erreurs silencieuses : appels Ajax, mauvais retours...

Analyser un bug (5/5) Savoir lire un log [Wed Aug 14 15:56:18 2013] [error] [client 127.0.0.1] PHP Notice: Undefined variable: template in /Users/tchap/Documents/home/www/thirdplace/src/thirdplace/Controller.php on line 24, referer: http://thirdplace.local/ [Wed Aug 14 15:59:44 2013] [error] [client 127.0.0.1] PHP Fatal error: Uncaught exception 'Twig_Error_Runtime' with message 'Variable "code" does not exist in "error.html.twig" at line 3' in /twig/lib/twig/template.php:317\n Stack trace:\n#0 /Users/tchap/Documents/home/www/thirdplace/vendor/twig/twig/lib/Twig/Environment.php(320) : eval()'d code(32): Twig_Template->getContext(Array, 'code')\n#1 [internal function]: TwigTemplate_1740a2ceaf04e59bf53149d2c4ebe570->block_title(Array, Array)\n#2 /Users/tchap/Documents/home/www/thirdplace/vendor/twig/twig/lib/Twig/Template.php(133): call_user_func(array, Array, Array)\n#3 /Users/tchap/Documents/home/www/thirdplace/vendor/twig/twig/lib/Twig/Environment.php(320) : eval()'d code(139): Twig_Template->displayBlock('title', Array, Array)\n#4 [internal function]: TwigTemplate_c5dd3a611f17eaaf7e674ec1efa4614b->block_head(Array, Array)\n#5 /Users/tchap/Documents/home/www/thirdplace/vendor/twig/twig/lib/Twig/Template.php(135): call_user_func(array, Array, Array)\n#6 /Users/tchap/Documents/home/ww in /Users/tchap/Documents/home/www/thirdplace/vendor/twig/twig/lib/Twig/Template.php on line 317

Débugger du rendu / script Javascript : Firefox : Firebug + Firecookies / Console Chrome : Chrome Dev Tools / Console CSS : Idem, avec l inspecteur au lieu de la console HTML : Pas de débug Sublime Linter

Utiliser ses propres logs Permet de tracer facilement un mauvais comportement (ce qu un log ou un debuggeur ne peut pas faire) PHP : echo / var_dump ou fwrite dans un fichier Javascript : console.log()

Bases du DNS

DNS (1/2) Distribué, comme son nom ne l indique pas Fait le lien entre une IP et un nom de domaine Types d entrées : A Mappe un nom avec une IP CNAME Alias de nom MX Lien entre un domaine mail et un MTA

DNS (2/2) Exemple :