本文介绍Linux环境下从源码安装PostgreSQL。

一,编译安装

从官网下载源码,并解压,这里假设加压后的目录为postgresql-9.3.5/,进入到源码目录,执行如下命令:

./configure
make
make install

这样便完成了编译安装。一般可能会遇到如下一些问题: 执行./configure时提示"libreadline"库和"zlib"库找不到。

这是因为默认情况下,PostgreSQL的安装时依赖这两个库的。这个时候有两种选择,第一种自然是先安装这两个库,比如Ubuntu下可以使用如下命令安装:sudo apt-get install libreadline-dev zlib1g-dev 。第二种方案是不使用这两个库,当然这只会给我们后面的使用带来一些不方便,但是并不会影响什么。这个时候,我们只需要将./configure 改为./configure --without-readline --without-zlib 即可。

当然,configure还有很多参数,可以通过./configure --help 去查看,比如指定PostgreSQL的安装目录,默认安装在/usr/local/pgsql 目录下。

二,必要的系统设置

1,创建用户

因为PostgreSQL必须由非root用户使用,所以我们一般还需要再创建一个普通用户。好的习惯是专门创建一个系统用户作为PostgreSQL的账户,这里我们创建一个名为postgres的系统账户:sudo adduser postgres 。

当然,要想postgres这个用户可以使用数据库,必须可以访问数据库安装目录。如果没有改默认设置的话,那就是说,postgres必须是可以访问/usr/local/pgsql 目录的。一般这个目录的权限是755,是可以访问的。

2,设置环境变量

和PostgreSQL相关的有2个比较重要的环境变量:PATH 和PGDATA 。PATH很容易理解,设置了以后,我们就可以不必每次都是用绝对路径去访问PostgreSQL的命令。而PGDATA这个变量是用于设置数据库数据路径的,以后所有和数据库有关的数据都会存在这个环境变量指定的目录下。当然,很多情况下,这个目录都可以在使用的时候加参数指定,但是写到环境变量里面就可以一劳永逸了。比如,我的环境变量设置如下(在.bashrc 文件里面):

export PGDATA=/home/allan/workspace/data
export PATH=${PATH}:/usr/local/pgsql/bin

需要注意的是,PGDATA指向的目录必须满足以下几个条件:

  1. postgres(或者你使用的数据库账户,我使用的是allan这个账户)用户必须对该目录具有写权限。
  2. 该目录必须是空目录或者不存在(如果不存在,使用的时候程序就会自动创建)。
  3. 该目录权限为700.即同组和其他用户对数据目录没有任何权限。我想这应该是从数据库的安全角度去考虑的。

三,初始化

有了用户,有了对应的环境变量,我们就可以使用PostgreSQL的initdb 命令来初始化数据库了。这个命令可以加一些参数,这里就先不详细介绍了。如果前面没有设置PGDATA环境变量的话,这里就需要加上-D 参数,指定数据库数据目录。

如果initdb成功的话,我们在PGDATA目录下就可以看到生成了一些文件。如果使用pg_ctl start 命令可以成功启动数据库的话(可以通过ps -ef | grep postgres 查看),那就说明PostgreSQL数据库就算安装成功了。

从源码安装PostgreSQL相对来说还是比较简单的,不过可能会因为系统环境的问题,遇到一些困难,但通过查看文档,一般都可以解决。至于数据库的使用,后续再介绍。