PostgreSQL adatbázis
A http://www.javaforum.hu portál első sorban PostgreSQL adatbázist használ, így egy PostgreSQL jail elkészítése szükséges volt.
Előfeltételek
A PostgreSQL érdekes állat, a leadott teljesítményért cserében több kernel erőforrást igényel, mint ami alapból adott, ezért a /boot/loader.conf állományba vegyük fel az alábbi három sort, majd indítsuk újra a gépet... igen, az egész gépet:
kern.ipc.semmni=512 kern.ipc.semmnu=1024 kern.ipc.semmns=2048
Hozzuk létre a szükséges jail fájlrendszert, illetve egy külön fájlrendszert az adatbázisban tárolt adatoknak, amelyet lehetőleg ne állítsunk tömörítettre, mivel ez jelentősen ronthatja az adatbázis hatékonyságát. A PostgreSQL el akarja majd érni a sysvipc felületet, amely alapból tiltva van a jail-ek számára, ezért adjuk meg a /etc/rc.conf állományban ezt az engedélyt (célszerű a jail konfigok közelébe tenni, például a dev és a proc elé):
jail_sysvipc_allow="YES"
A PostgreSQL telepítése és beállítása
Indítsuk el a jail-t, majd lépjünk be és telepítsük fel a postgresql84-server csomagot, célszerű az (ICU 8.3 verzióig) és az INTDATE opciók kiválasztása, ezek után adjuk hozzá a /etc/rc.conf állományhoz az alábbit:
postgresql_enable="YES"
A jail újraindítása nélkül szerkesszük vipw parancs segítségével a passwd fájlt, adjunk meg új home könyvtárat a postgres felhasználónak, illetve írjuk át ízlés szerint a shell parancsot is:
pgsql:*:70:70:PostgreSQL Daemon:/data/pgsql:/usr/local/bin/bash
Ezek után mozgassuk át a megfelelő helyre a postgres felhasználó régi könyvtárát, majd futtassuk le az initdb parancsot, amely létrehozza a szükséges adatstruktúrát:
[root@pgsql:~]$ mv /usr/local/pgsql/ /data/ [root@pgsql:~]$ /usr/local/etc/rc.d/postgresql initdb The files belonging to this database system will be owned by user "pgsql". This user must also own the server process. The database cluster will be initialized with locale C. The default text search configuration will be set to "english". creating directory /data/pgsql/data ... ok creating subdirectories ... ok selecting default max_connections ... 50 selecting default shared_buffers/max_fsm_pages ... 4000kB/20000 creating configuration files ... ok creating template1 database in /data/pgsql/data/base/1 ... ok initializing pg_authid ... ok initializing dependencies ... ok creating system views ... ok loading system objects' descriptions ... ok creating conversions ... ok creating dictionaries ... ok setting privileges on built-in objects ... ok creating information schema ... ok vacuuming database template1 ... ok copying template1 to template0 ... ok copying template1 to postgres ... ok WARNING: enabling "trust" authentication for local connections You can change this by editing pg_hba.conf or using the -A option the next time you run initdb. Success. You can now start the database server using: /usr/local/bin/postgres -D /data/pgsql/data or /usr/local/bin/pg_ctl -D /data/pgsql/data -l logfile start
Ha verziót váltunk, akkor szükséges lehet a meglévő adatbázis mentése és visszatöltése az új adatbázis jail alá.
Ennek módja egyszerű, a régi adatbázist mentjük:
$ pg_dumpall -U pgsql >dump.sql
Majd ezt betöltjük az új - üres - adatbázisba:
$ psql -f backup.sql template1
Az adatbázis méretétől és a gép teljesítményétől függően ez jópár percig eltarthat...
Ezek után adjuk hozzá a saját jail-ekből való elérés lehetőségét:
host all all 192.168.0.0/16 password
Majd módosítsuk a postgresql.conf fájlt, hogy a program hallgatózzon is a neki szánt porton és interfészen:
listen_addresses = '*' port = 5432
Ezek után a postgresql indítható, próbáljuk ki:
[root@pgsql:~]$ /usr/local/etc/rc.d/postgresql start [root@pgsql:~]$ su - pgsql [pgsql@pgsql:~]$ createuser -P testuser Enter password for new role: Enter it again: Shall the new role be a superuser? (y/n) n Shall the new role be allowed to create databases? (y/n) y Shall the new role be allowed to create more new roles? (y/n) n [pgsql@pgsql:~]$ createdb -E UTF-8 -O testuser testdb [pgsql@pgsql:~]$ psql -h pgsql.jails.javaforum.hu -U testuser testdb Password for user testuser: Welcome to psql 8.3.5, the PostgreSQL interactive terminal. Type: \copyright for distribution terms \h for help with SQL commands \? for help with psql commands \g or terminate with semicolon to execute query \q to quit testdb=> \q
A PostgreSQL kipipálva...