2008-08-22 4 views
1

Dans le cadre de notre produit, nous livrons des binaires Apache HTTP Server que nous avons compilés sur notre machine de développement (UNIX).Pouvez-vous compiler Apache HTTP Server et redéployer ses binaires à un emplacement différent?

Nous disons à nos clients d'installer les binaires (sur leurs serveurs UNIX) sous la même structure de répertoires que celle que nous avons compilée. Pour certains clients, cela n'est pas approprié, par ex. où il y a des restrictions sur où ils peuvent installer des logiciels sur leurs serveurs et ils ne veulent pas compiler eux-mêmes Apache.

Existe-t-il un moyen de compiler Apache HTTP Server afin que son ou ses emplacements d'installation puissent être spécifiés dynamiquement en utilisant des variables d'environnement?

J'ai passé quelques jours à essayer de résoudre ce problème et je n'ai pas trouvé de moyen de le faire. Cela m'a amené à croire que les binaires Apache étaient en train de coder en dur certains chemins de répertoire lors de la compilation, empêchant la portabilité dont nous avions besoin.

Est-ce que quelqu'un a réussi à le faire?

Répondre

1

Je pense que la façon de faire (contourner) ce problème est de développer un script "./configure & & make" que votre client utilise pour installer, spécifier et compiler les binaires. Cela impliquerait que le client ait tout le code source installé sur son serveur ou que vous puissiez le rendre disponible sur un partage NFS.

0

Je pense que la façon de le faire (se déplacer), ce problème est de développer un script « ./configure & & make » que votre client utilise pour installer, spécifier et compiler les binaires. Cela impliquerait que le client ait tout le code source installé sur son serveur ou que vous puissiez le rendre disponible sur un partage NFS.

Pour ne pas mentionner une chaîne d'outils de construction complète. Ces jours-ci, GCC ne vient pas par défaut avec la plupart des distributions majeures. Ne serait-il pas raisonnable de forcer le client à l'installer à /opt/my_apache2/ ou quelque chose comme ça?

1

Si vous compilez Apache2 pour un emplacement particulier, mais que vous voulez que vos clients puissent l'installer ailleurs (et je suppose qu'ils ont la même architecture et le même système d'exploitation que votre machine de build), vous pouvez le faire script apachectl aura besoin de piratage après-marché.

Je viens de tester ces étapes:

  1. non emballés la source Apache2 (cela devrait fonctionner avec Apache 1.3 ainsi que) et a couru ./configure prefix =/opt/apache2

  2. Ran faites puis sudo faites l'installation pour installer sur l'ordinateur de construction.

  3. Basculez vers le répertoire d'installation (/ opt/apache2) et faites glisser et compressez les fichiers binaires et les fichiers de configuration. J'ai utilisé cd/opt/apache2; sudo tar cf - apache2 | gzip -c> ~/apache2.tar.gz

  4. Déplacez le fichier tar vers la machine cible. J'ai décidé d'installer dans /opt/mynewdir/dan/apache2 pour tester. Donc, fondamentalement, vos clients ne peuvent pas utiliser RPM ou quelque chose comme ça - à moins que vous sachiez comment rendre cela relocatable (je ne sais pas :-)).Quoi qu'il en soit, le fichier conf/httpd.conf de votre client sera plein de chemins absolus codés en dur - ils peuvent simplement les changer pour tout ce dont ils ont besoin. Le script apachectl comporte également des chemins codés en dur. C'est juste un script shell, donc vous pouvez le pirater ou leur donner un sed script pour convertir les anciens chemins de votre machine de construction vers le nouveau chemin sur vos clients.

  5. Je sautais tout ce qui et juste couru carriole ./bin/httpd -f /opt/mynewdir/dan/conf/httpd.conf :-)

espoir qui aide. Faites-nous savoir les messages d'erreur que vous recevez si cela ne fonctionne pas pour vous.

0

@Hissohathair

Je suggère 1 changement à la réponse de @ Hissohathair.

6). ./bin/httpd -d <server path> (although it can be overridden in the config file) 

Dans apacheclt il y a une variable pour HTTPD où vous pouvez surcharger pour l'utiliser.

Questions connexes