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ě 🙂.