<term><varname>external_pid_file</varname> (<type>string</type>)
<indexterm>
<primary><varname>external_pid_file</varname> configuration parameter</primary>
</indexterm>
</term>
<listitem>
<para>
Specifies the name of an additional process-ID (PID) file that the
server should create for use by server administration programs.
This parameter can only be set at server start.
</para>
</listitem>
</varlistentry>
</variablelist>
<para>
In a default installation, none of the above parameters are set
explicitly. Instead, the
data directory is specified by the <option>-D</option> command-line
option or the <envar>PGDATA</envar> environment variable, and the
configuration files are all found within the data directory.
</para>
<para>
If you wish to keep the configuration files elsewhere than the
data directory, the <command>postgres</command> <option>-D</option>
command-line option or <envar>PGDATA</envar> environment variable
must point to the directory containing the configuration files,
and the <varname>data_directory</varname> parameter must be set in
<filename>postgresql.conf</filename> (or on the command line) to show
where the data directory is actually located. Notice that
<varname>data_directory</varname> overrides <option>-D</option> and
<envar>PGDATA</envar> for the location
of the data directory, but not for the location of the configuration
files.
</para>
<para>
If you wish, you can specify the configuration file names and locations
individually using the parameters <varname>config_file</varname>,
<varname>hba_file</varname> and/or <varname>ident_file</varname>.
<varname>config_file</varname> can only be specified on the
<command>postgres</command> command line, but the others can be
set within the main configuration file. If all three parameters plus
<varname>data_directory</varname> are explicitly set, then it is not necessary
to specify <option>-D</option> or <envar>PGDATA</envar>.
</para>
<para>
When setting any of these parameters, a relative path will be interpreted
with respect to the directory in which <command>postgres</command>
is started.
</para>
</sect1>
<sect1 id="runtime-config-connection">
<title>Connections and Authentication</title>
<sect2 id="runtime-config-connection-settings">
<title>Connection Settings</title>
<variablelist>
<varlistentry id="guc-listen-addresses" xreflabel="listen_addresses">
<term><varname>listen_addresses</varname> (<type>string</type>)
<indexterm>
<primary><varname>listen_addresses</varname> configuration parameter</primary>
</indexterm>
</term>
<listitem>
<para>
Specifies the TCP/IP address(es) on which the server is
to listen for connections from client applications.
The value takes the form of a comma-separated list of host names
and/or numeric IP addresses. The special entry <literal>*</literal>
corresponds to all available IP interfaces. The entry
<literal>0.0.0.0</literal> allows listening for all IPv4 addresses and
<literal>::</literal> allows listening for all IPv6 addresses.
If the list is empty, the server does not listen on any IP interface
at all, in which case only Unix-domain sockets can be used to connect
to it. If the list is not empty, the server will start if it
can listen on at least one TCP/IP address. A warning will be
emitted for any TCP/IP address which cannot be opened.
The default value is <systemitem class="systemname">localhost</systemitem>,
which allows only local TCP/IP <quote>loopback</quote> connections to be
made.
</para>
<para>