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.

Friday, February 29, 2008

Commande httpd -l -L (Fédora 8)

Liste des options et paramètres de httpd accessible avec

httpd -l
[root@host ~]# httpd -l
Compiled in modules:
  • core.c
  • prefork.c
  • http_core.c
  • mod_so.c

et httpd -L
[root@host ~]# httpd -L

Container for directives affecting resources located in the specified directories
Allowed in *.conf only outside , or

Container for directives affecting resources accessed through the specified URL paths
Allowed in *.conf only outside , or

Container to map directives to a particular virtual host, takes one or more host addresses
Allowed in *.conf only outside , or
Container for directives affecting files matching specified patterns
Allowed in *.conf anywhere and in .htaccess when AllowOverride isn't None

Container for authentication directives when accessed using specified HTTP methods
Allowed in *.conf anywhere and in .htaccess when AllowOverride isn't None

Container for authentication directives to be applied when any HTTP method other than those specified is used to access the resource
Allowed in *.conf anywhere and in .htaccess when AllowOverride isn't None

Container for directives based on existance of specified modules
Allowed in *.conf anywhere and in .htaccess when AllowOverride isn't None

Container for directives based on existance of command line defines
Allowed in *.conf anywhere and in .htaccess when AllowOverride isn't None

Container for directives affecting resources located in the specified directories
Allowed in *.conf only outside , or

Container for directives affecting resources accessed through the specified URL paths
Allowed in *.conf only outside , or

Container for directives affecting files matching specified patterns
Allowed in *.conf anywhere and in .htaccess when AllowOverride isn't None
AuthType (core.c)
An HTTP authorization type (e.g., "Basic")
Allowed in *.conf only inside , or and in .htaccess when AllowOverride includes AuthConfig
AuthName (core.c)
The authentication realm (e.g. "Members Only")
Allowed in *.conf only inside , or and in .htaccess
when AllowOverride includes AuthConfig
Require (core.c)
Selects which authenticated users or groups may access a protected space
Allowed in *.conf only inside , or and in .htaccess when AllowOverride includes AuthConfig
Satisfy (core.c)
access policy if both allow and require used ('all' or 'any')
Allowed in *.conf only inside , or and in .htaccess when AllowOverride includes AuthConfig
AddDefaultCharset (core.c)
The name of the default charset to add to any Content-Type without one or 'Off' to disable
Allowed in *.conf anywhere and in .htaccess when AllowOverride includes FileInfo
AcceptPathInfo (core.c)
Set to on or off for PATH_INFO to be accepted by handlers, or default for the per-handler preference
Allowed in *.conf anywhere and in .htaccess when AllowOverride includes FileInfo
AccessFileName (core.c)
Name(s) of per-directory config files (default: .htaccess)
Allowed in *.conf only outside , or
DocumentRoot (core.c)
Root directory of the document tree
Allowed in *.conf only outside , or
ErrorDocument (core.c)
Change responses for HTTP errors
Allowed in *.conf anywhere and in .htaccess when AllowOverride includes FileInfo
AllowOverride (core.c)
Controls what groups of directives can be configured by per-directory config files
Allowed in *.conf only inside , or
Options (core.c)
Set a number of attributes for a given directory
Allowed in *.conf anywhere and in .htaccess when AllowOverride includes Options
DefaultType (core.c)
the default MIME type for untypable files
Allowed in *.conf anywhere and in .htaccess when AllowOverride includes FileInfo
FileETag (core.c)
Specify components used to construct a file's ETag
Allowed in *.conf anywhere and in .htaccess when AllowOverride includes FileInfo
EnableMMAP (core.c)
Controls whether memory-mapping may be used to read files
Allowed in *.conf anywhere and in .htaccess when AllowOverride includes FileInfo
EnableSendfile (core.c)
Controls whether sendfile may be used to transmit files
Allowed in *.conf anywhere and in .htaccess when AllowOverride includes FileInfo
Protocol (core.c)
Set the Protocol for httpd to use.
Allowed in *.conf only outside , or
AcceptFilter (core.c)
Set the Accept Filter to use for a protocol
Allowed in *.conf only outside , or
Port (core.c)
Port was replaced with Listen in Apache 2.0
Allowed in *.conf only outside , or
HostnameLookups (core.c)
"on" to enable, "off" to disable reverse DNS lookups, or "double" to enable double-reverse DNS lookups
Allowed in *.conf anywhere
ServerAdmin (core.c)
The email address of the server administrator
Allowed in *.conf only outside , or
ServerName (core.c)
The hostname and port of the server
Allowed in *.conf only outside , or
ServerSignature (core.c)
En-/disable server signature (on|off|email)
Allowed in *.conf anywhere and in .htaccess when AllowOverride isn't None
ServerRoot (core.c)
Common directory of server-related files (logs, confs, etc.)
Allowed in *.conf only outside , or
ErrorLog (core.c)
The filename of the error log
Allowed in *.conf only outside , or
ServerAlias (core.c)
A name or names alternately used to access the server
Allowed in *.conf only outside , or
ServerPath (core.c)
The pathname the server can be reached at
Allowed in *.conf only outside , or
Timeout (core.c)
Timeout duration (sec)
Allowed in *.conf only outside , or
ContentDigest (core.c)
whether or not to send a Content-MD5 header with each request
Allowed in *.conf anywhere and in .htaccess when AllowOverride includes Options
UseCanonicalName (core.c)
How to work out the ServerName : Port when constructing URLs
Allowed in *.conf anywhere
UseCanonicalPhysicalPort (core.c)
Whether to use the physical Port when constructing URLs
Allowed in *.conf anywhere
Include (core.c)
Name of the config file to be included
Allowed in *.conf anywhere
LogLevel (core.c)
Level of verbosity in error logging
Allowed in *.conf only outside , or
NameVirtualHost (core.c)
A numeric IP address:port, or the name of a host
Allowed in *.conf only outside , or
ServerTokens (core.c)
Determine tokens displayed in the Server: header - Min(imal), OS or Full
Allowed in *.conf only outside , or
LimitRequestLine (core.c)
Limit on maximum size of an HTTP request line
Allowed in *.conf only outside , or
LimitRequestFieldsize (core.c)
Limit on maximum size of an HTTP request header field
Allowed in *.conf only outside , or
LimitRequestFields (core.c)
Limit (0 = unlimited) on max number of header fields in a request message
Allowed in *.conf only outside , or
LimitRequestBody (core.c)
Limit (in bytes) on maximum size of request message body
Allowed in *.conf anywhere and in .htaccess when AllowOverride isn't None
LimitXMLRequestBody (core.c)
Limit (in bytes) on maximum size of an XML-based request body
Allowed in *.conf anywhere and in .htaccess when AllowOverride isn't None
RLimitCPU (core.c)
Soft/hard limits for max CPU usage in seconds
Allowed in *.conf anywhere and in .htaccess when AllowOverride isn't None
RLimitMEM (core.c)
Soft/hard limits for max memory usage per process
Allowed in *.conf anywhere and in .htaccess when AllowOverride isn't None
RLimitNPROC (core.c)
soft/hard limits for max number of processes per uid
Allowed in *.conf anywhere and in .htaccess when AllowOverride isn't None
LimitInternalRecursion (core.c)
maximum recursion depth of internal redirects and subrequests
Allowed in *.conf only outside , or
ForceType (core.c)
a mime type that overrides other configured type
Allowed in *.conf anywhere and in .htaccess when AllowOverride includes FileInfo
SetHandler (core.c)
a handler name that overrides any other configured handler
Allowed in *.conf anywhere and in .htaccess when AllowOverride includes FileInfo
SetOutputFilter (core.c)
filter (or ; delimited list of filters) to be run on the request content
Allowed in *.conf anywhere and in .htaccess when AllowOverride includes FileInfo
SetInputFilter (core.c)
filter (or ; delimited list of filters) to be run on the request body
Allowed in *.conf anywhere and in .htaccess when AllowOverride includes FileInfo
AddOutputFilterByType (core.c)
output filter name followed by one or more content-types
Allowed in *.conf anywhere and in .htaccess when AllowOverride includes FileInfo
AllowEncodedSlashes (core.c)
Allow URLs containing '/' encoded as '%2F'
Allowed in *.conf only outside , or
PidFile (core.c)
A file for logging the server process ID
Allowed in *.conf only outside , or
ScoreBoardFile (core.c)
A file for Apache to maintain runtime process management information
Allowed in *.conf only outside , or
LockFile (core.c)
The lockfile used when Apache needs to lock the accept() call
Allowed in *.conf only outside , or
MaxRequestsPerChild (core.c)
Maximum number of requests a particular child serves before dying.
Allowed in *.conf only outside , or
CoreDumpDirectory (core.c)
The location of the directory Apache changes to before dumping core
Allowed in *.conf only outside , or
AcceptMutex (core.c)
Valid accept mutexes for this platform and MPM are: default, flock, fcntl, sysvsem, pthread.
Allowed in *.conf only outside , or
MaxMemFree (core.c)
Maximum number of 1k blocks a particular childs allocator may hold.
Allowed in *.conf only outside , or
TraceEnable (core.c)
'on' (default), 'off' or 'extended' to trace request body content
Allowed in *.conf only outside , or
User (prefork.c)
Effective user id for this server
Allowed in *.conf only outside , or
Group (prefork.c)
Effective group id for this server
Allowed in *.conf only outside , or
ListenBacklog (prefork.c)
Maximum length of the queue of pending connections, as used by listen(2)
Allowed in *.conf only outside , or
Listen (prefork.c)
A port number or a numeric IP address and a port number, and an optional protocol
Allowed in *.conf only outside , or
SendBufferSize (prefork.c)
Send buffer size in bytes
Allowed in *.conf only outside , or
ReceiveBufferSize (prefork.c)
Receive buffer size in bytes
Allowed in *.conf only outside , or
StartServers (prefork.c)
Number of child processes launched at server startup
Allowed in *.conf only outside , or
MinSpareServers (prefork.c)
Minimum number of idle children, to handle request spikes
Allowed in *.conf only outside , or
MaxSpareServers (prefork.c)
Maximum number of idle children
Allowed in *.conf only outside , or
MaxClients (prefork.c)
Maximum number of children alive at the same time
Allowed in *.conf only outside , or
ServerLimit (prefork.c)
Maximum value of MaxClients for this run of Apache
Allowed in *.conf only outside , or
GracefulShutdownTimeout (prefork.c)
Maximum time in seconds to wait for child processes to complete transactions during shutdown
Allowed in *.conf only outside , or
KeepAliveTimeout (http_core.c)
Keep-Alive timeout duration (sec)
Allowed in *.conf only outside , or
MaxKeepAliveRequests (http_core.c)
Maximum number of Keep-Alive requests per connection, or 0 for infinite
Allowed in *.conf only outside , or
KeepAlive (http_core.c)
Whether persistent connections should be On or Off
Allowed in *.conf only outside , or
LoadModule (mod_so.c)
a module name and the name of a shared object file to load it from
Allowed in *.conf only outside , or
LoadFile (mod_so.c)
shared object file or library to load into the server at runtime
Allowed in *.conf only outside , or


Activation du serveur Apache (Fédora 8)

Deux méthodes :
  1. En activant un 'service' dans l'interface graphique
  2. A la ligne de commande dans un terminal
1) En activant un service
C'est une activiation comme IIS dans les modules Windows.
Avec 'Système', 'Administration', 'Services', s'ouvre la fenêtre 'Configuration du service' (ci-dessous).
Dans l'onglet 'Services d'arrière-plan', la liste donne les services que l'on peut sélectionner, démarrer et arrêter.
Vérifier dans un terminal la version du serveur Apache avec la commande 'httpd -v'.

2) En ligne de commande avec 'service httpd start | stop | status | restart

Ouvrir un terminal, 'Application', ' Outil système' 'Terminal'.
La commande httpd est dans le répertoire /etc/rc.d/init.d. Pour l'atteindre, utiliser la commande 'service'.
[root@host /]# service httpd restart
Arrêt de httpd : [ OK ]
Démarrage de httpd : [ OK ]
[root@host /]# service httpd status
httpd (pid 26717 26716 26715 26714 26713 26712 26711 26710 26708) en cours d'exécution...
[root@host /]# service httpd stop
Arrêt de httpd : [ OK ]
[root@host /]# service httpd status
httpd est arrêté
[root@host /]# service httpd restart
Arrêt de httpd : [ÉCHOUÉ] (c'est normal, il était déjà arrêté)
Démarrage de httpd : [ OK ]
[root@host /]# service httpd status
httpd (pid 26789 26788 26787 26786 26785 26784 26783 26782 26780) en cours d'exécution...
[root@host /]#

A noter que ces status au niveau des lignes de commande correspondent aux statut que l'on retrouve dans la boîte de dialogue du service httpd vue plus haut.

Avec VMWare

Installation du VMWare
- Copier sur le disque dur les applications traitées
- Installer le VWWare

Lancer les applications :
- Soit dans le répertoire considéré, cliquer sur le fichier avec l'extention .vmx
- Soit cliquer sur le VMWare player et, dans la fenêtre, cliquer sur les applications qui sont présentes.

Pour le réseau
Lors de l'installation de VMWare, deux cartes ethernet 'virtuelles" sont créées et lisibles par un 'ipconfig /all' à partir du MSDOS du poste.
Pour que le réseau fonctionne au niveau de l'espace VMWare, il faut bien coché 'Connecté' du menu 'Ethernet' dans le haut de la fenêtre. Si nécessaire, activer la la carte réseau.

Réglage des Préférence
'When exiting', sélectionner 'Power Off the virutal machine'. Donne un redémarrage de l'application concernée mais évite des blocages après plusieurs fermetures.
Sinon, on revient dans l'appli comme elle a été quittée.