[Résolu] apache n'aime pas $U ? probleme de démarrage d'apache via uen uproc

Alexandre HISETTEAlexandre HISETTE LillePosts: 121 Journeyman ✭✭✭
probleme de démarrage d'apache via uen uproc
Bonjour,

Je dois gérer l’arrêt/relance d'apache par $U.
J'utilise une version d'apache compilé sur le serveur et pour l'arret/relance j'utilise le binaire httpd.
en ligne de commande cela marche tres bien par contre quand je met cette même ligne de commande dans une uproc , apache ne démarre pas correctement.
voici la ligne de commande :
su - mond01a -c '/apache/apache-home/apache-2.2.17/bin/httpd -e debug -k start'

et j'ai fait une uproc de type interne avec la même ligne sans le sudo.
/apache/apache-home/apache-2.2.17/bin/httpd -e debug -k start

et la seule erreur que j'ai dans les log apache est :
[error] (88)Socket operation on non-socket: apr_socket_accept: (client socket)


La solution que j'ai trouvé est renommer le binaire httpd en httpd.real et de créer httpd avec le script suivant :
#!/bin/sh

`dirname $0`/httpd.real $* &> /dev/null </dev/zero


Mais cette solution, je ne la trouve pas "propre". Pourquoi en ligne de commande ça marche mais pas à partir d'une uproc


Est-ce que vous avez déjà rencontrer le problème ? si oui comment l'avez vous résolu ?

Comments

  • couakcouak FranceGuest Posts: 204
    plutôt que de faire un "su - user" tu pourrais créer un user $Universe associé à ce user OS, et le lancer avec
  • Alexandre HISETTEAlexandre HISETTE LillePosts: 121 Journeyman ✭✭✭
    couak wrote on May 6 2011, 02:29 PM:
    plutôt que de faire un "su - user" tu pourrais créer un user $Universe associé à ce user OS, et le lancer avec


    salut,

    Le "su - user" est pour simuler le comportement de $U.
    Il user , mond01a, existe sous $U et sur le système.
    et effectivement quand je lance directement à partir de mond01a en ligne de commande, il n'y a aucun souci.
  • menmen EuropePosts: 3,942 Specialist ✭✭✭✭
    Bonjour,

    pas trop d'idée sur le sujet. L'incident ouvert en parallèle auprès du Support a été escaladé.

    Je vais voir si quelqu'un a une autre solution côté Professional Services.

    Michel
  • Alexandre HISETTEAlexandre HISETTE LillePosts: 121 Journeyman ✭✭✭
    Bonjour,

    D'après ce que le support m'a dit, le problème est connu chez eux. Mais il serai plus général.
    Il viendrai du fait de lancer des process en tant que deamon à partir de $U.

    Le support à déjà le même genre de souci avec Tomcat.

    Reste plus qu'à attendre qu'il nous trouve une solution un peu mois "moche" que la mienne.

    Dès que j'ai des nouvelles du support , je vous tiendrai au courant.
  • couakcouak FranceGuest Posts: 204
    ne vaut-il mieux pas utiliser les scripts de démarrage, qui sont fait pour ?
    suivant l'OS cela peut exister ou non, et sous différentes forme
    sur ma debian je fais un coup de
    /etc/init.d/apache2 start
    
  • LeSloveneLeSlovene Guest Posts: 126
    Bonjour
    as tu tenter avec la commande exec dans ton script d'uproc?

    exec "/apache/apache-home/apache-2.2.17/bin/httpd -e debug -k start"
  • Alexandre HISETTEAlexandre HISETTE LillePosts: 121 Journeyman ✭✭✭
    couak wrote on May 12 2011, 10:26 AM:
    ne vaut-il mieux pas utiliser les scripts de démarrage, qui sont fait pour ?
    suivant l'OS cela peut exister ou non, et sous différentes forme
    sur ma debian je fais un coup de
    /etc/init.d/apache2 start
    


    Si on utilise le serveur apache "livré" avec le système et installé via les packages.
    les administrateur unix n'utilise pas les serveur web livré avec le systeme. Ce qui nous permet d'avoir la meme version d'apache que ce soit sur linux, hp-ux et aix.

    et donc je n'ai pas les scripts /etc/init.d/apache2.
  • Alexandre HISETTEAlexandre HISETTE LillePosts: 121 Journeyman ✭✭✭
    LeSlovene wrote on May 12 2011, 10:29 AM:
    Bonjour
    as tu tenter avec la commande exec dans ton script d'uproc?

    exec "/apache/apache-home/apache-2.2.17/bin/httpd -e debug -k start"


    Bonjour,

    Oui, je viens de tester et cela fait exactement la même chose.
  • couakcouak FranceGuest Posts: 204
    malmon wrote on May 12 2011, 08:41 AM:
    Si on utilise le serveur apache "livré" avec le système et installé via les packages.
    les administrateur unix n'utilise pas les serveur web livré avec le systeme. Ce qui nous permet d'avoir la meme version d'apache que ce soit sur linux, hp-ux et aix.

    et donc je n'ai pas les scripts /etc/init.d/apache2.

    mais rien ne t'empêche d'en faire un pour le lancer avec $U après :)
    ce sera plus simple sous $U mais également pour ceux qui exploitent le serveur
  • Alexandre HISETTEAlexandre HISETTE LillePosts: 121 Journeyman ✭✭✭
    couak wrote on May 12 2011, 11:28 AM:
    mais rien ne t'empêche d'en faire un pour le lancer avec $U après :)
    ce sera plus simple sous $U mais également pour ceux qui exploitent le serveur


    C'est vrai que rien ne m’empêche d''un faire un.

    Seulement nous utilisons un "socle technique" comprenant un ensemble de fonction écrit en ksh et utilisant le principe de FPATH.
    Ce "socle" est identique sur toutes les machines *NIX( AIX, HP-UX, Solaris et Linux).

    La commande pour démarrer apache est incluse dans une fonction "f_apa_start" qui en fonction de fichiers de variable,de l'ug démarre le bon serveur apache avec les bon fichiers de config.
    Ces fonctions fonctionnent sans souci a part sous linux.

    Donc cela revient au quasiment au même que de refaire un script dans /etc/init.d/ pour lancer apache.
  • jelujelu Posts: 21
    Bonjour,

    Histoire d'amener ma pierre ...
    Nous avons eu le même souci avec Apache. La solution que nous avons et qui fonctionne simplement sans tout "bidouiller" : transcrire vote script shell "ksh" ou "sh" en "csh" et cela fonctionnera beaucoup mieux.
    Je n'ai pas d'explication, car je ne suis pas vraiment orienté système. Peut-être une histoire d'environnement différent en csh qu'en ksh ou en bash

    A vérifier.

    malmon wrote on May 12 2011, 11:54 AM:
    C'est vrai que rien ne m’empêche d''un faire un.

    Seulement nous utilisons un "socle technique" comprenant un ensemble de fonction écrit en ksh et utilisant le principe de FPATH.
    Ce "socle" est identique sur toutes les machines *NIX( AIX, HP-UX, Solaris et Linux).

    La commande pour démarrer apache est incluse dans une fonction "f_apa_start" qui en fonction de fichiers de variable,de l'ug démarre le bon serveur apache avec les bon fichiers de config.
    Ces fonctions fonctionnent sans souci a part sous linux.

    Donc cela revient au quasiment au même que de refaire un script dans /etc/init.d/ pour lancer apache.
  • Alexandre HISETTEAlexandre HISETTE LillePosts: 121 Journeyman ✭✭✭
    edited June 2011
    Bonjour,


    Je viens de trouver une solution à mon problème.

    Dans la fonction de démarrage d'apache , j'ai rajouter des redirecteurs d'entrée et de sortie .
    Ce qui donne dans la fonction :

    ${APACHE_DIR_BIN}/httpd -f ${fichier_conf} -k start >/dev/null </dev/zero
    


    Pour informations complémentaire, cette fonction est chargée via FPATH, c'est pourquoi je ne pouvais pas changer le shell et que je suis obligé de le faire en ksh. Ce qui permet d'avoir un script identique pour le démarage d'apache quel que soit la version / os. Il nous suffit de renseigner des fichiers de variables pour avoir les infos sur l'endroit ou est le binaire httpd et le fichier de conf à utiliser.


    En espérant que cela puisse vous aider un jour

    EDIT : Je viens de refaire des tests et le "&" n'est pas obligatoire, ce qui est mieux pour tester la sortie de la commande
  • menmen EuropePosts: 3,942 Specialist ✭✭✭✭
    Merci malmon pour la solution !

    Michel
This discussion has been closed.