postgres et launchd

  • Créateur du sujet Créateur du sujet ThiGre
  • Date de début Date de début

ThiGre

Membre actif
11 Mars 2005
226
16
Grenoble
Bonjour,

Je souhaiterais que mon serveur postgres démarre en même temps que ma session et surtout qu'il s'arrête proprement quand l'ordinateur doit redémarrer.
J'ai trouvé des moyens de le faire qui recommandent l'emploi de launchd, mais voilà ça ne marche pas !

Mon serveur postgres est compilé par fink donc dans /sw, c'est la dernière version à ce jour 8.3.1

Je le démarre à la main de cette manière :
Bloc de code:
sudo -u postgres /sw/bin/pg_ctl -D /sw/var/postgresql-8.3/data -l /sw/var/postgresql-8.3/logfile.log
et j'ai crée dans le dossier /Library/LaunchDaemons/ le fichier .plist suivant en me basant sur divers info du net:

Bloc de code:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>GroupName</key>
    <string>postgres</string>
    <key>Label</key>
    <string>org.postgresql.PostgreSQL</string>
    <key>OnDemand</key>
    <true/>
    <key>ProgramArguments</key>
    <array>
        <string>-u</string>
        <string>postgres</string>
        <string>/sw/bin/pg_ctl</string>
        <string>-D</string>
        <string>/sw/var/postgresql-8.3/data/</string>
        <string>-l</string>
        <string>/sw/var/postgresql-8.3/logfile.log</string>
        <string>start</string>
    </array>
    <key>RunAtLoad</key>
    <true/>
    <key>ServiceDescription</key>
    <string>PostgreSQL Server</string>
    <key>UserName</key>
    <string>postgresql-8.3</string>
</dict>
</plist>
Quelqu'un voit-il ce qui cloche ?

Les droits du fichier .plist sont bons et quand je lance le service "à la main"
Bloc de code:
sudo launchctl load /Library/LaunchDaemons/org.postgresql.PostgreSQL.plist
sudo launchctl start org.postgresql.PostgreSQL
, je n'ai aucun message d'erreur, mais le serveur ne démarre pas.

Remarque, j'ai aussi essayé de lancer postmaster au lieu de pg_ctl car il paraît que launchd n'aime pas les process qui forkent et quittent, ce qui semble être le cas de pg_ctl, mais ça ne marche pas plus. Je peux aussi fournir le fichier .plist correspondant si besoin.

Quelqu'un a-t-il réussi à avoir un serveur postgres qui démarre et s'arrête en même temps que l'ordinateur ?
 
Merci pour les tuyaux, mais j'ai déjà essayé...
En fait la distrib d'entropy ne me permet pas d'utiliser des fonctions particulières de postgres que je peux compiler dans celle de fink

Pour les startupitems, ça ne marche pas non plus...
 
Dernière édition:
Bon c'est vraiment dommage que je n'arrive pas à trouver le truc pour postgres, car pour mon serveur mysql, ça marche sans problème.
Launchd lance gère mon serveur mysql efficacement !
 
Bon voilà, j'ai enfin trouvé le bon message :D:D

Après adaptation, voici mon fichier .plist

Bloc de code:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>GID</key>
    <integer>502</integer>
    <key>GroupName</key>
    <string>postgres</string>
    <key>Label</key>
    <string>org.postgres.PostgreSQL</string>
    <key>OnDemand</key>
    <false/>
    <key>ProgramArguments</key>
    <array>
        <string>/sw/bin/postmaster</string>
        <string>-D</string>
        <string>/sw/var/postgresql-8.3/data</string>
    </array>
    <key>ServiceDescription</key>
    <string>PostgreSQL Database Server</string>
    <key>UID</key>
    <integer>502</integer>
    <key>UserName</key>
    <string>postgres</string>
</dict>
</plist>
Et ça marche, mon Mac gère mes 2 serveurs de bases de données sans que j'ai plus a m'en soucier ;)

Il ne me reste plus qu'à incorporer postgres dans php5, mais bon ça c'est pas très important pour l'instant !