Wednesday, March 5, 2008

Gestion des services sous LInux

Deux approches :
  • Debian / Ubuntu
  • Mandriva / Red Hat / Fedora
Lorsque le noyau du système est activé, le premier programme est '/sbin/init' avec un numéro de PID égal à 1. Tous les autres processus seront les enfants de 'init'.
Chaque service est associé à un script unique et géré (Start, run ...) par des liens symboliques. Ces liens sont placés dans des répertoires notés de 0 à 6 indiquant le 'runlevel', le niveau de démarrage.
  • Niveau 0 pour arrêter définitivement le système
  • Niveau 1 associé au mode maintenance
  • Niveaux 2 à 5 définissable selon les distributions. Debian et distributions dérivées ne font pas de différence
  • Niveau 6 pour l'arrêt et le redémarrage du système
  • Niveau S ou S, mode monoutilisateur (just la racine) pour réparer les autres répertoires
Enregistrement des services selon les runlevels :
  • Debian et en général : fichier /etc/initab
  • Cas Ubuntu : répetoire /etc/event.d et commande upstart
Gestion des services sous Debian et dérivés
Commande par nom du service dans répertoire /etc/init.d :
# /etc/init.d/<service> [start | stop| restart | reload | force-reloard| status]
'Start', 'stop', ... option pour les services
'reload' permet de charger les modifications de la configuration sans avoir à redémarrer le serveur si celui-ci est en prod. Un restart est plus 'efficace'.

Hors du répertoire, c'est la commande 'invoke-rc.d'
# invoke-rc <service&>

Exemple :
# /etc/init.d/apache2 status
ou
# invoke-rc.d apache2 status

Gestion des services sous Mandriva et Red Hat
On retrouve le principe ci-dessus mais dans un autre répertoire :
# /etc/rc.d/init.d/<service> [start | stop| restart | reload | force-reloard| status]
ou
# service <service&>

'service' remplaçant le mot-clé invode-rc.d


Pour les créations et suppression de liens symboliques vers les scripts :
  • Debian / Ubuntu : update.rc.d
  • Pour Mandriva / Red Hat : chkconfig
Les services sont gérables aussi à partir de l'interface graphique.
Sous Ubuntu : Système, Administration, Services.
Gestionnaire de services dans le centre de contrôle de Mandriva.


Pour avoir la liste des services actifs :
Sous Mandriva, Red hat Fedora
update-rc --status-all
(important d'attaché '--status-all'

Monday, March 3, 2008

Le conteneur Directory

Détail sur les directives conteneur dans ce post.

le conteneur Directory permet de définir des propriétés à des répertoires, sous-répertoires.

Exemple
<Directory [répertoire] >
< lignes de directives >
</Directory>

Directives supportant le conteneur Directory

  • OPTIONS avec les paramètres suivants :
    • All : toutes les options
    • ExecCGI : Autoriser l'exécution de scripts CG (Perl, Bash, c, C++, ...)
    • FollowSymLinks : vous autorisez les clients URL à suivre les liens sympboliques
    • SymLinksIfOwnerMatch : Lien sympbolique suivi que si UID cible égale UID lien. Option annulée par un All ou un FollowSymLinks
    • Includes : vous autorisez les inclusions côté serveur. Nécessite un ExecCGIet un AddHandler
    • IncludesNOEXEC : les includes sans exécution possibles. Désactivé par Includes ou All
    • Indexes : Autorise un listing répertoire si pas de fichier de type index. Indexes peut être contrôlé plus finement avec IndexesOptions
    • Multiviews : site multilangues
    • None : désactive toutes les options
Note : si des options sont déclarées sur une même lignes, elles sont fusionnées.


  • AllowOverride
    • Permet de déléguer la gestion des propriétés du répertoire aux concepteurs des pages.
    • None : Supprimme ces droits
  • Allow
    • Permet de donner accès au répertoire en fonction de critères comme : nom de machine client, adresse IP, adresse réseau, navigateur utilisé, ...
  • Deny
    • Inverse de Allow, refuse l'accès
  • Order
    • Sélectionne l'ordre de Allow et Deny : 'Order allow deny', allow est examiné en premier puis deny. Le paramètre Deny sera donc celui retenu
    • order allow,deny (pas d'espace après la virgule ,,,)

Saturday, March 1, 2008

La fondation Apache

Apache Software Foundation à http://www.apache.org

Indique l'ensemble des projets de la fondation, menu de gauche,
Les informations sur la communauté et les souscriptions pour la communauté,
et des informations sur la fondation elle-même, menu de droite.

Exemple
Apache Tomcat, voir dans le menu de gauche pour voir ce projet, serveur dynamique du monde Java : Java Servlet et JavaServer Pages.

Le serveur http Apache (Apache HTTP server) s'appelle httpd et donc sa page pour est : http://httpd.apache.org
C'est donc de là que l'on peut le télécharger au chapitre des releases.

Aujourd'hui, Apache est en :
Version 2.2.8 pour la dernière release
Version 2.0.63 pour les versions avec des third parties non compatibles avec la 2.2
et Version 1.3.41 pour les versions avec des third parties non compatibles avec la 2.

La vérification du téléchargement des programmes se fait en PGP (ou GPG) ou en MD5.

Les directives Apache

Fichiers : httpd.conf, httpd2.conf, commonhttpd.conf

La fonction Include permet l'appel à des directives dans d'autres fichiers

Le sympble # permet un commentaire. Abondant dans ce genre de fichier

Une ligne non commentée est une instruction ou une directive

Un espace est nécessaire entre un mot clé et son argument

La directive n'est pas sensible à la casse, les arguments oui.

Les directives se définissent ainsi :
  • Syntaxe : nomDirective arguments
  • Défaut : nomDirective valeurParDéfaut, c'est à dire ne faisant pas l'objet d'une directive dans le fichier de configuration
  • Contexte : l'endroit où est implémenté la directive. Liste séparée par des virgules.
    • Configuration serveur (httpd.conf, srm.conf et access.conf) mais hors des containers et de .htaccess
    • hôte virtuel, container VirtualHost
    • répertoire, container Directory
    • .htaccess, fichiers .htaccess
  • Surchage : Directive de surcharge. Les surcharges sont gérées par AllowOverrides
  • Statut : Statut indique quel module du serveur
    • Noyau : toujours disponible
    • Base : Fair partie de la compilation sauf si il a été enlevé
    • Extension : Dans le Apache Server Kit mais pas compilé par défaut. Pour utiliser une directive avec ce statut, vous devez recompiler Apache
    • Expérimental : Disponible dans le kit mais à utiliser à vos risques et périls
  • Module : nomModule où la fonctionnalité est implémentée
  • Compatibilité : Information sur la compatibilité. Si la directive ne faisait pas de la version 1, la version d'introduction est précisée
Il existe :
  • Les directives de portée générale, pour tout le serveur,
  • Les directives de conteneur, pour une partie du serveur : un répertoire, une url, un serveur virtuel, autre".
Directives de portée générale
  • ServerType : inetd ou, par défaut, standalone.
  • ServerRoot : Le répertoire de ce serveur, contient les répertoires conf et logs. Normalement égal à '/etc/httpd' sauf autre paramétrage.
  • Port : Numéro du port d'écoute, normalement le port :80
  • ServerAdmin : adresse e-mail que le serveur inclut dans les messages d'erreurs
  • ServerName : Nom de domaine entièrement qualifié. Ex : www.domain.com
  • DocumentRoot : Chemin pour atteindre les fichiers web. De base : '/var/www/html'
  • DirectoryIndex : Déclarez l'ordre des fichiers qui seront ouverts lorsque l'on ne précise pas le nom de la page : index.html, index.htm, ...
Les directives conteneur
Permettent de limiter la portée d'une directive à un répertoire, une url, un serveur virtuel...

Comporte une balise de début et une balise de fin (comme avec le HTML)

Le conteneur Directory
Définir l'action de directives à un répertoire et à ses sous-répertoires sauf si ceux-ci font l'objet d'une autre directive conteneur Directory.

Voir la suite dans le post : Le conteneur Directory

L'installation de packages

Sur Mandrake, rpm
Gestionnaire drakrpm

Sur Red Hat (ou Fedora)
Gestionnaire redhat-config-packages

Note : sur certaines versions de Fedora, le gestionnaire est buggé, faire la mise à jour sur http://fedora.rehat.com

L'installtion se fait ainsi :
rpm -ivm [nom du fichier.rpm]

Multiples VMWare

Bien qu'il ne soit cliqué qu'une seule fois sur l'icône de VMWare, il y avait une quinzaine de fenêtre ouvertes. Ces fenêtres, étant parfaitement superposée, n'étaient pas visibles. C'est en voulant déplacer la fenêtre VWMare que les fenêtres de dessous sont apparues.

Toutes ont été refermées et au lancement suivant il n'y avait qu'une seule fenêtre ???

Est-ce le problème de 'When exiting' 'Suspend the virtual machine' au lieu de 'Power Off virtual machine' dans les "Preferences" de VMWare. ?

Le listen :80

Le port dédié au serveur Web est le port 80.
Apache écoute donc, "listen", ce port

Ici, Apache était en route puis a été arrêté.
La commande 'netstat -ant' permet de voir les ports en écoute. Le port :80 a disparu de la liste après l'arrêt (et d'autres)

[root@host /]# netstat -ant
Connexions Internet actives (serveurs et établies)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN
tcp 1 0 192.168.0.6:49079 193.48.44.57:80 CLOSE_WAIT
tcp 0 0 :::80 :::* LISTEN
tcp 0 0 :::443 :::* LISTEN
[root@host /]#

[root@host /]# service httpd stop
Arrêt de httpd : [ OK ]

[root@host /]# netstat -ant
Connexions Internet actives (serveurs et établies)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN
[root@host /]#


Cela a aussi des effets sur d'autres ports. Non étudié dans ce post.