Podobně jako mySQL, postgreSQL je velmi slavný a obsahuje funkce bezplatná a open source databáze .
Dříve jsme diskutovali o několika instalacích včetně instalace zásobníku LAMP, instalace Apache2 ze zdroje, instalace PHP5 ze zdroje a instalace mySQL.
V tomto článku se podíváme na to, jak instalovat databázi postgreSQL na Linuxu ze zdrojového kódu.
Krok 1:Stáhněte si zdrojový kód postgreSQL
Na webu pro stahování postgreSQL vyberte zrcadlový web, který se nachází ve vaší zemi.
# wget http://wwwmaster.postgresql.org/redir/198/f/source/v8.3.7/postgresql-8.3.7.tar.gz
Krok 2:Nainstalujte postgreSQL
# tar xvfz postgresql-8.3.7.tar.gz # cd postgresql-8.3.7 # ./configure checking for sgmlspl... no configure: creating ./config.status config.status: creating GNUmakefile config.status: creating src/Makefile.global config.status: creating src/include/pg_config.h config.status: creating src/interfaces/ecpg/include/ecpg_config.h config.status: linking ./src/backend/port/tas/dummy.s to src/backend/port/tas.s config.status: linking ./src/backend/port/dynloader/linux.c to src/backend/port/dynloader.c config.status: linking ./src/backend/port/sysv_sema.c to src/backend/port/pg_sema.c config.status: linking ./src/backend/port/sysv_shmem.c to src/backend/port/pg_shmem.c config.status: linking ./src/backend/port/dynloader/linux.h to src/include/dynloader.h config.status: linking ./src/include/port/linux.h to src/include/pg_config_os.h config.status: linking ./src/makefiles/Makefile.linux to src/Makefile.port # make make[3]: Leaving directory `/usr/save/postgresql-8.3.7/contrib/spi' rm -rf ./testtablespace mkdir ./testtablespace make[2]: Leaving directory `/usr/save/postgresql-8.3.7/src/test/regress' make[1]: Leaving directory `/usr/save/postgresql-8.3.7/src' make -C config all make[1]: Entering directory `/usr/save/postgresql-8.3.7/config' make[1]: Nothing to be done for `all'. make[1]: Leaving directory `/usr/save/postgresql-8.3.7/config' All of PostgreSQL successfully made. Ready to install. # make install make -C test/regress install make[2]: Entering directory `/usr/save/postgresql-8.3.7/src/test/regress' /bin/sh ../../../config/install-sh -c pg_regress '/usr/local/pgsql/lib/pgxs/src/test/regress/pg_regress' make[2]: Leaving directory `/usr/save/postgresql-8.3.7/src/test/regress' make[1]: Leaving directory `/usr/save/postgresql-8.3.7/src' make -C config install make[1]: Entering directory `/usr/save/postgresql-8.3.7/config' mkdir -p -- /usr/local/pgsql/lib/pgxs/config /bin/sh ../config/install-sh -c -m 755 ./install-sh '/usr/local/pgsql/lib/pgxs/config/install-sh' /bin/sh ../config/install-sh -c -m 755 ./mkinstalldirs '/usr/local/pgsql/lib/pgxs/config/mkinstalldirs' make[1]: Leaving directory `/usr/save/postgresql-8.3.7/config' PostgreSQL installation complete.
PostgreSQL ./configure options
Níže jsou uvedeny různé možnosti, které lze předat souboru ./configure:
- –prefix=PREFIX instaluje do PREFIX soubory nezávislé na architektuře. Výchozí umístění instalace je /usr/local/pgsql
- –enable-integer-datetimes povolit podporu 64bitových celých čísel pro datum a čas
- –enable-nls[=LANGUAGES] povolí podporu nativního jazyka
- –disable-shared nevytvářejte sdílené knihovny
- –disable-rpath nevkládat vyhledávací cestu sdílené knihovny do spustitelných souborů
- –disable-spinlocks nepoužívejte spinlocky
- –enable-debug sestavení se symboly ladění (-g)
- –enable-profiling sestavení s povoleným profilováním
- –enable-dtrace sestavení s podporou DTrace
- –enable-depend zapnout automatické sledování závislostí
- –enable-cassert povolit kontroly výrazů (pro ladění)
- –enable-thread-safety , aby byly klientské knihovny bezpečné pro vlákna
- –enable-thread-safety-force vynutit bezpečnost vlákna navzdory selhání testu vlákna
- –disable-largefile vynechat podporu velkých souborů
- –with-docdir=DIR nainstalujte dokumentaci do DIR [PREFIX/doc]
- –without-docdir neinstalujte dokumentaci
- –with-includes=DIRS vyhledejte další soubory záhlaví v DIRS
- –with-libraries=DIRS vyhledejte další knihovny v DIRS
- –with-libs=DIRS alternativní hláskování slova –with-libraries
- –with-pgport=PORTNUM změnit výchozí číslo portu [5432]
- –with-tcl sestavení modulů Tcl (PL/Tcl)
- –with-tclconfig=DIR tclConfig.sh je v adresáři
- –with-perl sestavení modulů Perl (PL/Perl)
- –with-python vytváření modulů Python (PL/Python)
- –with-gssapi sestavení s podporou GSSAPI
- – with-krb5 sestavení s podporou Kerberos 5
- –with-krb-srvnam=NAME výchozí hlavní název služby v Kerberos [postgres]
- –s-pam sestavení s podporou PAM
- –with-ldap sestavení s podporou LDAP
- – with-bonjour sestavení s podporou Bonjour
- –with-openssl sestavení s podporou OpenSSL
- –without-readline nepoužívejte k úpravám GNU Readline ani BSD Libedit
- –with-libedit-preferred preferuje BSD Libedit před GNU Readline
- –with-ossp-uuid při vytváření contrib/uuid-ossp použít knihovnu OSSP UUID
- –with-libxml sestavení s podporou XML
- –with-libxslt používat podporu XSLT při vytváření contrib/xml2
- –with-system-tzdata=DIR použije v adresáři data systémového časového pásma
- –without-zlib nepoužívejte Zlib
- –with-gnu-ld předpokládejme, že kompilátor C používá GNU ld [default=no]
Instalační problém PostgreSQL 1:
Při provádění ./configure během instalace postgreSQL se můžete setkat s následující chybovou zprávou.
# ./configure checking for -lreadline... no checking for -ledit... no configure: error: readline library not found If you have readline already installed, see config.log for details on the failure. It is possible the compiler isn't looking in the proper directory. Use --without-readline to disable readline support.
Instalační řešení PostgreSQL1:
Výše uvedený problém vyřešíte instalací readline-devel a libtermcap-devel.
# rpm -ivh libtermcap-devel-2.0.8-46.1.i386.rpm readline-devel-5.1-1.1.i386.rpm warning: libtermcap-devel-2.0.8-46.1.i386.rpm: Header V3 DSA signature: NOKEY, key ID 1e5e0159 Preparing... ########################################### [100%] 1:libtermcap-devel ########################################### [ 50%] 2:readline-devel ########################################### [100%]
Krok 3:Ověřte strukturu adresářů postgreSQL
Po instalaci se ujistěte, že adresáře bin, doc, include, lib, man a share jsou vytvořeny ve výchozím adresáři /usr/local/pgsql, jak je uvedeno níže.
# ls -l /usr/local/pgsql/ total 24 drwxr-xr-x 2 root root 4096 Apr 8 23:25 bin drwxr-xr-x 3 root root 4096 Apr 8 23:25 doc drwxr-xr-x 6 root root 4096 Apr 8 23:25 include drwxr-xr-x 3 root root 4096 Apr 8 23:25 lib drwxr-xr-x 4 root root 4096 Apr 8 23:25 man drwxr-xr-x 5 root root 4096 Apr 8 23:25 share
Krok 4:Vytvořte uživatelský účet postgreSQL
# adduser postgres # passwd postgres Changing password for user postgres. New UNIX password: Retype new UNIX password: passwd: all authentication tokens updated successfully.
Krok 5:Vytvořte datový adresář postgreSQL
Vytvořte datový adresář postgres a nastavte uživatele postgres jako vlastníka.
# mkdir /usr/local/pgsql/data # chown postgres:postgres /usr/local/pgsql/data # ls -ld /usr/local/pgsql/data drwxr-xr-x 2 postgres postgres 4096 Apr 8 23:26 /usr/local/pgsql/data
Krok 6:Inicializujte datový adresář postgreSQL
Než začnete vytvářet jakoukoli postgreSQL databázi, měl by být prázdný datový adresář vytvořený ve výše uvedeném kroku inicializován pomocí příkazu initdb, jak je uvedeno níže.
# su - postgres # /usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data/ The files belonging to this database system will be owned by user postgres This user must also own the server process. The database cluster will be initialized with locale en_US.UTF-8. The default database encoding has accordingly been set to UTF8. The default text search configuration will be set to "english". fixing permissions on existing directory /usr/local/pgsql/data ... ok creating subdirectories ... ok selecting default max_connections ... 100 selecting default shared_buffers/max_fsm_pages ... 32MB/204800 creating configuration files ... ok creating template1 database in /usr/local/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/pgsql/bin/postgres -D /usr/local/pgsql/data or /usr/local/pgsql/bin/pg_ctl -D /usr/local/pgsql/data -l logfile start
Krok 7:Ověřte datový adresář postgreSQL
Ujistěte se, že všechny konfigurační soubory postgres DB (například postgresql.conf) jsou vytvořeny v datovém adresáři, jak je uvedeno níže.
$ ls -l /usr/local/pgsql/data total 64 drwx------ 5 postgres postgres 4096 Apr 8 23:29 base drwx------ 2 postgres postgres 4096 Apr 8 23:29 global drwx------ 2 postgres postgres 4096 Apr 8 23:29 pg_clog -rw------- 1 postgres postgres 3429 Apr 8 23:29 pg_hba.conf -rw------- 1 postgres postgres 1460 Apr 8 23:29 pg_ident.conf drwx------ 4 postgres postgres 4096 Apr 8 23:29 pg_multixact drwx------ 2 postgres postgres 4096 Apr 8 23:29 pg_subtrans drwx------ 2 postgres postgres 4096 Apr 8 23:29 pg_tblspc drwx------ 2 postgres postgres 4096 Apr 8 23:29 pg_twophase -rw------- 1 postgres postgres 4 Apr 8 23:29 PG_VERSION drwx------ 3 postgres postgres 4096 Apr 8 23:29 pg_xlog -rw------- 1 postgres postgres 16592 Apr 8 23:29 postgresql.conf
Krok 8:Spusťte databázi postgreSQL
Pomocí příkazu postgres postmaster spusťte server postgreSQL na pozadí, jak je znázorněno níže.
$ /usr/local/pgsql/bin/postmaster -D /usr/local/pgsql/data >logfile 2>&1 & [1] 2222 $ cat logfile LOG: database system was shut down at 2009-04-08 23:29:50 PDT LOG: autovacuum launcher started LOG: database system is ready to accept connections
Krok 9:Vytvořte postgreSQL DB a otestujte instalaci
Vytvořte testovací databázi a připojte se k ní, abyste se ujistili, že instalace proběhla úspěšně, jak je uvedeno níže. Jakmile začnete databázi používat, často zálohujte, jak je uvedeno v článku o zálohování a obnově PostgreSQL.
$ /usr/local/pgsql/bin/createdb test $ /usr/local/pgsql/bin/psql test Welcome to psql 8.3.7, 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 test=#