Źródła można pobrać ze strony: http://www.postgresql.org/ftp/source/
Ja chcę zainstalować najwyższą wersję dostępną 9.3.4.
Pierwsze kroki to pobranie i rozpakowanie źródeł:
wget http://ftp.postgresql.org/pub/source/v9.3.4/postgresql-9.3.4.tar.gz tar -xzf postgresql-9.3.4.tar.gz cd postgresql-9.3.4
Chce zainstalować PostgreSQLa w dość nietypowej ścieżce bo w katalogu domowym użytkownika postgres, ale najpierw go dodajmy:
sudo adduser postgres sudo mkdir /home/postgres/psql9.3.4 sudo mkdir /home/postgres/psql9.3.4/data sudo chown postgres /home/postgres/psql9.3.4/data
Pierwszym krokiem instalacji jest konfiguracja źródeł i wybranie opcji. Służy do tego skrypt configure. Jeśli żadne opcje nie zostaną podane, wybrane zostaną domyślne ścieżki i opcje. Jeśli potrzebujesz pomocy uruchom skrypt z opcją --help. Domyślnie PostgreSQL jest instalowany:
- w katalogu: /usr/local/pgsql
- na porcie 5432
- z klastrem w katalogu: /usr/local/pgsql/data
./configure --help ./configure --prefix=/usr/local/psql9.3.4 --with-pgport=7432
Zwróć uwagę na wynik działania tego skryptu (WARNINGI i ERRORy). Sprawdza on także czy w twoim systemie są wszystkie biblioteki potrzebne do konfiguracji/instalacji. Być może będzie wymagane aby zainstalować jakieś biblioteki.
Instalacja:
gmake su gmake install su - postgres /usr/local/psql9.3.4/bin/initdb -D /home/postgres/psql9.3.4/data --username=postgres -W
Pogląd klastra - upewnij się, że są tam pliki konfiguracyjne:
[05:26:30 root@nazgul postgresql-9.3.4] ll /home/postgres/psql9.3.4/data/ razem 100 drwx------ 7 postgres postgres 4096 04-24 05:02 base drwx------ 2 postgres postgres 4096 04-24 04:43 global drwx------ 2 postgres postgres 4096 04-24 03:49 pg_clog -rw------- 1 postgres postgres 4608 04-24 04:46 pg_hba.conf -rw------- 1 postgres postgres 1636 04-24 03:49 pg_ident.conf drwx------ 4 postgres postgres 4096 04-24 03:49 pg_multixact drwx------ 2 postgres postgres 4096 04-24 04:43 pg_notify drwx------ 2 postgres postgres 4096 04-24 03:49 pg_serial drwx------ 2 postgres postgres 4096 04-24 03:49 pg_snapshots drwx------ 2 postgres postgres 4096 04-24 04:43 pg_stat drwx------ 2 postgres postgres 4096 04-24 05:26 pg_stat_tmp drwx------ 2 postgres postgres 4096 04-24 03:49 pg_subtrans drwx------ 2 postgres postgres 4096 04-24 03:49 pg_tblspc drwx------ 2 postgres postgres 4096 04-24 03:49 pg_twophase -rw------- 1 postgres postgres 4 04-24 03:49 PG_VERSION drwx------ 3 postgres postgres 4096 04-24 03:49 pg_xlog -rw------- 1 postgres postgres 20541 04-24 04:21 postgresql.conf -rw------- 1 postgres postgres 71 04-24 04:43 postmaster.opts -rw------- 1 postgres postgres 79 04-24 04:43 postmaster.pid
Na koniec: uruchomienie serwera, stworzenie bazy danych test i testowe podłączenie do serwera:
/usr/local/psql9.3.4/bin/postgres -D /home/postgres/psql9.3.4/data >/usr/local/psql9.3.4/logs/logfile 2>&1 & /usr/local/psql9.3.4/bin/createdb test /usr/local/psql9.3.4/bin/psql test
Musimy teraz skonfigurować serwer tak aby można było się do niego zalogować nie tylko z localhosta. Serwer musi nasłuchiwać na wszystkich możliwych adresach dlatego zmienimy plik konfiguracyjny - postgresql.conf, który jest w katalogu klastra:
[04:21:56 root@nazgul data] grep 'CONNECTIONS AND AUTHENTICATION' -A 10 -B1 postgresql.conf #------------------------------------------------------------------------------ # CONNECTIONS AND AUTHENTICATION #------------------------------------------------------------------------------ # - Connection Settings - listen_addresses = '*' # what IP address(es) to listen on; # comma-separated list of addresses; # defaults to 'localhost'; use '*' for all # (change requires restart) port = 7432 # (change requires restart) max_connections = 100 # (change requires restart)
Jednak gdy próbujemy się zalogować dostajemy błąd:
[ela:~ ]$ psql -h192.168.100.167 -Upostgres -p7432 psql: FATAL: no pg_hba.conf entry for host "192.168.100.152", user "postgres", database "postgres"
pg_hda.conf jest plikiem kontrolującym autoryzację klientów (link do dokumentacji: http://www.postgresql.org/docs/9.3/static/auth-pg-hba-conf.html). Domyślnie możemy się zalogować z localhosta bez żadnego hasła. Nie będę tego zmieniać bo zakładam, użytkownik ma dostęp na serwer jest już użytkownikiem zaufanym. Dodałam jednak jeden wpis dzięki któremu, wszyscy użytkownicy w podsieci 192.168.100.* mogą się zalogować przy pomocy hasła. Ostatecznie wpisy w pg_hba.conf wyglądają tak:
# TYPE DATABASE USER ADDRESS METHOD # "local" is for Unix domain socket connections only local all all trust # IPv4 local connections: host all all 127.0.0.1/32 trust # IPv6 local connections: host all all ::1/128 trust # ADDED: can connect to database but you have to put correct password host all all 192.168.100.0/0 md5 # Allow replication connections from localhost, by a user with the # replication privilege. #local replication postgres trust #host replication postgres 127.0.0.1/32 trust #host replication postgres ::1/128 trust
Dodajmy jeszcze kilku użytkowników:
- replication - dla inicjalizacji replikacji
- admin - z prawami do tworzenia nowych ról i baz danych
- user - użytkownik z możliwością logowania ale bez tworzenia baz danych
[04:59:53 iloop@nazgul ~] /usr/local/psql9.3.4/bin/createuser --replication --login --pwprompt -U postgres replication [04:53:01 iloop@nazgul ~] /usr/local/psql9.3.4/bin/createuser --createdb --login --pwprompt --createrole -U postgres admin [04:59:01 iloop@nazgul ~] /usr/local/psql9.3.4/bin/createuser --no-createdb --login --pwprompt -U postgres user
Każdy krok wykonałam na dwóch maszynach tak aby utworzyć między nimi replikację master-standby. Ale to już w następnym poście.