Greetings,
This question may simply be my ignorance of what piece of the systemd /
systemctl puzzle needs attention. Any clues are appreciated.
Using postgreSQL version 9.5 as obtained from ubuntu repo. Install was
fine. initdb and subsequent database use is fine.
Nothing is out of the ordinary except me being able to alter how
postgres starts on boot (eg how postgres is called by init scripts or
systemd ).
I wish to start postgres on boot with no TCP listeners, only unix-domain
sockets.
I can achieve this goal by executing the following command as postgres
user in a normal terminal session;
postgres -D /space/postgres -h '' -c listen_addresses=''
Starting the database in this manner results in stdout and stderr from
postgres to show up in the terminal and not the default log file, but I
can fix that. Stopping the database cleanly when started in the above
manner requires user postgres to give 'pg_ctl stop' command in another
terminal. Of course I can press ctrl-C in the terminal it was started
from, and it dies..
I can also achieve the no TCP socket goal using a pg_ctl command, as
postgres in a terminal;
pg_ctl start -D /space/postgres -o '-h "" -c listen_addresses=""'
where in the pg_ctl command, the single quotes protect the double
quotes, which are placeholders for the empty parameter values needing to
be passed to the actual postgres command..
I thought I could edit the postgresql.service / postgresql@.service
files and use the systemctl method. I have not yet discovered a way to
pass the needed options and empty quotes, or any "special character"
(special as seen by systemd I guess when reading in postgresql*.service
files..) into the startup process. Postgres will start but it's the
default install values, and not my needed command line.
Seems like there ought to be a way to do what I need. I just haven't
found it yet. Suggestions on what systemctl magic fruits or other
system startup tool needs attention are most welcome.
Thanks in advance,
alex