Strona 1 z 2

Automatyczny start serwera Postgresql przy uruchamianiu systemu - Linux Mint

: 27 listopada 2011, 23:42
autor: piotrku
Witam.
Mam problem z "namówieniem" serwera Postgresql do automatycznego startu przy ładowaniu systemu.
Odpowiednie wpisy do katalogów z nadanymi uprawnieniami do wykonywania skryptów istnieją, mianowicie:
(/etc/init.d oraz poszczególne poziomy uruchamiania) - odpowiednie wpisy dodane automatycznie podczas instalacji poprzez menedżera pakietów - postgresql 8.4 instalowany w całości przez menedżera pakietów synaptic.
Serwer startuje baz zarzutu "z palca" z poziomu konta root (sudo):

Kod: Zaznacz cały

/etc/init.d/postgresql start
Zależy mi jednak na tym, żeby "wstawał" automatycznie przy starcie systemu i nie koniecznie jako root, a w kontekście użytkownika postgres. Równocześnie nie chcę "odzierać " go z zabezpieczeń, a więc rezygnowanie z zabezpieczenia serwera użytkownikiem postgres nie wchodzi w grę. Zakładam, że jak najbardziej możliwa jest taka konfiguracja kiedy serwer startuje już na starcie systemu bez względu jaki użytkownik loguje się do systemu, a serwer wciąż pozostaje zabezpieczony "superużytkownikiem" - postgres ze swoim hasłem.

Konsolowe:

Kod: Zaznacz cały

update-rc.d postgresql enable
daje w wyniku:

Kod: Zaznacz cały

update-rc.d: warning: postgresql start runlevel arguments (none) do not match LSB Default-Start values (2 3 4 5)
update-rc.d: warning: postgresql stop runlevel arguments (none) do not match LSB Default-Stop values (0 1 6) Enabling system startup links for /etc/init.d/postgresql ... Removing any system startup links for /etc/init.d/postgresql ...   /etc/rc0.d/K21postgresql   /etc/rc1.d/K21postgresql   /etc/rc2.d/S19postgresql   /etc/rc3.d/S19postgresql   /etc/rc4.d/S19postgresql   /etc/rc5.d/S19postgresql   /etc/rc6.d/K21postgresql Adding system startup for /etc/init.d/postgresql ...   /etc/rc0.d/K21postgresql -> ../init.d/postgresql   /etc/rc1.d/K21postgresql -> ../init.d/postgresql   /etc/rc6.d/K21postgresql -> ../init.d/postgresql   /etc/rc2.d/S19postgresql -> ../init.d/postgresql   /etc/rc3.d/S19postgresql -> ../init.d/postgresql   /etc/rc4.d/S19postgresql -> ../init.d/postgresql   /etc/rc5.d/S19postgresql -> ../init.d/postgresql
serwer: Postgresql wer. 8.4
system: Linux Mint wer. 10
Piotr K

: 04 grudnia 2011, 12:43
autor: Yampress

Kod: Zaznacz cały

man update-rc.d

Kod: Zaznacz cały

PRZYKŁADY
       Utworzenie domyślnych dowiązań:
       update-rc.d blabla defaults
       Odpowiednikiem tego polecenia będzie:
       update-rc.d blabla start 20 2 3 4 5 . stop 20 0 1 6 .
       Bardziej typowa wersja tego polecenia, używająca  wprost  zbioru  argu‐
       mentu:
       update-rc.d blabla start 30 2 3 4 5 . stop 70 0 1 6 .
       Usuwa  wszystkie  dowiązania dla skryptu (zakładając, że blabla zostało
       już usunięte):
       update-rc.d blabla remove
       Przykład wyłączania usługi:
       update-rc.d -f blabla remove
       update-rc.d blabla stop 20 2 3 4 5 .
       Przykład polecenia instalującego systemowy  skrypt  inicjacji-i-zamyka‐
       nia:
       update-rc.d blabla start 45 S . start 31 0 6 .
       Przykład  polecenia  wyłączającego systemowy skrypt inicjacji-i-zamyka‐
       nia:
       update-rc.d -f blabla remove
       update-rc.d blabla stop 45 S .

: 04 grudnia 2011, 23:52
autor: piotrku
Dowiązania na domyślnych poziomach istnieją, polecenie:

Kod: Zaznacz cały

update-rc.d postgresql defaults
zwraca:

Kod: Zaznacz cały

System start/stop links for /etc/init.d/postgresql already exist.
Died at /usr/sbin/update-rc.d line 57.
A postgresql wciąż nie inicjuje się na starcie.

Piotr

: 05 grudnia 2011, 13:22
autor: Yampress
Link do uruchamiania jest stworzony, sprawdź logi, odinstaluj i zainstaluj bazę od nowa.

: 06 grudnia 2011, 15:49
autor: Olivia
Albo napisz nowy skrypt startowy, który np. odczekuje 60s od startu systemu i dopiero wtedy uruchamia bazę danych.

: 06 grudnia 2011, 18:45
autor: Yampress
Olivia pisze:Albo napisz nowy skrypt startowy, który np. odczekuje 60s od startu systemu i dopiero wtedy uruchamia bazę danych.
A to w jakim celu, minutę po?

: 06 grudnia 2011, 20:02
autor: Olivia
Skoro nie działa od razu... Ja bym tak spróbowała. A w skrypcie dała:

Kod: Zaznacz cały

/etc/init.d/postgresql start

: 06 grudnia 2011, 20:08
autor: Yampress
Można przestawić kolejność uruchamiania, a według Twojej metody edytować istniejący skrypt i dodać:

Kod: Zaznacz cały

sleep 60

piotrku, a co w logach jest?

: 10 grudnia 2011, 01:58
autor: piotrku
Witam.

Chyba namierzyłem problem, był tutaj:

Kod: Zaznacz cały

2011-12-10 01:32:54 CET FATAL:  could not create shared memory segment: Z?y argument
2011-12-10 01:32:54 CET DETAIL:  Failed system call was shmget(key=5432001, size=36880384, 03600).
2011-12-10 01:32:54 CET HINT:  This error usually means that PostgreSQL's request for a shared memory segment exceeded your kernel's SHMMAX parameter.  You can either reduce the request size or reconfigure the kernel with larger SHMMAX.  To reduce the request size (currently 36880384 bytes), reduce PostgreSQL's shared_buffers parameter (currently 4096) and/or its max_connections parameter (currently 103).
Serwer po zmianach pierwszy raz uruchomił się sam.

Niemniej dziękuję za wsparcie, pozdrawiam.
Piotr

: 10 grudnia 2011, 11:23
autor: Yampress
Dlatego zawsze jak sie coś nie uruchamia nie należy szukać problemu w powietrzu albo pytać wróżki tylko zajrzeć w logi a aplikacja sama powie co jej dolega.