IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Administration système Discussion :

[Casse tête] rcx.d et apache2


Sujet :

Administration système

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 19
    Par défaut [Casse tête] rcx.d et apache2
    Bonsoir, j'aurais besoin d'un peu d'aide concernant le script de lancement d'apache en principe lancé au démarrage.

    La situation:
    J'ai fait une install atypique d'apache pour héberger plusieurs sites en mutu, des vhosts avec du reverse proxying, donc j'ai un processus apache tournant sous www-data qui fait le proxy, et ensuite autant d'autres processus pères d'apache que de vhosts tournant sous l'utilisateur système attribué au vhost correspondant, qui n'a de droits que sur son documentroot et pas ailleurs, écoutant chacun sur un port différent.

    Donc j'ai autant de /etc/apache2-truc que de vhosts + 1 pour le proxy, les petits gars de chez apache ont pensé aux petits gars comme moi, le script de démarrage d'apache dans init.d prend ce genre de configuration en compte, c'est à dire que j'ai dans mes dossiers runlevels autants de liens que de vhosts pointant tous vers le même script.
    Comme ça quand le script de démarrage est appelé depuis le lien /etc/rc2.d/S03apache2-0001 (le lien pour démarrer le premier vhost), une instance d'apache est lancée avec la configuration située dans /etc/apache2-0001/.

    Bien ça fonctionne à merveille, le proxy fait son taf, les vhosts aussi c'est parfait, mais, il n'y a pas moyen que les instances se lancent automatiquement au boot du serveur (qui ne devrait pas avoir lieu tous les 4 matins, mais j'aimerais ne pas avoir à relancer toutes les instances d'apache à la main après un reboot).

    D'ailleurs quand je rentre la commande sudo service apache2-0001, ou que j'appelle directement le script via sudo /etc/rc2.d/S03apache2-0001 ça démarre, et avec la bonne configuration, ce n'est donc ni un problème de droits, ni de configuration, mais toujours est il que ça ne se lance pas après un reboot (le syslog reste muet a ce sujet).

    pour le moment j'ai les liens suivants:
    /etc/rc[2-5].d/S03apache2-0001 (démarrage de mon premier vhost)
    /etc/rc[2-5].d/S03apache2-0011 (démarrage du 2e vhost)
    /etc/rc[2-5].d/S04apache2-proxy (démarrage du proxy vhost)

    Quelqu'un aurait il une idée?
    Je tourne sous débian, merci d'avance

  2. #2
    Expert confirmé
    Avatar de Katyucha
    Femme Profil pro
    DevUxSecScrumOps Full Stack Bullshit
    Inscrit en
    Mars 2004
    Messages
    3 287
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Irlande

    Informations professionnelles :
    Activité : DevUxSecScrumOps Full Stack Bullshit

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 287
    Par défaut
    Au vu de ton anomalie et avec tout le travail que tu as fait en amont, je ne vois qu'une seule réponse à ton problème : LES VARIABLES d'ENVIRONNEMENT !

    En effet, quand tu lances via sudo ou normalement en /etc/init.d/, la seule différence doit être au niveau de ton environnement. Il doit t'en manquer une ou plusieurs de bien positionner.

    1/ Vérifie que tu n'utilises que des chemins absolus !! Les
    PAS Bieeeeeen
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    /usr/bin/httpd -bidule
    Bieeeeeeeen

    2/
    Utilise dans tes scripts de démarrage :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    | tee -a 'mon fichier de log'
    Pour récupérer les logs ^^ (ne l'utilise que pendant le temps du debug)


    PS : merci pour ton message, un exemple pour tous, bien écrit, clair, compréhensif et on voit que tu as cherché... Ca donne envie de s'y interesser et d'y répondre

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 19
    Par défaut
    Merci pour ta réponse, cela dit plusieurs choses:
    Le script de démarrage n'est pas de moi, c'est le script de démarrage original d'apache je n'y ai pas touché j'ai juste fait des liens depuis rc2.d vers ce script qui prend le nom du lien qui pointe sur lui pour savoir dans quel dossier de configuration se trouve la configuration avec laquelle lancer apache, voici ce que donne un ls -la sur le rc2.d:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    lrwxrwxrwx  1 root root   17 20 juil. 20:07 S03apache2-0001 -> ../init.d/apache2
    lrwxrwxrwx  1 root root   17 20 juil. 20:07 S03apache2-0011 -> ../init.d/apache2
    lrwxrwxrwx  1 root root   17 20 juil. 20:07 S04apache2-proxy -> ../init.d/apache2
    Comme tu peux le voir tous les liens pointent sur le même script celui fourni avec l'install originale d'apache qui fonctionne très bien et auquel je n'ai pas touché (je l'ai juste affiché pour voir comment il fonctionnait c'est là que je me suis rendu compte qu'il suffisait de créer un lien avec le nom adéquat pour que le script démarre apache depuis le dossier de configuration voulu qui est donné dans le nom du lien), fonctionnait très bien avant que je mette en place ma configuration spéciale pour ce qui est de lancer le service au boot, et fonctionne d'ailleurs toujours très bien puisque:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    sudo /etc/rc2.d/S03apache2-0001 start
    sudo /etc/rc2.d/S03apache2-0011 start
    sudo /etc/rc2.d/S04apache2-proxy start
    Démarre sans problème les instances d'apache sous le bon utilisateur, et donc, avec la bonne configuration.

    Par exemple après sudo /etc/rc2.d/S03apache2-0001 start, sudo ps aux affiche ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    root      4271  0.5  0.5 206832 10468 ?        Ss   20:23   0:00 /usr/sbin/apache2 -d /etc/apache2-0001 -k start
    vhost1    4279  0.0  0.2 206832  5736 ?        S    20:23   0:00 /usr/sbin/apache2 -d /etc/apache2-0001 -k start
    vhost1    4280  0.0  0.2 206832  5736 ?        S    20:23   0:00 /usr/sbin/apache2 -d /etc/apache2-0001 -k start
    vhost1    4281  0.0  0.2 206832  5736 ?        S    20:23   0:00 /usr/sbin/apache2 -d /etc/apache2-0001 -k start
    vhost1    4282  0.0  0.2 206832  5736 ?        S    20:23   0:00 /usr/sbin/apache2 -d /etc/apache2-0001 -k start
    vhost1    4283  0.0  0.2 206832  5736 ?        S    20:23   0:00 /usr/sbin/apache2 -d /etc/apache2-0001 -k start
    Je ne comprends pas très bien comment j'aurais soudainement un problème de variables d'environnement qui empêcheraient de fonctionner un script qui fonctionnait très bien avant puisque tout ce que j'ai fait c'est créer des liens portant chacun un nom différent vers ce script et non le modifier (sans utiliser update-rc.d puisque cela supposerait que j'ai un script de démarrage par instance d'apache alors qu'un seul script fait très bien le boulot).

    Les scripts linkés dans les dossiers rc sont lancés au démarrage avec les droits root d'après ce que je crois savoir?
    Donc a priori ça ne devrait pas être très différent de quand je les lance à la main avec sudo, d'ailleurs quand je passe en root avec sudo -i ça fonctionne tout aussi bien.

    La deuxième chose, c'est la commande tee, selon le man:
    tee - read from standard input and write to standard output and files
    Je pense qu'il me faudrait plutôt une commande qui lit la sortie standard pour l'écrire dans un fichier non?
    Parce que l'entrée standard c'est le clavier

    Ps: merci, c'est normal que je donne le maximum d'infos et que je fasse des recherches avant de poster ^^

    Edit: C'était presque ça en fait, pour une raison tordue le script de démarrage prenait le nom du script lui même au boot, au lieu de prendre le nom du lien comme quand je le lançais directement.

    Alors j'ai copié le script et l'ai renommé selon le dossier de configuration de l'instance, j'ai fait pareil pour les autres instances, maintenant le problème c'est qu'il n'y en a qu'une seule des 3 qui se lance -_-'

Discussions similaires

  1. [Tableaux] Casse têtes de boucles
    Par Anduriel dans le forum Langage
    Réponses: 5
    Dernier message: 28/06/2006, 00h24
  2. Casse tête chinois
    Par Jahjouh dans le forum Algorithmes et structures de données
    Réponses: 3
    Dernier message: 15/03/2006, 09h04
  3. requête SQL un peu casse tête
    Par hellbilly dans le forum Langage SQL
    Réponses: 4
    Dernier message: 15/12/2005, 10h03
  4. Classe, pile, pointeurs et casse-tête!
    Par zazaraignée dans le forum Langage
    Réponses: 6
    Dernier message: 26/09/2005, 16h57
  5. casse-tête excel
    Par gregius dans le forum Access
    Réponses: 2
    Dernier message: 21/09/2005, 16h38

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo