Potřebuji odsouhlasit používání cookies. Když tyto stránky používáte, vyjadřujete souhlas.

Turris jako webserver - PostgreSQL

Když už jsem se rozhodl přesunout svůj web na Turris rozhodl jsem se také, že vyměním databázi. Bylo to celkem jednoduché rozhodnutí. S Postgresem pracuji každý den, takže se dá říct, že vím co od něj mohu očekávat.


  Načítím reklamu ...

Co je tedy potřeba udělat pro to aby na Turrisu běžel PostgreSQL?
Nejdříve nainstalovat potřebné balíčky

opkg update
opkg install pgsql-server shadow-su


Po úspěšné instalaci je potřeba upravit konfigurační soubor postgresql (/etc/config/postgresql).

config postgresql config
  option PGUSER  postgres
  option PGDATA  /mnt/tsd/postgresql/data
  option PGLOG   /mnt/tsd/postgresql/logs/postgresql.log
  option PG_CTL  /usr/bin/pg_ctl

Proměnná PGUSER je hlavní uživatel postgresql, PGDATA je cesta k adresáři ve kterém budou uloženy datové soubory databáze. PGLOG je umístění logovacího souboru. Všechna umístění jsem změnil na sd kartu abych zbytečně nezatěžoval vnitřní pamět Turrisu.

chown postgres /mnt/tsd/postgresql/data
Na sd kartě jsem samozřejmě musel vytvořit potřebnou adresářovou strukturu.
Datovému adresáři je nutné nastavit jako vlastníka uživatele postgres aby do něho mohl bez problémů zapisovat.

Pak je již možné provést inicializaci databáze.

su - postgres
LC_COLLATE="C" initdb --pwprompt -D /mnt/tsd/postgresql/data/

Inicializace trvá několik minut.

ln -s /usr/bin/su /bin/su
Ještě je také nutné vytvořit symlink na su


Pak jsem začal nastavovat postgresql.
V datovém adresáři postgresql (/mnt/tsd/postgresql/data/) vytvořila inicializace několik souborů.
Prvním z nich je postgresql.conf (/mnt/tsd/postgresql/data/postgresql.conf).

listen_addresses = \'localhost, 192.168.1.1\'
V tomto souboru jsem musel přidat další adresu na které bude databázový server poslouchat.

Další soubor je pghba.conf (/mnt/tsd/postgresql/data/pghba.conf).

host all all 192.168.1.2/24 trust
V tomto souboru jsem přidal nastavení, že z mého počítače je možné se do databáze také připojit abych mohl používat nástroje jako je pgAdmin III. 🙂

Tak a pak to přišlo.
Spuštění postgresql.

/etc/init.d/postgresql start
To u mě nezafungovalo.
V logu se objevilo su: Cannot drop the controlling terminal.
Google zjistil, že se asi jedná o chybu v shadow-su (https://github.com/openwrt/packages/issues/1521).

Takže konec.

Jediná možnost jak spustit postgresql je:

su - postgres
postgres -D /mnt/tsd/postgresql/data

A nechat běžet na pozadí.

Doufám, že se mi podaří ještě přijít na nějaký lepší způsob jak postgres spouštět protože takto se mi to nelíbí.

Update 21.12.2016

Po instalaci nové verze 3.3 Turris OS došlo k odinstalaci původní verze PostgreSQL 9.0 a instalaci PostgreSQL 9.5.

Od této aktualizace je již možné spouštět PostgreSQL standardním způsobem, t.j. pomocí /etc/init.d/postgresql start
Bohužel, ale nedošlo k migraci databází a tak ztráta dat byla na světě 🙂.

Turris, Webserver, PostgreSQL

- (15. 6. 2020)

Jsem programátor, horolezec a tak trochu FlexiBee fanatik :-).
Na CharlieBlogu sepisuji své nápady a poznatky už od roku 2006.

Powered by CharlieBlog Engine v2.3 - Login