2010-06-09 4 views
3

Je suis assez nouveau sur Linux. J'ai installé un VPS hier, installé Apache2, PHP5 et MySQL.Les modules Apache sont installés mais ne semblent pas se charger dans Ubuntu

Quand je fais apache2 -l je reçois ceci:

 
Compiled in modules: 
    core.c 
    mod_log_config.c 
    mod_logio.c 
    prefork.c 
    http_core.c 
    mod_so.c 

Quand je fais sudo a2enmod rewrite je reçois ceci:

 
Module rewrite already enabled 

Et rewrite.load est en /etc/apache2/mods-enabled.

Quelqu'un peut-il dire ce qui ne va pas?

Répondre

3

Cela appartient vraiment à ServerFault, mais comme il va probablement être migré, je dirai qu'il y a une différence entre les modules qui sont compilés dans Apache et ceux qui sont chargés dynamiquement.

Apache est capable de charger des modules de deux manières différentes. Le "plus simple" est que le module soit compilé statiquement dans le serveur. Cela signifie que le fichier exécutable apache2 inclut littéralement le code du module. L'avantage de cette approche est que le module est toujours disponible et Apache n'a rien à faire pour accéder à son code, mais d'un autre côté, si vous voulez ajouter, supprimer ou mettre à jour un module compilé statiquement, vous devez recompiler tout Apache. De plus, plus les modules sont statiquement compilés, plus le fichier exécutable devient grand. Pour ces raisons, il est normal que cette liste n'inclue que quelques-uns des modules les plus essentiels, soit le minimum nécessaire à l'exécution d'Apache. Ces quelques modules sont ceux qui apparaissent dans la liste que vous voyez lorsque vous exécutez apache2 -l.

Tous les autres modules utilisés par Apache, y compris mod_rewrite, sont chargés dynamiquement. En d'autres termes, leur code est stocké en tant que fichiers distincts, que Apache localise et lit après son démarrage. Cela nie les inconvénients de l'approche de compilation statique: puisque les modules sont stockés dans des fichiers séparés, si vous voulez ajouter/supprimer/changer un, vous avez seulement besoin de redémarrer le serveur, pas de le recompiler. Vous pouvez indiquer à Apache les modules à charger en insérant des directives LoadModule dans votre fichier de configuration Apache. C'est essentiellement ce que fait a2enmod: il ajoute une directive LoadModule au fichier de configuration. (En fait, il les liens symboliques sur un fichier de configuration stub dans un répertoire qui provient de la configuration principale)

Si vous voulez voir la liste complète des modules chargés, y compris ceux chargés dynamiquement, vous pouvez exécuter

apache2 -M 

Vous devrez vous assurer d'exécuter Apache de la même manière que le script d'initialisation d'Ubuntu. Il est courant que le système lise dans un fichier de configuration ou quelque chose avant de démarrer Apache, et si vous ne faites pas la même chose, cela peut changer l'ensemble des modules chargés.

+0

La migration n'a toujours pas eu lieu. Bonne réponse quand même! – ffledgling

Questions connexes