Chinaunix首页 | 论坛 | 博客
  • 博客访问: 444767
  • 博文数量: 403
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: -70
  • 用 户 组: 普通用户
  • 注册时间: 2016-09-05 12:45
文章分类

全部博文(403)

文章存档

2014年(3)

2013年(1)

2012年(3)

2011年(21)

2010年(13)

2009年(64)

2008年(9)

2007年(36)

2006年(253)

分类:

2006-08-01 14:15:03

新版源码安装配置使用Postgresql8.1.3+PostGIS1.1.2

   原来写的里面小错误太多,这次做了一些订正,但想必仍然留下不少错误。
   希望斑竹把旧版的删除。(20060425)


   我一向使用的Linux发行版是Debian,为的使贪图Debian安装软件的方便,但是为了使用Postgresql+PostGIS,我不得不使用源码来安装,因为在Debian的中:
     Sarge: 只有Postgresql7.4
     Etch: 有Postgresql7.4和8
     Sid: 有Postgresql7.4和8;PostGIS是有for postgresql7.4的,而且我安装也失败,原因可能是apt源本身的问题。
 
   使用源码来安装,不仅可以使用这些软件的最新版本,而且可以帮助自己更好地理解、更好地控制这些软件。

   以下过程可以应用于各种Linux发行版而不只是Debian。

   当然,过程麻烦一点,也不太适合于新手。

 
一 安装Postgresql8.1.3

1 下载源码。

2 解压。

3 配置,进入解压目录后可以用./configure –help来查看可用的参数。我使用的是:

   # ./configure --prefix=/opt/pg --without-readline  --without-zlib

前一个参数是把循照惯例把自己的软件安装到/opt目录下,后面两个参数是因为我的系统里没有安装readline和zlib,其实安装一下就可以了。
 
   在Debian中这样可以去掉后面的两个--without参数:
   # apt-get install libreadline5-dev zlib1g-dev
  解决在Sarge安装postgresql时,configure出现的问题。

4 编译后并安装:

  # make

  # make install

5 增加Postgresql数据库的最高用户postgres并设置密码:

  # adduser postgres
  # mkdir /opt/pg/data
  # chown postgres /opt/pg/data

最好再这样:
  # chown -R postgres /opt/pg  

6 以用户postgres登陆:

  # su – postgres
 
 

7 初始化数据库:
    $ /opt/pg/bin/initdb -D /opt/pg/data

8 运行数据库服务器:

  $ /opt/pg/bin/postmaster -D /opt/pg/data>logfile 2>&1 &

9 创建一个数据库:

  $ /opt/pg/bin/createdb test

10 在本机上运行客户端进行管理:

  $ /opt/pg/bin/psql test

    这就要求你对基础的sql语法要熟悉了。

 

    到这里Postgresql就算安装完成了。但是为了能远程使用该数据库---比如说我要在网络上另外一台Windows电脑上使用pgAdmin来管理使用该Postgresql服务器---则还需要进行一些修改,这些修改主要包括两方面的修改,一是修改Postgresql的两个配置文件,二是修改数据库的一些用户权限:

11 修改Postgresql的配置文件Postgresql.conf,该文件在数据目录/opt/pg/data下,将其中的一句:

listen_address=’localhost’

前面的注释去掉,并把’localhost’该为’*’。

 

12修改Postgresql的配置文件pg_hba.conf,该文件在数据目录/opt/pg/data下,在文件后面加一句:

host   all all  192.168.0.0/24   password

这句的意思是:同网络中192.168.0.*的机器可以以密码的形式使用所有的数据库。更具体的参数意义直接看该配置文件中的注释就可以了。

这里一定要配置正确,否则无法在远程连接postgresql数据库。

 

13 重新启动postgresql服务器:

 $ /opt/pg/bin/pg_ctl stop -D /opt/pg/data

  停止原来的服务器

 $  $ /opt/pg/bin/postmaster –i -D /opt/pg/data >logfile 2>&1 &

  再次启动,加一个-I参数

 

14 一些数据库用户权限的简单配置,以下是在psql中使用

# create userwen1 password ‘123456’;

 创建一个用户并设置密码

# createdatabase data1 owner wen1;

  创建一个数据库

# create tablewen11(name varcha(10))

  创建一个数据表

# alter table  wen11 owner to  wen1;

  修改数据表的属主。

  现在可以在局域网内的其他电脑使用其他postgresql客户端工具,以用户名wen1打开data1数据库了。

 

还需要改进的一些问题:

1 中文支持的问题:使用encoding=’UTF-8’创建数据库好不好?

2 系统启动时自动启动postgresql的问题:完全可以参考Debian的相应启动脚本。

 
二  phppgadmin的安装配置(可选的过程)
 
      为了管理配置我的数据库服务器,对于我这样的postgresql生手,需要一个方便的管理程序。这样的管理工具很多,考虑自己以前使用mysql有一个便利的phpmyadmin,我选择了phppgadmin。   phpPgAdmin是一个充分地功能基于互联网的postgresql管理实用程序。它处理所有基本的功能并且某个先进的功能譬如触发器, 视图等,是一个基于B/S模式的管理软件,必须安装在服务器端。
 
    具体的安装过程为:
    1 下载源码,现在的最新版本为4.0.1
           # cd
           # wget
       2 解压:
      # tar zxvf phpPgAdmin-4.0.1.tar.gz
       3 检查系统是否已经安装好apache+php以及php对postgresql的支持,如果没有,以下为安装:
      # apt-get install apache php4 php4-pgsql
          注意修改apache的配置文件以使apache支持php。
    4 使phpPgAdmin在客户端可用,我一般是在apapche目录下建立符号连接:
      # ln -s /root/phpPgAdmin-4.0.1 /var/www/pgadmin
       5 修改phpPgAdmin的配置文件 config/config.inc.php,其中必须要修改的参数有:
      $conf['servers'][0]['host']='localhost';
           标明数据库服务器在本机
           $conf ['extra_security'] = false;
           允许使用postgres帐号登陆。
    6 在客户端使用浏览器,输入地址:
     
          就可以进行postgresql数据库的管理了。


三 安装postgis

  1 最好先安装proj4和OGR,我偷懒没有安装,应该只是性能上打折扣吧,并不影响安装使用。
   Debian下可以这样:安装postgis的时候,先:
    #apt-get install proj libgeos libgeos-dev

  2 下载源码。

  3 解压进入目录。

  4 配置:

# ./configure --prefix=/opt/postgis --with-pgsql=/opt/pg/bin/pg_config

意思很明显

  5 编译、安装:

# make

# make install

  6 之后的一些工作:

   $ /opt/pg/bin/createdb data1

$ /opt/pg/bin/createlang plpgsql data1

$ /opt/pg/bin/psql-d data1 -f  lwpostgis.sql

$ /opt/pg/bin/psql-d data1 -f spatial_ref_sys.sql

注意找到并进入包含后面那两个sql文件的目录再进去执行。

 
下面可以使用postgis了,先试试Postgis提供那两个转换shape文件和postgis数据的小程序吧。


四 PostGIS的初步使用

    网络上关于PostGIS的使用的文章不多,而且说得不够详细,今天经过一番摸索,得到一些基本应用的经验,希望能减少一些大家入门的周折。

    以下假设我要把一个test.shp文件(实际上完整的应包含三个文件)的数据导入到Postgresql数据库data1中的test数据表,为了安全起见,数据库Data1及相关的数据表的属主都设置为wen1,然后在GIS客户端如QGIS uDig等使用这个PostGIS数据。详细的过程为;

   1 假设PostGreSQL数据库服务器和PostGIS都安装好。(见另文"源码安装Postgresql8.1.3+PostGIS1.1.2")
   2 以数据库的超级用户postgres进入psql:
     # /opt/pg/bin/psql         (注意路径)
     以下的操作都是在psql控制台。
   3 基本设置:
    # create user wen1 password ‘123456’;        创建一个用户并设置密码
    # create database data1 owner wen1;            创建一个数据库
    # alter table spatial_ref_sys owner to  wen1;
    # alter table geometry_columns owner to wen1 ;  这两句修改两个postgis相关的表的属主为wen1,很重要,一般文章中似乎没提到这两点。
   4 数据转换,以下工作退出psql,在shell界面进行。
     先把三个test.shp文件复制到/opt/postgis/bin目录下并转到该目录下,注意路径,注意目录和文件的权限---也许退出postgres用户到root用户简单一些。
     # /opt/postgis/bin/shp2pgsql test test data1 > test.sql
     # /opt/pg/bin/psql -d data1 -f test.sql
     注意参数都要写对,不明白的话一定要用--help参数查看。
   5 在客户机器上打开QGIS,依次选择"图层"-->"添加PostGIS图层"-->"新建",然后设置好正确的服务器IP,数据库名data1,用户wen1及密码,再点击"连接",然后下方会出现test图层的名字,选择就可以了。
    uDig的使用也大同小异。

    一点体会:
    1 要先弄懂PostgreSQL的使用,尤其是各种权限的概念和关系,这是一般从Windows下转移来的人很缺乏的。
    2 最好选择一个好的PostgreSQL客户端工具来帮助调试,推荐使用PgAdmin。
 
 
 
 
 
 
 
非常谢谢WEN老师的手记,非常的详尽!我按照老师的步骤配置的一下,由于对SQL语法不熟悉,所以后半部份暂时还没有配置好, 前期的配置中,在初始化数据库的时候出现如下问题:
使用/opt/pg/bin/initdb -D /opt/pg/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 zh_CN.GB18030.
initdb: could not find suitable encoding for locale "zh_CN.GB18030"
Rerun initdb with the -E option.
Try "initdb --help" for more information.

使用/opt/pg/bin/initdb -E /opt/pg/data 时:
nitdb: no data directory specified
You must identify the directory where the data for this database system
will reside.  Do this with either the invocation option -D or the
environment variable PGDATA.
感觉好像是字符基的问题后通过使用/opt/pg/bin/initdb -D /opt/pg/date -E EUC_CN 编译通过,不知道WEN老师是否遇到同样的 问题,我这种方式正确于否?
阅读(1642) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~