Apache2 fichiers de config

Bonjour,

j’ai installé un debian jessy 8.6 sans interface graphique, suivi d’un lamp (apache2.4, mysql 5.5 et php5)

je suis débutant moyen et y a un truc que je ne comprends pas.

Dans toutes les docs et tutos que je consulte (ex: wiki htttp qui détaille les chemins des fichiers en fonction des distributions)je vois que pour ma version de debian je dois trouver un fichier defaut.conf dans /etc/apache2/sites_avaible et que ce dernier contient quelques balises 'Directory ’

dans mon installation, j’ai un fichier 000-default.conf et qui ne contient que le serveradmin, le documentroot et les infos de log, le reste étant commenté, et surtout aucune balise ‘Directory’

Ma question est simple… Pourquoi ?

Merci d’avance

Je n’utilise pas Apache, donc je ne fais que supposer. Peut-être que tu te réfères à des tutos utilisant une version différente d’Apache, et ayant donc des fichiers par défaut différents ?

Bonjour,

c’est en partie vraie, mais plus subtil que cela.
les anciennes version d’apache utilisaient le fichier /etc/apache/apache.conf pour tout configurer.

la version 2.4 d’apache présente sous Debian des fichiers de configuration spécifiques à debian. Les modules (mods) et sites s’activent via la création de lien symbolique dans les répertoires “mods-enable” et “sites-enable”.

pour activer un module :

  • installer le paquet contenant le module si il est absent de /etc/apache2/mods-avaible.
  • activer le module (en root) par la commande :
    a2enmod nomDuModule

par exemple : # a2enmod userdir
pour autoriser la connexion à un site personnel situé sur/home.

pour autoriser un site :
1- créer un fichier monsite.conf dans le répertoire /etc/apache2/sites-avaible.
2- c’est dans ce fichier que l’on place les balises directory> /directory>"
qui servent à indiquer les options d’apache pour ce répertoire, mais la racine du site est spécifié par la ligne :
DocumentRoot

ex de fichier.conf :

   <VirtualHost *:80>
                ServerAdmin webmaster@localhost
                ServerName monsite.com
                ServerAlias monsite
                DocumentRoot /var/www/monsite
            #DirectoryIndex    index.html  //ou index.php par exemple
            
   
    <Directory /var/www/monsite>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride All
                Require all granted
    </Directory>
  
       # ErrorLog /home/apache/logs/error.log
        LogLevel warn
       # CustomLog /home/apache/logs/access.log combined
        ServerSignature Off
</VirtualHost>

3- activer le site décris dans le fichier monsite.conf par la commande
a2ensite monsite

4-désactiver le site par défaut
a2dissite 000-default

5- redémarrer apache
/etc/init.d/apache2 restart

le fichier/etc/apache2/apache2.conf ne contient plus que les paramètres très généraux d’apache.

1 J'aime

Bonjour. Ce fil éclaire enfin ma lanterne. Je vais pouvoir progresser. J’espère ne pas perturber @oustaou
Euh, non je tombe maintenant sur un forbidden. Pourtant j’ai suivi ce document: https://wiki.debian.org/fr/Lamp#PHP:_.2Fetc.2Fphp5.2Fapache2.2Fphp.ini
Bizarre bizarre.

1- tu tombes sur un forbidden où ?

2- pour lire les fichiers :

  • l’utilisateur www-data doit y avoir accès (www-data = utilisateur apache) donc bien vérifier les droits par un : ls -l
    et les changer par un chmod (ou changer les propriétaires du fichier = chown).
  • si c’est du php, le module php mod doit être installé et activé. (désactivé par défaut)

a2enmod php5

ou # a2enmod php7.0

Bah: Je pense avoir bien fait.
ls -l
drwxr-xr-x 4 thierry www-data 4096 déc. 3 19:47 public_html

Le dossier est placé directement dans mon home sans sous directory.

a2enmod php5

Module php5 already enabled

http://localhost fonctionne
Mais http://localhost/~thierry/ me fait un forbidden

Dans ~/public_html j’ai mis un fichier index.php
ls -l
total 12
drwxr-xr-x 8 thierry thierry 4096 déc. 2 12:47 asseleci
-rwxr-xr-x 1 thierry thierry 0 oct. 9 09:15 asselec.log
-rwxr-xr-x 1 thierry www-data 19 juil. 6 2007 index.php
drwxr-xr-x 5 thierry thierry 4096 déc. 3 15:48 site_thierry

Tout me semble correcte…

par défaut, la configuration du mode userdir nécessite le création des sites perso uniquement sous le / les dossiers (ou sous dossiers) :
/home/*/public_html

donc :
1- soit tu crée un dossier “/public_html” sous ton home dans lequel tu places des dossiers qui représentent les racines de tes sites.
soit tu modifies la configuration de l’option “userdir.conf” (" nano /etc/apache2/mod-available/userdir.conf" puis indiquer le dossier contenant les sites dans la directive “UserDir”).

a ce sujet, où se trouve le fichier à atteindre :

cela me parait antinomique ! :rolling_eyes:

Edit : tu as un fichier “index.php” placé dans le repertoire “/public_html” lui même situé dans “/home” ==> donc vérifie que le fichier “monsite.conf” pointe sur “/home/thierry/public_html” (directive “DocumentRoot”).

2- ne pas oublier de créer un fichier “monsite.conf” dans /etc/apache2/sites-available/
ce fichier doit contenir le chemin vers/home/user/la_racine_du_site

3- tu actives ces sites par la commande
# a2ensite monsite

4- tu désactives la configuration du site par défaut (chez moi cela bloquait les options pour les autres sites)
# a2dissite 000-default

5- redémarrer apache
# /etc/init.d/apache2 restart

merci pour vos réponses, j’ai consulté tellement de tutos & Co. que bien que je ne puisse plus fournir les sources, je peux affirmer que certains précisaient bien les versions et que ca ne correspondait pas avec ce que j’avais (sans doute des tutos mals mis à jour…).
J’ai entre temps trouvé ce magnifique outil de référence dédié à Debian Jessie qui me dépanne bien:
(et qui confirme bien que 000-default.conf est bien ce que je dois avoir)

https://debian-handbook.info/browse/fr-FR/stable/

je prends la balle au bond en vous voyant parler de userdir.conf

J’ai lu ca et là qu’il était préférable d’abriter les sites web dans les dossiers d’utilisateurs mais je ne trouve rien de pertinent concernant le pourquoi.

Dans mon cas je veux simplement installer un serveur en ligne de commande uniquement pour faire tourner gpli, un virtualbox + phpvirtualbox et il n’y aura en gros que moi qui chipotera à ce serveur.

A partir du moment ou je configure bien les droits sur les dossiers www, y a-t-il un intérêt à ne pas placer les sites dans /svr comme le veut la standardisation d’utilisation des dossiers ?

Autre question, dans mon cas bien précis, (càd pas 10 utilisateurs qui doivent avoir leur site web) et dans le cas ou il serait justifié d’abriter le site dans /home/.
Dois-je passer par le mod userdir ou n’ai je aucun intérêt à le faire vu que je serai le seul ‘user’ (donc je pourrais placer mes sites web dans mon /home en attribuant les droits pour que apache y ait accès sans me soucier du mod userdir.) ?

Merci

tout d’abord, je parle ici de apache 2.4 (la dernière version à jour) sous debian.

000-default.conf = site de configuration par défaut qui permet d’afficher la page “it’s works” site on tape en adresse “localhost” (cela appelle le fichier /var/www/html/index.html). Donc on peut tout à fait le désactiver si on crée un fichier personnalisé “monsite.conf” (voir plus haut).

“/var/www” et “/svr” sont des conventions et localisation par défaut (000-default.conf).
Mais libre à nous de placer les dossiers de nos sites où l’on veut : il faut juste créer un fichier de configuration “monsite.conf” qui indique le “DocumentRoot” = chemin de la racine du site.
et pour revenir sur ton premier message les options se placent entre les balises “directory” : par exemple pour autoriser le suivi des liens, l’affichage de l’index si on appelle le dossier, …

l’autre solution toute simple consiste à laisser activé
le site par défaut puis de placer des liens symboliques sous /var/www/ pointant vers les dossiers racines de nos sites (avec droit en lecture et execution pour l’utilisateur www-data).

ok merci, je commence à piger un peu mieux tout ca :slight_smile:

J’ai une nouvelle colle à propos de ces liens symboliques:
J’ai un questionnement à propos du fait aue j’ai accès à GLPI !
je m’attendais à ce que ca me soit interdit et en fait non…

je m’explique:

dans apache2.conf j’ai ceci:

<Directory />
        Options FollowSymLinks
        AllowOverride None
        Require all denied
</Directory>

#<Directory /usr/share>
#       AllowOverride None
#       Require all granted
#</Directory>

<Directory /var/www/>
        Options Indexes FollowSymLinks
        AllowOverride None
        Require all granted
</Directory>

#<Directory /srv/www/>
#       Options Indexes FollowSymLinks
#       AllowOverride None
#       Require all granted
#</Directory>
  • En résumé, dans mon apache2.conf je bloque l’accès à tout (/) dans le premier bloc, et j’autorise uniquement /var/www, remarquons que j’ai commenté le bloc /srv/www et que donc théoriquement ce dossier est inaccessible.

  • J’ai mon dossier tout frais glpi dans /srv/www/glpi, ce dernier est chowné user:www-data et chmodé 750
    Je suis propriétaire accès total, et le groupe www-data a les permissions RX sur ce dossier et les sous dossiers, notons que certains sous dossiers de glpi sont exceptionnellement en écriture également car glpi le réclame.

*Dans mon 000-default.conf j’ai tout laissé par défaut, à savoir:

ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
et les directives de logs, tout le reste étant commenté.

il n’y a que 000-default.conf dans sites-enabled, aucun autre vhost

  • j’ai créé un lien symbolique glpi dans /var/www/html/

  • j’accède à http:///glpi et boom ca m’ouvre la page d’install GLPI alors que je m’attends à avoir un accès refusé à cause de la directive dans apache2.conf qui interdit d’aller dans le dossier

Je ne suis pas sur de bien comprendre pourquoi. Est-ce lié au lien symbolique et au fait que ce n’est pas moi, Anonymous qui essaie d’ouvrir directement dans mon navigateur /srv/www/glpi mais www-data qui y va, en ayant bien les droits ?

Si c’est bien ça, est-ce que cette solution de lien symbolique n’est pas sécuritairement parlant un peu limite et fastidieuse à gérer si j’ai plusieurs sites ?
(exemple: par rapport aux vhosts et leur directives, ou ca serait un peu fouilli de pointer vers des dossiers exterieurs au ‘DocumentRoot’ )

Si tu autorises le suivi des liens, heureusement que cela fonctionne ! :wink:

s’ il y a plusieurs sites le mieux pour gérer plus finement les permissions est de créer un fichier “monsite.conf” pour chaque site, en décrivant pour chaque répertoire, les droits associés.

après, je ne suis pas un spécialiste là dedans, mais la sécurisation des sites passe par une succession de couches (pas d’options “indexes” = “-Indexes”, pas d’affichage des erreurs, des pages d’erreur personnalisées pour ne pas réveler l’architecture du serveur, l’utilisation de fichier “.htpasswd” et “.htaccess”, … ).
Si les sites ne doivent être accessible que pour une IP, le spécifier dans le fichier “monsite.conf” :
-par exemple pour autoriser la connexion que ne locale (IP 127.0.0.1)
<VirtualHost 127.0.0.1:80>

le mode userdir permet l’accés aux sites situés sous /home/user/*/public_html.
On place nos sites où l’on souhaite; le tout c’est de le préciser dans les fichiers de configuration monsite.conf

après pour GLPI, il faut aussi voir la configuration du fichier :
/etc/apache2/conf-available/glpi.conf

J’espère avoir répondu avec suffisamment de précision à tes questions, mais n’utilisant pas GLPI, d’autres auront certainement des réponses plus précises. :pensive: