Hallo an alle!
Zur Zeit starte ich den PostgreSQL-Server mittels:
su - postgres
postgres -D /usr/local/pgsql/data > logfile 2>&1 &
Dann lauscht der Server auf Port 5432 und ich kann mich connecten mit pgAdmin3.
Nun will ich das natürlich auf meinem Fedora 11 Server nicht bei jedem Neustart eintippen.
Wie kann ich das erreichen, dass es automatisch startet?
Ich habe ein bisschen quer geschaut, das funktioniert nicht:
/sbin/chkconfig postgresql on
Wie mache ich das? Jemand Ideen?
Danke + Gruß PHANTOMIAS
ads
8. Oktober 2009 um 09:06
2
Wie wäre es, wenn du ein fertiges RPM nimmst? Das liefert all diese Funktionalität schon mit.
Ansonsten darfst du dir ein Initscript basteln. In dem Verzeichnis mit den anderen Initscripts sollte es schon eine Vorlage geben, die du anpassen kannst.
Es gibt ja schon eins unter
/etc/init.d/postgresql
Das ich mit der Option
start
aufrufen kann.
Aber dann bin ich wohl root-User und nicht User postgres.
Zudem kommt da die Meldung:
/var/lib/pgsql/data is missing: Use "service posgresql initdb" to initialize the cluster first. [FEHLGESCHLAGEN]
Aber das liegt bei mir unter /usr/local/pgsql/data
Gruß PHANTOMIAS
ads
8. Oktober 2009 um 10:06
4
Nun, Initscripte werden auch als root aufgerufen, das ist so vorgesehen.
Ggf. muss das Initscript dann den Benutzer wechseln.
Gisman
8. Oktober 2009 um 12:37
5
Beim Lesen des vorhandenen init-Scripts wird auffallen, das hier der Aufruf unter dem User postgres (su postgres -c ‘pg_ctl -bla -blubb’) erfolgt. Zumindest bei meinen Susen hier. Wichtig ist hier noch im init-Skript den Pfad zum Datenverzeichnis korrekt zu übernehmen ( meist auf /var/pgsql oder ähnlich) falls man das anders haben will, muß man vorher die Systemvariable $PG_DATADIR setzen oder das Verzeichnis explizit reinschreiben.
Gruß Uwe
EDIT: $PGDATA heißt die Variable…
und so sieht der Aufruf im Script aus:
start)
echo -n "Starting PostgreSQL: "
su - $PGUSER -c "$DAEMON -D '$PGDATA' &" >>$PGLOG 2>&1
echo "ok"
;;
Vielen Dank für die Antworten.
Ich habe jetzt in /etc/profile ganz am Ende
PG_DATADIR = '/usr/local/pgsql/data'
export PG_DATADIR
aufgenommen und den Server neu gestartet.
Mache ich dann ein
/etc/init.d/postgresql start
erscheint die gleiche Meldung wie oben.
Schaue ich in die postgresql, so hängt es wohl an diesen Zeilen, dass dies false ergibt und diese Fehlermeldung erscheint.
#Check for the PGDATA structure
if [ -f "$PGDATA/PG_VERSION" ] && [ -d "$PGDATA/base" ]
Was muss ich noch anpassen?
Gruß PHANTOMIAS
ads
8. Oktober 2009 um 13:18
7
Ich bin mir nicht sicher, ob die Init Scripte die Datei /etc/profile überhaupt auslesen. Diese Datei ist ja für interaktive Logins gedacht.
Gisman
8. Oktober 2009 um 13:23
8
Wie ich im Edit geschrieben habe: (mindestens) den richtigen Variablennamen, sorry für das Versehen.
Grüssle Uwe
Kein Problem.
Ich habe PGDATA gesetzt in der /etc/profile und ein
echo $PGDATA
liefert auch das richtige Ergebnis:
/usr/local/pgsql/data
Aber dann ein
/etc/init.d/postgresql start
liefert wieder genau die gleiche Fehlermeldung.
Gruß PHANTOMIAS
Ja, aber ich kann danach mit einem
echo $PGDATA
auf die Daten zugreifen. Also ist die Systemvariable doch gesetzt.
Und dann starte ich ja zur Zeit erst mit
/etc/init.d/postgresql start
Gruß PHANTOMIAS
Ah, im /etc/init.d/postgresql wird das wieder umgeschrieben, ich habe es nun geändert zu /usr/local/pgsql/data.
Aber jetzt erscheint beim Starten nur
postgresql-Dienst starten: [FEHLGESCHLAGEN]
Update: Im Logfile steht:
FATAL: konnte Sperrdatei >>postmaster.pid<< nicht erstellen: Keine Berechtigung.
Gruß PHANTOMIAS
Gisman
8. Oktober 2009 um 14:58
13
Pg erstellt eine Datei, in der die PID des Servers steht. Vermutlich versucht er dies in einem Verzeichnis, wo er das nicht darf.
Grüssle Uwe
Und wie heißt die Datei? postmaster.pid?
Ein locate postmaster.pid ergibt:
/usr/local/pgsql/data/postmaster.pid
Wobei wenn ich in das Verzeichnis gehe, liegt da keine Datei mit dem Namen. postmaster.opts ist die einzigste “postmaster”-Datei.
Gruß PHANTOMIAS
ads
8. Oktober 2009 um 15:08
15
Darf ich noch mal auf meine eingangs gestellte Frage zurückkommen, wieso du kein fertiges RPM verwendest? Das würde all die Probleme der letzten beiden Threadseiten auf einen Schlag erledigen.
Sorry, hatte vergessen darauf zu antworten.
Ganz einfach: Firmenpolitik, alles über yum ist Vorgabe. Wenn man das sinnvoll verwenden würde, aber da gabs in Vergangenheit Probleme, dass da jeder kreuz und quer installiert hat auf den Testservern und schwupps: Vorgaben an die sich jeder zu halten hat, und die heißt yum.
Gruß PHANTOMIAS
ads
8. Oktober 2009 um 15:46
17
Ja, und? PostgreSQL gibt es als fertiges Paket, das man so installieren kann.
Oder übersehe ich da ein Problem?
Installation nur über “yum install xxx” erlaubt!
ads
8. Oktober 2009 um 16:09
19
Ich habe dich schon verstanden. Ich verstehe nur nicht, warum man damit nun kein PostgreSQL-Paket installieren kann.
Und wenn man Vorschriften sehr weit treiben will: wenn ich eine neue Quelle in yum einfüge, kann ich dort beliebige Pakete herbekommen.
Jetzt verstehe ich dich nicht.
Ich mache doch “yum install postgresql-server”
-> das ist erlaubt laut Regelung.
Ein “rpm -i xxx” nicht.
-> nicht erlaubt laut Regelung.
Ich muss also vorerst so mit zurechtkommen und das lösen.