http://www.postgresonline.com/journal/archives/362-An-almost-idiots-guide-to-install-PostgreSQL-9.5,-PostGIS-2.2-and-pgRouting-2.1.0-with-Yum.html
一、源码安装PostgreSql
1、检查gcc版本
Shell代码
gmake --version
GNU make版本3.80以上。
删除系统默认安装
yum remove postgresql -y
安装依赖
yum -y install readline-devel readline -y
2、下载源码
下载地址:http://www.postgresql.org/ftp/source/
选择版本,下载。
3、解压
Shell代码
gunzip postgresql-9.3.4.tar.gz
tar xf postgresql-9.3.4.tar
4、编译安装
Shell代码
./configure --prefix=/usr/local/postgres --with-libxml --with-libxslt
Shell代码
make
要安装PostGIS需要安装PostgreSql的一些额外包,所以需要编译所有内容。
Shell代码
make install
安装所有内容。
二、配置
1、添加用户
PostgreSql默认不能用root启动,所以需要添加用户
Shell代码
root# adduser postgres
2、设置环境变量
Shell代码
root# vi /etc/profile
添加:
Shell代码
LD_LIBRARY_PATH=/usr/local/pgsql/lib
export LD_LIBRARY_PATH
PATH=/usr/local/pgsql/bin:$PATH
export PATH
保存profile文件。
Shell代码
source /etc/profile
使环境变量生效。
三、初始化数据库
1、创建数据库目录,给postgres用户权限。
Shell代码
su root
mkdir /usr/local/pgsql/data
chown postgres /usr/local/pgsql/data
2、初始化数据库 Shell代码
root# su postgres
postgres$ initdb -E UTF8 -D /usr/local/pgsql/data
如果只有一个存储目录,可以设到环境变量中
export PGDATA=/usr/local/pgsql/data
如果initdb提示编码冲突,可以通过下面的命令修改服务器字符集
Shell代码
export LC_ALL="UTF8"
export LANG="UTF8"
现在如果启动数据库,本机就可以访问数据库了。
四、设置网络连接
1、配置监听IP
Shell代码
vi /usr/local/pgsql/data/postgresql.conf
其中listen_addresses行修改为:listen_addresses = '*'
这样允许所有ip。
2、设置允许连接地址
Shell代码
vi /usr/local/pgsql/data/pg_hba.cnf
添加一个局域网连接许可
host all all 192.168.0.0/16 md5
#允许所有ip的连接
#host all all 0.0.0.0/0 md5
具体设置可参见:http://www.postgresql.org/docs/9.3/static/auth-pg-hba-conf.html
3、修改iptables
如果iptables有限制的话,需要放开postgres的连接端口
Shell代码
service iptables start
iptables -I INPUT 7 -p tcp --dport 5432:5438 -j ACCEPT
service iptables save
service iptables restart
五、启动关闭
1、启动数据库
Shell代码
pg_ctl start -l logfile
开机启动:在/etc/rc.local中加
su postgres -c '/usr/local/pgsql/bin/pg_ctl start -D /usr/local/pgsql/data -l /usr/local/pgsql/data/serverlog'
2、关闭数据库
Shell代码
pg_ctl stop -m f
3、查看运行状态
Shell代码
pg_ctl status
六、数据库中创建用户
su postgres
psql -d postgres #-d是连接数据库的名称,默认是postgres,所以这里只需要psql就可以。
CREATE ROLE root WITH LOGIN PASSWORD 'a123456' [CREATEDB|SUPERUSER];
查看用户
select * from pg_roles;
查看数据库
select datname from pg_database;
七、安装PostGis的前提库
需要前提安装Proj、GEOS、LibXML2、JSON-C、GDAL
如果系统中没有安装则安装。
1、Proj (下载路径 http://download.osgeo.org/proj/)
Shell代码
tar xzvf proj-4.7.0.tar.gz
cd proj-4.7.0
./configure --prefix=/usr/local/proj/
make
make install
2、geos(下载路径 http://trac.osgeo.org/geos/)
Shell代码
tar jxvf geos-3.4.2.tar.bz2
cd geos-3.4.2 --prefix=/usr/local/geos/
./configure
make
make install
3、libxml2 (yum安装即可)
Shell代码
tar xzvf libxml2-2.9.0.tar.gz
cd libxml2-2.9.0
./configure
make
make install
如果在libxml2的configure中出现的错误:cannot remove 'libtoolT':No such file or directory
解决方法:
修改configure文件
$vim configure
删除这一行:$RM "$cfgfile"
保存再运行 ./configure
安装默认路径/usr/local
安装后可能需要重新定义:
export LD_LIBRARY_PATH=/usr/local/lib
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig
4、json-c (下载路径 http://pkgs.fedoraproject.org/repo/pkgs/json-c/)
Shell代码
tar xzvf json-c-json-c-0.11-20130402.tar.gz
cd ./json-c-json-c-0.11-20130402
./configure --prefix=/usr/local/json-c/
make
make install
5、GDAL (下载路径 http://download.osgeo.org/gdal/)
Shell代码
tar xzvf gdal-1.9.2.tar.gz
cd gdal-1.9.2
./configure --prefix=/usr/local/gdal/
make
make install
八、安装PostGis
Shell代码
tar zxvf postgis-2.1.2.tar.gz
cd postgis-2.1.2
./configure --with-pgconfig=/usr/local/postgresql/bin/pg_config --with-geosconfig=/usr/local/geos/bin/geos-config --with-projdir=/usr/local/proj/ --with-gdalconfig=/usr/local/gdal/bin/gdal-config --with-jsondir=/usr/local/json-c/
make
make install
到postgresql源码包contrib/fuzzystrmatch下
make && make install
九、检查postgis安装是否正确
连接数据库执行:
select * from pg_available_extensions where name like 'postgis%';
有以上3条就说明PostGis安装成功了。
十、为数据库增加PostGis插件
CREATE EXTENSION fuzzystrmatch;
CREATE EXTENSION postgis_tiger_geocoder;
CREATE EXTENSION postgis;
psql -d [yourdatabase] -c "CREATE EXTENSION postgis_topology;
安装客户端插件(不必须):
psql -p 5432 -c "CREATE EXTENSION adminpack;"
十一、简单备份
备份
pg_dump dbname | gzip > filename.gz
还原
gunzip -c filename.gz | psql dbname
或者
cat filename.gz | gunzip | psql dbname
分文件备份
pg_dump dbname | split -b 1m - filename
还原
cat filename* | psql dbname
图形界面管理工具pgadmin
http://www.postgresql.org/ftp/pgadmin3/release/v1.22.1/win32/
http://blog.chinaunix.net/uid-7591044-id-1742988.html
http://blog.itpub.net/10037372/viewspace-1630742/