当前位置:操作系统 > Unix/Linux >>

第十章LinuxPostgreSQLDatabase服务器(一)

概述

  注意事项

  软件包的来源

  安装软件包需要注意的问题

  编译和安装

  编译和优化

  用postgres数据库超级用户完成数据库的安装

  清除不必要的文件

  配置

  配置“/etc/rc.d/init.d/postgresql”脚本文件

  概述

  PostgreSQL最早是由UC Berkley大学计算机系开发的,它的许多先进的“对象-关系”概念现在已经在一些商业数据库里得到应用。 PostgreSQL支持SQL92/SQL3,事务完整性和可扩展性。它现在是一个源于Berkley代码并公开源代码的数据库。

  注意事项

  下面所有的命令都是Unix兼容的命令。

  源路径都为“/var/tmp”(当然在实际情况中也可以用其它路径)。

  安装在RedHat Linux 6.1下测试通过。

  要用“root”用户进行安装。

  PostgreSQL的版本是6_5_3。

  而且一定要先安装egcs-c++-1.1.2-24.i386.rpm软件包。

  软件包的来源

  PostgreSQL的主页:http://www.postgresql.org/。

  必须确保下载:postgresql-6_5_3_tar.gz。

  安装软件包需要注意的问题

  在安装PostgreSQL前后保存一下文件列表对你也许是一个好主意,而后用diff比较一下两个文件列表从而找出PostgreSQL的文件被安装到哪里去了,方法是在安装PostgreSQL之前运行一下“find /* > sql1”,而在安装PostgreSQL服务之后运行 “find /* > sql2”,接着执行命令“diff sql1 sql2 > sql”从而得到安装文件列表。

  编译和安装

  把软件包(tar.gz)解压缩:

  [root@deep]# cp postgresql-version_tar.gz /var/tmp

  [root@deep]# cd /var/tmp

  [root@deep]# tar xzpf postgresql-version_tar.gz

  编译和优化

  第一步:

  首先,创建postgres这个数据库超级用户(你也可以用别的名字,不过通常就用这个)。命令为:

  [root@deep]# useradd -M -o -r -d /var/lib/pgsql -s /bin/bash -c "PostgreSQL Server" -u 40

  postgres >/dev/null 2>&1 || :

  注意:2>&1 是把stderr输出到 stdout上。

  第二步:

  在编译PostgreSQL之前。首先看一下“egcs-c++-1.1.2-24.i386.rpm”是不是已经安装。没有的话,那就赶紧装吧。“egcs-c++-1.1.2-24.i386.rpm”直接可从Redhat的光盘里获得,在“RedHat/RPMS”下。

  验证egcs-c++-1.1.2-24.i386.rpm是否安装,用命令:

  [root@deep]# rpm -q egcs-c++

  安装egcs-c++-1.1.2-24.i386.rpm,用命令:

  [root@deep]# rpm -Uvh egcs-c++-1.1.2-24.i386.rpm

  第三步:

  进入到PostgreSQL的源代码的目录:

  [root@deep]# cd src

  设置编译参数:

  CC="egcs"

  ./configure

  --prefix=/usr

  --enable-locale

  这些编译参数告诉编译器如何编译PostgreSQL:

  l 使“locale”有效

  编辑Makefile.global(vi +210 Makefile.global),并做如下改变:

  CFLAGS= -I$(SRCDIR)/include -I$(SRCDIR)/backend

  改为:

  CFLAGS= -I$(SRCDIR)/include -I$(SRCDIR)/backend -O9 -funroll-loops -ffast-math -malign-double -mcpu=

  pentiumpro -march=pentiumpro -fomit-frame-pointer -fno-exceptions

  这是对PostgreSQL的一些优化设置。当然,你要根据自己的实际情况改变它。

  运行下面的命令:

  [root@deep]# make all

  [root@deep]# cd ..

  [root@deep]# make -C src install

  [root@deep]# make -C src/man install

  [root@deep]# mkdir -p /usr/include/pgsql

  [root@deep]# mv /usr/include/access /usr/include/pgsql/

  [root@deep]# mv /usr/include/commands /usr/include/pgsql/

  [root@deep]# mv /usr/include/executor /usr/include/pgsql/

  [root@deep]# mv /usr/include/lib /usr/include/pgsql/

  [root@deep]# mv /usr/include/libpq /usr/include/pgsql/

  [root@deep]# mv /usr/include/libpq++ /usr/include/pgsql/

  [root@deep]# mv /usr/include/port /usr/include/pgsql/

  [root@deep]# mv /usr/include/utils /usr/include/pgsql/

  [root@deep]# mv /usr/include/fmgr.h /usr/include/pgsql/

  [root@deep]# mv /usr/include/os.h /usr/include/pgsql/

  [root@deep]# mv /usr/include/config.h /usr/include/pgsql/

  [root@deep]# mv /usr/include/c.h /usr/include/pgsql/

  [root@deep]# mv /usr/include/postgres.h /usr/include/pgsql/

  [root@deep]# mv /usr/include/postgres_ext.h /usr/include/pgsql/

  [root@deep]# mv /usr/include/libpq-fe.h /usr/include/pgsql/

  [root@deep]# mv /usr/include/libpq-int.h /usr/include/pgsql/

  [root@deep]# mv /usr/include/ecpgerrno.h /usr/include/pgsql/

  [root@deep]# mv /usr/include/ecpglib.h /usr/include/pgsql/

  [root@deep]# mv /usr/include/ecpgtype.h /usr/include/pgsql/

  [root@deep]# mv /usr/include/sqlca.h /usr/include/pgsql/

  [root@deep]# mv /usr/include/libpq++.H /usr/include/pgsql/

  [root@deep]# mkdir -p /usr/lib/pgsql

  [root@deep]# mv /usr/lib/*source /usr/lib/pgsql/

  [root@deep]# mv /usr/lib/*sample /usr/lib/pgsql/

  [root@deep]# mkdir -p /var/lib/pgsql

  [root@deep]# chown -R postgres.postgres /var/lib/pgsql/

  [root@deep]# chmod 755 /usr/lib/libpq.so.2.0

  [root@deep]# chmod 755 /usr/lib/libecpg.so.3.0.0

  [root@deep]# chmod 755 /usr/lib/libpq++.so.3.0

  [root@deep]# strip /usr/bin/postgres

  [root@deep]# strip /usr/bin/postmaster

  [root@deep]# strip /usr/bin/ecpg

  [root@deep]# strip /usr/bin/pg_id

  [root@deep]# strip /usr/bin/pg_version

  [root@deep]# strip /usr/bin/pg_dump

  [root@deep]# strip /usr/bin/pg_passwd

  [root@deep]# strip /usr/bin/psql

  [root@deep]# rm -f /usr/lib/global1.description

  [root@deep]# rm -f /usr/lib/local1_template1.description

  对上面命令的解释如下:

  “make”命令把所有的原程序编译并产生可执行程序。然后用 “make install”把可执行文件和另外一些需要的文件安装到系统。用 “mkdir”在“/usr/include”和“/usr/lib”下各产生产生“pgsql”的目录。然后用mv把所有在 “/usr/include”和“/usr/lib”下和PostgreSQL相关的文件和目录分别全部移到“/usr/include/pgsql”和 “/usr/lib/pgsql”下。

  “chown”命令是用来设置“/var/lib/pgsql”目录的正确的权限。“strip”命令将去掉指定文件的一些符号标记比如调试信息等,这样文件会变小一点。这可以提高可执行文件一点速度。

  “rm”命令去掉一些PostgreSQL不需要的文件。

  用postgres数据库超级用户完成数据库的安装

  [root@deep]# su postgres

  [postgres@deep]# initdb --pglib=/usr/lib/pgsql --pgdata=/var/lib/pgsql

  We are initializing the database system with username postgres (uid=40).

  This user will own all the files and must also own the server process.

  Creating Postgres database system directory /var/lib/pgsql/base

  Creating template database in /var/lib/pgsql/base/template1

  Creating global classes in /var/lib/pgsql/base

  Adding template1 database to pg_database...

  Vacuuming template1

  Creating public pg_user view

  Creating view pg_rules

  Creating view pg_views

  Creating view pg_tables

  Creating view pg_indexes

  Loading pg_description

  [postgres@deep]# chmod 640 /var/lib/pgsql/pg_pwd

  [postgres@deep]# exit

  注意:不要用“root”用户安装数据库。这样会有很严重的安全问题。

  清除不必要的文件

  [root@deep]# cd /var/tmp

  [root@deep]# rm -rf postgresql-version/ postgresql-version_tar.gz

  卸掉“egcs-c++-1.1.2-24.i386.rpm”包以节省空间:

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,