PostgreSQL in the core
About
Postgres native support was added in FreeSWITCH 1.2.5.
Click here to expand Table of Contents
- 1 Dependencies
- 2 CentOS
- 3 Debian
- 4 Configure
- 5 conf/autoload_configs/switch.conf.xml
- 6 Database Tables
Dependencies
libpq and the associated dev packages are required
CentOS
yum install libpq-devel
Debian
sudo apt-get install libpq-dev
Configure
If you have installed a later version of PostgreSQL from a source other then your distro's repositories, and its installed to a non-standard location such as /usr/pgsql-9.5 you will need to adjust your PATH and/or PKG_CONFIG_PATH environment variables to properly locate either pg_config or libpq.pc
export PKG_CONFIG_PATH=/usr/pgsql-9.5/lib/pkgconfig
export PATH=/usr/pgsql-9.3/bin:$PATH
./configure --enable-core-pgsql-support
Adjust your PKG_CONFIG_PATH and PATH as required for your platform.
conf/autoload_configs/switch.conf.xml
<!-- to use a numeric IP address (no DNS names!): -->
<param name="core-db-dsn" value="pgsql://hostaddr=127.0.0.1 dbname=freeswitch user=freeswitch password='' options='-c client_min_messages=NOTICE' application_name='freeswitch'" />
<!-- OR to use a resolvable DNS hostname (not a numeric i.p. address): -->
<param name="core-db-dsn" value="pgsql://host=localhost dbname=freeswitch user=freeswitch password='' options='-c client_min_messages=NOTICE' application_name='freeswitch'" />
<!-- to disable SSL encyption need to add sslmode=disable -->
<param name="core-db-dsn" value="pgsql://host=localhost dbname=freeswitch user=freeswitch password='' options='-c client_min_messages=NOTICE' application_name='freeswitch' sslmode=disable" />
host vs hostaddr
'hostaddr' ONLY takes a numeric ip address and will not resolve a hostname. Use 'host' for a DNS hostname. If you specify both 'host' and 'hostaddr' settings, 'hostaddr' takes precedence.
PostgreSQL
For PostgreSQL, FS strips the 'pgsql://' from the DSN and passes the remainder of the string directly to libpq's PQconnectdb() for connection to the database. See the libpq docs for further information on creating a proper connections string.
Database Tables
Once you have PostgreSQL configured in the core, you can connect to the database and ensure you have tables, like the following.
PostgreSQL tables
freeswitch=# \dt
List of relations
Schema | Name | Type | Owner
--------+---------------+-------+------------
public | aliases | table | freeswitch
public | calls | table | freeswitch
public | channels | table | freeswitch
public | complete | table | freeswitch
public | interfaces | table | freeswitch
public | nat | table | freeswitch
public | recovery | table | freeswitch
public | registrations | table | freeswitch
public | tasks | table | freeswitch
(9 rows)