Archives par mot-clé : Apache

Fichier .htaccess : Erreur SSI, Internal Server Error,…

1) Principe et fonctionnement

Un serveur d’hébergement sans aucune restriction technique et fonctionnelle, exposerait vos sites et services à de nombreuses failles de sécurité.  Il s’exposerait lui même à des failles, également.
De ce fait,  nous avons pré-configuré nos serveurs dédiés ainsi que nos hébergements mutualisés de façon à ce qu’ils soient prémunis de ces failles de sécurité.

Cette pré-configuration empêche la modification des directives sensibles du serveur.
Afin d’utiliser certaines fonctionnalités, vous avez la possibilité d’utiliser des fichiers .htaccess.

Les fichiers .htaccess servent à modifier localement la configuration du serveur Apache.
Il est donc possible d’adapter la configuration du serveur en fonction des différents dossiers de l’hébergement.
De ce fait vous pouvez créer autant de fichier .htaccess que de dossier qu’il y a sur l’hébergement.

Cet article a pour but de parcourir les erreurs fréquentes dues à un fichier .htaccess sur votre hébergement dédié ou mutualisé.

Si vos directives ne figurent pas dans ce tutoriel, vous pourrez les trouver sur le site officiel d’Apache (Site officiel d’Apache).

2) Erreurs .htaccess sur hébergement mutualisé

Lorsque que vous essayez d’agir sur les directives Apache dans un fichier .htaccess, il est possible que le serveur vous retourne un message d’erreur du type :

ERREUR SSI

Erreur SSI dans votre fichier
SSI instruction error in your file.

Cette erreur est courante. Voici les trois cas les plus courants qui peuvent la générer:

2.1 ) Lorsque vous tentez d’exécuter un script php qui demande trop de ressource

taille mémoire: memory_limit, temps d’exécution:max_execution_time,…,

Le script est « tué » par le serveur et renvoie cette erreur.

Les variables php sont modifiables dans votre icoAdmin (avant dernier onglet),
Si vous pensez que le problème vient de là, veuillez  augmenter les valeurs des variables php et relancer votre script.

2.2 ) Lorsque vos données de connexion à votre base de donnée Mysql sont incorrects

Vérifiez la configuration de votre connexion dans le fichier concerné : Serveur, base de données, identifiant, mot de passe

2.3 ) Lorsque vous essayez  d’activer ou de désactiver une option ou une directive dans un fichier .htaccess qui y serait déjà ou qui ne serait pas autorisée, le serveur renvoie une erreur.

Sur tous nos packs mutualisés, nous avons mis en place une configuration de sécurité qui ne permet pas par exemple une intrusion sur le serveur via un compte FTP.
Cela vous semble peut-être bloquant mais cette configuration est nécessaire pour ne pas pénaliser l’ensemble des hébergements mutualisés de la plateforme.

Directives d’Apache les plus courantes qui sont autorisées ou non  par le serveur sur votre hébergement mutualisé :

DirectoryIndex index.php index.html index.htm : Autorisée, elle permet de diriger un utilisateur vers une page web lorsqu’il tape www.domaine.fr dans un navigateur. Le serveur affiche le premier fichier existant de la liste (en partant de la gauche).

ErrorDocument 404 /pageinexistante.php : Autorisée, elle permet de personnaliser votre page d’erreur 404.
Elle redirige vers une page particulière lorsqu’un utilisateur appelle une page qui n’existe pas .
Dans ce cas, l’utilisateur sera dirigé vers pageinexistante.php .

AddDefaultCharset UTF-8 : Autorisée, elle permet de modifier le décodage de la page.
Cela est utile quand la page a été encodée dans un autre format (dans votre éditeur de code).
Si le décodage ne correspond pas à l’encodage, vous allez voir apparaître des caractères spéciaux à la place des caractères accentués par exemple.

RewriteEngine on : Autorisée, elle permet de pouvoir effectuer des réécriture d’url.

RewriteCond %{HTTP_HOST} ^www.votredomaine.com$ : Autorisée, elle permet d’autoriser la directive RewriteRule qui la suit.
Elle permet par exemple de rediriger dans un sous-dossier en fonction du nom de domaine demandé si une directive RewriteRule la suit.

RewriteRule ^(.*)\.html$ $1.php [L] : Autorisée (si RewriteEngine a été activée), elle permet de réécrire les urls se terminant en .php par des urls en .html

Options +Indexes : Refusée, cette option permet de lister tous les fichiers présents dans un dossier qui n’aurait pas de directive DirectoryIndex. Elle peut être la source de problèmes de sécurité.

Options +FollowSymLinks : Refusée, cette option est déjà activée par défaut sur la configuration du serveur.
Elle permet de garder la hiérarchie des liens dans chaque sous-dossier. Par exemple, elle est nécessaire pour utiliser la directive RewriteRule sans être obligé de répéter ces directives dans chaque .htaccess des sous-dossiers.

AllowOverride All : Refusée pour des raisons de sécurité, elle permet d’autoriser TOUTES les directives du serveur.

Options +Includes : Refusée pour des raisons de sécurité, elle permet de réaliser des inclusions coté serveur.

Options +Multiview : Refusée pour des raisons de sécurité, elle permet , si dans l’url demandée un dossier n’existe pas alors le serveur va rechercher dans le dossier précédent (du chemin de l’url) un fichier qui porterait le même nom.

L’ensemble des directives est disponible sur le site d’Apache (Directives d’Apache).

3)Erreurs .htaccess sur serveur dédié

Sur nos serveurs dédiés nous mettons également en place une configuration du serveur Apache par défaut.
Cette configuration est néanmoins entièrement modifiable selon vos besoins.
Les erreurs rencontrées à cause des .htaccess ou de la configuration d’Apache est l’erreur 500:

Internal Server Error

The server encountered an internal error or misconfiguration and was unable to complete your request.

Please contact the server administrator, support@icodia.com and inform them of the time the error occurred, and anything you might have done that may have caused the error.

More information about this error may be available in the server error log.

Cette erreur étant assez générique pour Apache, elle vous permettra simplement d’identifier le type du problème.
Dans ce cas, il viendra d’un fichier .htaccess ou du fichier général de la configuration d’Apache (httpd.conf pour CentOs par exemple).

De la même manière que pour nos serveurs mutualisés, les règles d’Apache les plus sensibles sont désactivés par défaut (dans les fichiers .htaccess) :  AllowOverride All, Options +Includes, Options +Multiview,… .
Vous pouvez analyser les directives qui posent problèmes dans les fichiers de logs d’erreurs de votre site.

Ce genre d’erreur apparaît souvent quand vous essayez d’installer une application comme Magento (par exemple) qui utilise des options sensibles.

Webmin: Mise en place d’un hébergement web de A à Z (Apache, Mysql)

Dans ce tutoriel, nous vous montrerons comment mettre en place un hébergement web de A à Z. En effet, nous vous décriront toutes les étapes permettant de visualiser votre site web sur le net depuis l’enregistrement de votre nom de domaine.

Voici les chapitres décris dans ce tutoriel :

Paramétrage de la zone DNS de votre nom de domaine

Création d’un vhost Apache

Création d’un base de données et d’un utilisateur Mysql

Création d’un compte FTP pour modifier les fichiers Web

Webmin: Création, modification et suppression d’un vhost Apache

Dans ce tutoriel, nous allons vous montrer comment créer, modifier ou supprimer un vhost sous votre serveur Apache. Nous effectuerons ces opérations depuis l’interface d’administration Webmin.

Dans un serveur Web comme Apache, il est possible de créer plusieurs hôtes virtuels.  Le but de ce système est de pouvoir héberger plusieurs hébergements sur le même serveur. Un hébergement faisant référence à un vhost.
Exemple:

Supposons deux noms de domaine différents : toto.fr et tutu.com

Dans les entrées web des deux zones DNS (Paramétrage de votre zone DNS), vous avez fait pointer ces deux noms de domaine sur l’IP 46.31.193.X

Nous allons vous montrez comment accéder au dossier /home/WwwBSD/toto du serveur 46.31.193.X en tapant http://www.toto.fr (dans un navigateur). Et puis de la même manière, être diriger dans le dossier /home/WwwBSD/tata en tapant http://www.tutu.com dans un navigateur . Les deux sites étant bien sûr hébergés sur le même serveur Apache !

Avant de modifier la configuration de votre serveur Apache, nous allons donc, pour commencer, se connecter sur l’interface Webmin (https://votreIP:10000)

webMin_connexion

Saisissez votre identifiant et votre mot de passe root. La page d’accueil de Webmin s’affichera.

webMin_accueil

Veuillez cliquer sur « Serveurs »:

webmin_accueil_serveur

Puis cliquer sur « Serveur Web Apache ».

apache_accueil

Dans cette page, tous les vhosts (hébergements) de votre serveur Apache sont listés. Pour agir sur la configuration globale d’apache que ce soit pour créer, modifier ou supprimer, veuillez cliquer sur l’onglet « Configuration globale ».

apache_conf_globale

Webmin va ouvrir le fichier texte de la configuration générale d’apache :

conf_apache

C’est dans ce fichier que sont déclarés tous les vhosts d’apache. C’est donc ce fichier qu’il faudra si vous le souhaitez: créer, modifier ou supprimer un vhost.

1. Création d’un vhost sous apache

Dans un vhost apache, il y a des directives indispensables pour son bon fonctionnement. Voici la forme d’un vhost type :
<VirtualHost votreIP:80>
ServerName www.toto.fr
ServerAlias www.toto.fr toto.fr
DocumentRoot /leCheminOùSeSitueVosFichiersWeb
ErrorLog /leCheminOùSeSitueVosErreursLogs/error_log
CustomLog /leCheminOùSeSitueVosLogs/error_log combined
</VirtualHost>

Descriptions des variables:

ServerName www.toto.fr
ServerAlias www.toto.fr toto.fr

Ces directives contiennent les noms de domaine pour lequel ce vhost sera accessible. Quand http://www.toto.fr a été tapé depuis un navigateur, le serveur Web va analyser ces directives dans chaque vhost que vous avez. Il y aura deux cas possibles:
Si aucune correspondance avec ServerName ou ServerAlias ne correspond, une erreur apparaitra sur votre navigateur.
Lorsque que votre serveur Web trouve une correspondance, il va diriger votre demande vers le dossier renseigné dans DocumentRoot . Ce dossier devra bien sûr être existant et contenir vos fichiers web (html, php,..).  Une fois arrivée dans votre dossier, Apache va traiter le contenu de la page et la transmettre à votre navigateur qui affichera le rendu graphique.

Les directives ErrorLog et CustomLogs renseignent les fichiers où apache va écrire soit les erreurs dans ErrorLog, soit le reste des logs dans CustomLogs. Les deux fichiers précisés dans ses directives devront bien sr être existants. Si vous ne les précisez pas, Apache mettra tous ses logs dans son fichier général de logs situé dans /var/log/httpd .

Vous pouvez rajouter dans un vhost des variables de php. Ces directives seront donc spécifiques à ce vhost. Voici quelques exemples de directives php mais de la même façon, vous pourrez modifier toutes les variables php:

php_admin_value sendmail_path ‘/usr/sbin/sendmail.postfix -t -f votreAdresseMail@nomDeDomaine.fr’
php_admin_value open_basedir /cheminHebergement:/tmp

La directive php_admin_value sendmail_path permet de diminuer le risque que votre mail soit considéré comme un spam si l’adresse renseignée est existante.
La directive php_admin_value open_basedir permet de cloisonner l’accès aux deux dossiers renseignés (/cheminHebergement et /tmp). Elle est prise en compte que si l’option safe mode est à 1.

D’autres directives peuvent être utiles comme DirectoryIndex où l’on précise l’ordre des fichiers que vous voulez exécuter si aucune page n’a été spécifiée. Si cette directive n’est pas renseignée, Apache prendra en compte la directive par des défaut de tous ses vhosts.
Dans l’exemple ci-dessous, si l’adresse http://www.toto.fr a été demandé alors le serveur analysera les valeurs de DirectoryIndex et traitera le premier fichier qu’il trouve:si index.html et index.html sont inexistants alors il traitera index.php.

DirectoryIndex index.html index.htm index.php index.php4 index.php5

La directive AddDefaultCharset permet de traiter les pages avec un décodage spécifique. Cela peut être utile quand vous encoder vos fichiers en iso-8859-1 lors de leurs créations et que le décodage d’apache est en utf-8. L’affichage de certains caractères comme les méta-caractères ou les caractères avec accents peuvent avoir un mauvais rendu graphique.

AddDefaultCharset iso-8859-1

Bien d’autres directives sont disponibles. Vous trouverez plus d’informations sur le site officiel d’Apache (Site officiel d’Apache).

Une fois que le vhost correspond à votre besoin, vous devrez cliquer sur « Enregistrer » puis revenir à la page précédente et cliquer sur « Appliquer les changements ». Il n’y a plus qu’à tester dans un navigateur.

2. Modification d’un vhost

Pour modifier un vhost, il faut procéder de la même manière que dans la rubrique précédente: Éditer la configuration globale d’Apache puis identifier le vhost à modifier. Une simple recherche sur le nom de domaine principal suffira (ServerName).

Une fois le vhost identifié, il faudra donc effectuer le(s) changement(s) que vous voulez apporter. Après chaque modifications, il faudra enregistrer vos changements et « Appliquer les changements ».
Voici l’exemple le plus demandé : « Ajout d’un nom de domaine à un vhost ».

2.1. Ajout d’un nom de domaine à un vhost

Pour revenir à notre exemple de www.toto.fr : vous voulez que le nom de domaine que vous venez d’enregistrer (toto.com) pointe vers le même hébergement que www.toto.fr. Dans ce cas, il n’y a qu’une chose à rajouter dans votre vhost (après avoir fait les pointages DNS) : Ajout d’une directive ServerAlias . Voici l’exemple du vhost précédent en ajoutant le ServerAlias (toto.com)

<VirtualHost votreIP:80>
ServerName www.toto.fr

ServerAlias www.toto.fr toto.fr

ServerAlias www.toto.fr www.toto.com
DocumentRoot /leCheminOùCeSitueVosFichiersWeb
ErrorLog /leCheminOùCeSitueVosErreursLogs/error_log
CustomLog /leCheminOùCeSitueVosLogs/error_log combined
</VirtualHost>

Cette modification va permettre de joindre votre hébergement en tapant dans un navigateur (http://www.toto.com). Si vous souhaiter que htttp://toto.com pointe également sur votre hébergement, il faudrait ajouter le serverAlias www.toto.fr toto.com :

<VirtualHost votreIP:80>
ServerName www.toto.fr

ServerAlias www.toto.fr toto.fr

ServerAlias www.toto.fr www.toto.com

ServerAlias www.toto.fr toto.com
DocumentRoot /leCheminOùCeSitueVosFichiersWeb
ErrorLog /leCheminOùCeSitueVosErreursLogs/error_log
CustomLog /leCheminOùCeSitueVosLogs/error_log combined
</VirtualHost>

N’oubliez pas d’enregistrer vos modifications et d’appliquer les changements.

3. Suppression d’un vhost

Pour supprimer un vhost , il suffit d’identifier le vhost à supprimer dans la configuration globale d’apache puis de le supprimer. N’oubliez pas de supprimer également les balises et .
Il suffira ensuite de sauvegarder et d’appliquer les changements.
Attention: La suppression d’un vhost ne va pas supprimer l’entrée DNS correspondant à cette hébergement.