La compilation du serveur web Apache avec le module dynamique de soutien
J'ai juste compilé Apache 2.2.17 sur une nouvelle installation de Ubuntu 10.04.2. C'est un exercice d'apprentissage pour découvrir ce qui se passe vraiment quand vous compilez quelque chose plutôt que de simplement en utilisant apt-get donc éviter d'utiliser apt-get en faveur de la compilation de la chose moi-même.
J'ai couru:
sudo ./configure --prefix=/etc/apache --enable-module=so --enable-rule=SHARED_CORE --enable-shared=max --enable-ssl=shared --enable-rewrite=shared
suivie par la obligatoire:
sudo make && sudo make install
Tout semblait aller bien (Apache démarre pas de problèmes), sauf que dans le répertoire de modules Apache où je me serais attendu à voir mod_rewrite.donc, et mod_ssl.ainsi, au lieu que je vois:
#cd /etc/apache/modules
#ls -l
mod_rewrite.a
mod_rewrite.la
mod_ssl.a
mod_ssl.la
Comment puis-je transformer en .donc les fichiers afin que je puisse lien avec LoadModule dans la config d'Apache?
Merci d'avance.
Vous devez vous connecter pour publier un commentaire.
Vous ne devriez pas tout faire en tant que root.
./configure
etmake
fonctionnent correctement sans les permissions root,make install
nécessite les droits root pour l'écriture sur les répertoires comme/etc
et/usr/bin
./etc
n'est pas adapté pour les exécutables, sans parler d'une pleine installation d'Apache. Si vous voulez mettre vos fichiers de configuration dans/etc/apache
, utilisez le--sysconfdir=/etc/apache
. Le bon endroit pour installer un custom-construire Apache est/usr/local
.Pour activer des modules partagés, vous devez passer l'
--enable-so
option, les modules qui doivent être compilés en tant que partagé doit être ajouté à--enable-mods-shared
.La bonne ligne de configuration pour Apache + mod_ssl (module partagé) + mod_rewrite (partagé module) est installé dans
/usr/local/apache
avec des fichiers de configuration dans/etc/apache
:Après le succès de la configuration d'Apache HTTPd, exécutez
make
suivie parsudo make install
.Plus d'informations sur les options de configuration peut être trouvé à l' Apache HTTPd documentation.
Essayer cette
--enable-shared=max n'est pas valide. Je pense que tu voulais utiliser "la plupart"?
http://httpd.apache.org/docs/2.2/programs/configure.html
Fantastique. Merci à vous deux pour votre aide.
Il a fallu quelques tentatives, mais j'ai enfin réussi à le faire fonctionner. J'ai fini par avoir à télécharger de la source pour une version antérieure de Apache avant les modules compiler correctement au lieu de produire l' .un et .la fichiers. Pas sûr si c'était parce qu'il y est une sorte de mise en cache des chose se passe lors de la configuration de/faire/processus d'installation que je ne suis pas au courant et d'une partie de ma précédente (incorrect), des tentatives de compilation ont été ré-exécuter d'une manière ou peut-être qu'il a quelque chose à voir avec la version d'Apache 2.2.17 - pas sûr. De toute façon, il a travaillé à la fin.
J'ai souffert du même problème: essayé de compiler apache 2.2.x avec tous les (possibles) les modules compilés en tant que modules dynamiques et non pas de façon statique.
Même si j'ai utilisé l'option de configuration (--enable-mods-shared="liste des modules"), les modules ont été compilés en statique et non partagé. Et le pire, certaines erreurs sont apparues lors de la tentative de "httpd -M" ou "apachectl configtest" liés "*.de sorte que" les fichiers ne sont pas trouvés, même si elles sont répertoriées dans le httpd.conf venez d'installer (gmake install).
J'ai étudié les ports FreeBSD système et a constaté que leur port, en effet, créer une apache2.2.x avec l'ensemble des modules partagés, comme je le voulais. J'ai trouvé que c'est un problème avec la "configuration" options.
À résoudre, j'ai fait exactement comme les ports, lors de la configuration, j'ai d'abord "disabled" (désactivé tous les modules (dur de trouver la liste complète, mais l'ai eu), avec de nombreux "--disable-MODULE" entrées dans les configurer. Voici mon exemple:
De cette façon, tous les apache2.2.x modules ont été construits en tant que dynamique plutôt que statique.
Si vous oubliez de "--disable-XXX" et tenter de "--enable-XXX" ou même "--enable-mods-shared=XXX,YYY,ZZZ", il ne fonctionne pas. Vous devez le désactiver avant de définition de l'option "--enable-mods-partagé" option de configuration.