Différences entre versions de « HTTPD »

De The Linux Craftsman
Aller à la navigation Aller à la recherche
Ligne 172 : Ligne 172 :
 
</VirtualHost>
 
</VirtualHost>
 
</pre>
 
</pre>
 
  
 
== VHost par adresses IP ==
 
== VHost par adresses IP ==

Version du 30 décembre 2013 à 13:05

HTTP HTTPS
Protocole tcp tcp
Port 80 443
Configuration Iptables iptables -I INPUT 2 -p tcp --dport 80 -j ACCEPT iptables -I INPUT 2 -p tcp --dport 443 -j ACCEPT

Préparation

Dans un premier temps, il faudra avoir une connexion à Internet, utiliser un serveur DNS et désactiver SELinux.

Pour ceux qui aurait manqué des étapes les voici:

Une fois ces étapes effectuées, entrons dans le vif du sujet !

Installation

HTTP

# yum -y install httpd

HTTP et HTTPS

# yum -y install httpd mod_ssl 

Configuration de base

Avant le premier démarrage

Tout d'abord il faut paramétrer le nom de la machine ainsi que l'adresse d'écoute

Pour cela cherchez dans le fichier /etc/httpd/conf/httpd.conf les lignes commençant par :

  • Listen 80
  • #ServerName www.example.com:80

La première doit contenir l'adresse IP de la machine ou * pour que httpd écoute sur toutes les interfaces

Listen *:80

La deuxième doit être cohérente avec le nom de la machine qui est précisé dans le fichier network

ServerName web:80

Premier démarrage

Maintenant on peut démarrer httpd

# service httpd start
Démarrage de httpd :                                       [  OK  ]

Vérification

On peut vérifier que httpd écoute sur la bonne adresse et les bons ports

# netstat -atnp | grep httpd
tcp        0      0 :::80                       :::*                        LISTEN      1202/httpd
tcp        0      0 :::443                      :::*                        LISTEN      1202/httpd

Enregistrement dans le chargeur de démarrage

# chkconfig httpd on

Ajout d'une page html

Le dossier de travail de httpd est préciser grâce à la variable DocumentRoot qui à la valeur /var/www/html

Vous pouvez donc créez votre premier site web en ajoutant dans ce dossier le fichier désigné par la variable DirectoryIndex (généralement index.html)

# vi /var/www/html/index.html

Une fois le fichier édité, il ne faut pas oublier de repositionner les bons droits pour que apache soit apte à le lire

# chown apache.apache -R /var/www/html

Parcours des logs

httpd log dans le répertoire /var/log/httpd/ et utilise deux fichiers:

  • access_log → pour journaliser tous les accès
  • error_log → pour journaliser toutes les erreurs

favicon.ico ??

Quand on parcours le fichier access_log on peut croiser la ligne suivante

192.168.200.12 - - [28/Dec/2013:19:58:13 +0100] "GET /favicon.ico HTTP/1.1" 404 278 "-" "Mozilla/5.0 (X11; Linux i686; rv:24.0) Gecko/20100101 Firefox/24.0"

Et on peut se demander pourquoi le navigateur demande favicon.ico ?? En faite, il s'agit de l'icône qui figure dans l'onglet, à côté du titre

Fireforx favicon tab.pngFavicon tlc.png

Vous pouvez la générer grâce au site suivant www.favicon.cc et la placer à la racine du site web (/var/www/html)

Fonction Virtual Host

La fonction Vhost permet de faire tourner plusieurs site Web différent sur un même serveur. Les moyens de différenciations sont multiples:

  • le port TCP
  • l'adresse IP
  • le nom DNS
  • un sous-ensemble de ces trois éléments

Emplacement du fichier de configuration

Les fichiers de configuration de httpd se trouve dans le dossier /etc/httpd/conf.d

# ll /etc/httpd/conf.d/
total 20
-rw-r--r--. 1 root root  392 13 août  19:28 README
-rw-r--r--. 1 root root 9473  2 août  13:59 ssl.conf
-rw-r--r--. 1 root root  299  2 août  13:59 welcome.conf

Ces fichiers sont importés dans la configuration de httpd grâce à la directive Include présente dans le fichier httpd.conf

Include conf.d/*.conf

Nous allons donc créer un fichier spécifique pour nos VHost que nous appellerons vhost.conf

# touch /etc/httpd/conf.d/vhost.conf

VHost par port TCP

Ce choix permet avec une seul adresse IP d'avoir plusieurs sites qui sont accessible sur des ports différents. C'est généralement le cas quand on veut installer des interfaces d'administration.

Tout d'abord le serveur httpd doit écouter sur les ports en question

Listen 80
Listen 8080
ServerName www.tala-informatique.fr

Ensuite les VHost possèderont une directive VirtualHost différente

<VirtualHost *:80>
    DocumentRoot /var/www/html/public
</VirtualHost>

<VirtualHost *:8080>
    DocumentRoot /var/www/html/admin
</VirtualHost>

VHost par adresses IP

Des contenus différents

Ce choix est inintéressant quand le serveur Web possède deux carte réseaux sur deux réseaux différents (vers Internet et vers l'intranet).

Tout d'abord on déclare un serveur httpd principal et cette configuration est généralement déjà dans httpd.conf.

Listen 192.168.200.251:80
DocumentRoot /var/www/html/
ServerName www.tala-informatique.fr

Ensuite le VHost possèdera une directive VirtualHost différente

<VirtualHost 192.168.200.250:80>
    DocumentRoot /var/www/html/intranet
</VirtualHost>

Le même contenu

Le serveur web peut avoir plusieurs interfaces, sur des réseaux différents, et en plus une interface d'administration sur laquelle on ne veut pas qu'il écoute.

Tout d'abord le serveur httpd doit écouter sur le port TCP/80 (en général)

Listen 80

Puis on précise les interfaces d'écoute

<VirtualHost 192.168.200.250 192.168.200.251>
    DocumentRoot /var/www/html/intranet
    ServerName www.tala-informatique.fr
</VirtualHost>

VHost par noms DNS

C'est le type le plus courant de VHost. En effet, le plus souvent les gens ne possède qu'une seule adresse IP publique et il est donc plus simple de faire pointer plusieurs noms de domaine vers la même adresse.

Tout d'abord le serveur httpd doit écouter sur le port TCP/80 (en général)

Listen 80

Ensuite les VHost possèderont une variables ServerName différente

<VirtualHost *:80>
    DocumentRoot /var/www/html/informatique
    ServerName www.tala-informatique.fr
</VirtualHost>

<VirtualHost *:80>
    DocumentRoot /var/www/html/wiki
    ServerName wiki.tala-informatique.fr
</VirtualHost>