27.2. 编译和优化

首先,为了避免安全风险,我们将创建一个名为postgres的非特权用户帐户,作为 Postgres 文件的所有者。

  1. 要创建 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. 移动到我们之前解压的新 PostgreSQL 目录,然后移动到名为src的子目录。在您的终端中输入以下命令
                       [root@deep] /# cd /var/tmp/postgresql-6.5.3
                       [root@deep ]/postgresql-6.5.3# cd src
                       CC="egcs" \
                       ./configure \
                       --prefix=/usr \
                       --enable-locale
                     
    这将告诉 PostgreSQL 根据此特定硬件设置进行配置,并具有

    - 启用本地化支持。

  3. 编辑Makefile.global文件,vi +210Makefile.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 服务器的优化标志。当然,您必须根据您的系统和 CPU 架构定制它们。

现在,我们必须在服务器上编译和安装 PostgreSQL
                 [root@deep ]/src# make all
                 [root@deep ]/src# cd ..
                 [root@deep ]/postgresql-6.5.3# make -C src install
                 [root@deep ]/postgresql-6.5.3# make -C src/man install
                 [root@deep ]/postgresql-6.5.3# mkdir -p /usr/include/pgsql
                 [root@deep ]/postgresql-6.5.3# mv /usr/include/access  /usr/include/pgsql/
                 [root@deep ]/postgresql-6.5.3# mv /usr/include/commands  /usr/include/pgsql/
                 [root@deep ]/postgresql-6.5.3# mv /usr/include/executor  /usr/include/pgsql/
                 [root@deep ]/postgresql-6.5.3# mv /usr/include/lib  /usr/include/pgsql/
                 [root@deep ]/postgresql-6.5.3# mv /usr/include/libpq  /usr/include/pgsql/
                 [root@deep ]/postgresql-6.5.3# mv /usr/include/libpq++  /usr/include/pgsql/
                 [root@deep ]/postgresql-6.5.3# mv /usr/include/port  /usr/include/pgsql/
                 [root@deep ]/postgresql-6.5.3# mv /usr/include/utils  /usr/include/pgsql/
                 [root@deep ]/postgresql-6.5.3# mv /usr/include/fmgr.h /usr/include/pgsql/
                 [root@deep ]/postgresql-6.5.3# mv /usr/include/os.h /usr/include/pgsql/
                 [root@deep ]/postgresql-6.5.3# mv /usr/include/config.h /usr/include/pgsql/
                 [root@deep ]/postgresql-6.5.3# mv /usr/include/c.h /usr/include/pgsql/
                 [root@deep ]/postgresql-6.5.3# mv /usr/include/postgres.h /usr/include/pgsql/
                 [root@deep ]/postgresql-6.5.3# mv /usr/include/postgres_ext.h /usr/include/pgsql/
                 [root@deep ]/postgresql-6.5.3# mv /usr/include/libpq-fe.h /usr/include/pgsql/
                 [root@deep ]/postgresql-6.5.3# mv /usr/include/libpq-int.h /usr/include/pgsql/
                 [root@deep ]/postgresql-6.5.3# mv /usr/include/ecpgerrno.h /usr/include/pgsql/
                 [root@deep ]/postgresql-6.5.3# mv /usr/include/ecpglib.h /usr/include/pgsql/
                 [root@deep ]/postgresql-6.5.3# mv /usr/include/ecpgtype.h /usr/include/pgsql/
                 [root@deep ]/postgresql-6.5.3# mv /usr/include/sqlca.h /usr/include/pgsql/
                 [root@deep ]/postgresql-6.5.3# mv /usr/include/libpq++.H /usr/include/pgsql/
                 [root@deep ]/postgresql-6.5.3# mkdir -p /usr/lib/pgsql
                 [root@deep ]/postgresql-6.5.3# mv /usr/lib/*source /usr/lib/pgsql/
                 [root@deep ]/postgresql-6.5.3# mv /usr/lib/*sample /usr/lib/pgsql/
                 [root@deep ]/postgresql-6.5.3# mkdir -p /var/lib/pgsql
                 [root@deep ]/postgresql-6.5.3# chown -R postgres.postgres /var/lib/pgsql/
                 [root@deep ]/postgresql-6.5.3# chmod 755 /usr/lib/libpq.so.2.0
                 [root@deep ]/postgresql-6.5.3# chmod 755 /usr/lib/libecpg.so.3.0.0
                 [root@deep ]/postgresql-6.5.3# chmod 755 /usr/lib/libpq++.so.3.0
                 [root@deep ]/postgresql-6.5.3# strip /usr/bin/postgres
                 [root@deep ]/postgresql-6.5.3# strip /usr/bin/postmaster
                 [root@deep ]/postgresql-6.5.3# strip /usr/bin/ecpg
                 [root@deep ]/postgresql-6.5.3# strip /usr/bin/pg_id
                 [root@deep ]/postgresql-6.5.3# strip /usr/bin/pg_version
                 [root@deep ]/postgresql-6.5.3# strip /usr/bin/pg_dump
                 [root@deep ]/postgresql-6.5.3# strip /usr/bin/pg_passwd
                 [root@deep ]/postgresql-6.5.3# strip /usr/bin/psql
                 [root@deep ]/postgresql-6.5.3# rm -f  /usr/lib/global1.description
                 [root@deep ]/postgresql-6.5.3# rm -f  /usr/lib/local1_template1.description