You are here
Installation & Initialization of PostGIS
Distribution: CentOS 6.x / RHEL 6.x
If you already have a current version of PostgreSQL server installed on your server from the PGDG repository you should skip these first two steps.
Enable PGDG repository
curl -O http://yum.postgresql.org/9.3/redhat/rhel-6-x86_64/pgdg-centos93-9.3-1.noarch.rpm rpm -ivh pgdg-centos93-9.3-1.noarch.rpm
Disable all PostgreSQL packages from the distribution repositories. This involves editing the /etc/yum.repos.d/CentOS-Base.repo file. Add the line "exclude=postgresql*" to both the "[base]" and "[updates]" stanzas. If you skip this step everything will appear to work - but in the future a yum update may break your system.
Install PostrgreSQL Server
yum install postgresql93-server
Once installed you need to initialize and start the PostgreSQL instance
service postgresql-9.3 initdb service postgresql-9.3 start
If you wish the PostgreSQL instance to start with the system at book use chkconfig to enable it for the current runlevel.
chkconfig postgresql-9.3 on
The default data directory for this instance of PostgreSQL will be "/var/lib/pgsql/9.3/data". Note: that this path is versioned - this prevents the installation of a downlevel or uplevel PostgreSQL package destroying your database if you do so accidentally or forget to follow the appropriate version migration procedures. Most documentation will assume a data directory like "/var/lib/postgresql" [notably unversioned]; simply keep in mind that you always need to contextualize the paths used in documentation to your site's packaging and provisioning. Enable EPEL Repository
The EPEL repository provides a variety of the dependencies of the PostGIS packages provided by the PGDG repository.
curl -O http://epel.mirror.freedomvoice.com/6/x86_64/epel-release-6-8.noarch.rpm rpm -Uvh epel-release-6-8.noarch.rpm
The PGDG package form PostGIS should now install without errors.
yum install postgis2_93
If you do not have EPEL successfully enables when you attempt to install the PGDG PostGIS packages you will see dependency errors.
--->; Package postgis2_93-client.x86_64 0:2.1.1-1.rhel6 will be installed --> Processing Dependency: libjson.so.0()(64bit) for package: postgis2_93-client-2.1.1-1.rhel6.x86_64 --> Finished Dependency Resolution Error: Package: gdal-libs-1.9.2-4.el6.x86_64 (pgdg93) Requires: libcfitsio.so.0()(64bit) Error: Package: gdal-libs-1.9.2-4.el6.x86_64 (pgdg93) Requires: libspatialite.so.2()(64bit) Error: Package: gdal-libs-1.9.2-4.el6.x86_64 (pgdg93) ...
The template database "template_postgis" is expected to exist by many PostGIS applications; but this database is not created automatically.
su - postgres createdb -E UTF8 -T template0 template_postgis -- ... See the following note about enabling plpgsql ... psql template_postgis psql -d template_postgis -f /usr/pgsql-9.3/share/contrib/postgis-2.1/postgis.sql psql -d template_postgis -f /usr/pgsql-9.3/share/contrib/postgis-2.1/spatial_ref_sys.sql
Using the PGDG packages the PostgreSQL plpgsql embedded language, frequently used to develop stored procedures, is enabled in the template0 database from which the template_postgis database is derived. If you are attempting to use other PostgreSQL packages, or have built PostgreSQL from source [are you crazy?], you will need to ensure that this language is enabled in your template_postgis database before importing the scheme - to do so run the following command immediately after the "createdb" command. If you see the error stating the language is already enabled you are good to go, otherwise you should see a message stating the language was enabled. If creating the language fails for any other reason than already being enabled you must resolve that issue before proceeding to install your GIS applications.
$ createlang -d template_postgis plpgsql createlang: language "plpgsql" is already installed in database "template_postgis"
PostGIS is now enabled in your PostgreSQL instance and you can use and/or develop exciting new GIS & geographic applications.