PostgreSQL starts with the system
The document describe how to configure automatic start PostgreSQL when the system starts.
The ways suitable for systemd on CentOS 7.0 or latest release.
1. Create and configure postgresql.service
# vim /usr/lib/systemd/system/postgresql.service
[Unit]
Description = PostgreSQL database server
After = remote-fs.target nss-lookup.target
After = network.target sshd.service
After = proc-fs-nfsd.mount
After = network.target local-fs.target
After = nfs-config.service
After = nfs-mountd.service
After = nfs-blkmap.service
After = nfs-client.target
After = nfs-config.service
After = nfs-idmapd.service
After = nfs-idmap.service
After = nfs-lock.service
After = nfslock.service
After = nfs-mountd.service
After = nfs-secure-server.service
After = nfs-secure.service
After = nfs.service
After = nfs-utils.service
[Service]
Type = forking
User = postgres
Group = appuser
Environment = PGPORT = 5432
Environment = PGDATA = / data / 01 / local / pgsql / data
ExecStart = / data / 01 / local / pgsql / bin / pg_ctl start -D $ {PGDATA} -s -o "-p $ {PGPORT}" -w -t 300
ExecStop = / data / 01 / local / pqsql / bin / pg_ctl stop -D $ {PGDATA} -s -m fast
ExecReload = / data / 01 / local / pgsql / bin / pg_ctl reload -D $ {PGDATA} -s
TimeoutSec = 300
[Install]
WantedBy = remote-fs.target
#chmod 644 /usr/lib/systemd/system/postgresql.service
2. Reload systemd and enable postgresql.service
#systemctl daemon-reload
#systemctl enable postgresql.service
Created symlink from /etc/systemd/system/multi-user.target.wants/postgresql.service to /usr/lib/systemd/system/postgresql.service.
#systemctl is-enabled postgresql.service
Enabled
#systemctl start postgresql.service
#systemctl status postgresql.service
● postgresql.service-PostgreSQL database server
Loaded: loaded (/usr/lib/systemd/system/postgresql.service; enabled; vendor preset: disabled)
Active: active (running) since Fri 2018-02-23 22:48:49 KST; 28min ago
Main PID: 2506 (postgres)
CGroup: /system.slice/postgresql.service
├─2506 / data / 01 / local / pgsql / bin / postgres -D / data / 01 / local / pgsql / data -p 5432
├─2508 postgres: logger process
├─2510 postgres: checkpointer process
├─2511 postgres: writer process
├─2512 postgres: wal writer process
├─2513 postgres: autovacuum launcher process
└─2514 postgres: stats collector process
Feb 23 22:48:47 ec5d-pbfcompilation-02 systemd [1]: Starting PostgreSQL database server ...
Feb 23 22:48:48 ec5d-pbfcompilation-02 pg_ctl [1414]: <2018-02-23 22: 48: 48.671 KST> LOG: redirecting log output to logging collector process
Feb 23 22:48:48 ec5d-pbfcompilation-02 pg_ctl [1414]: <2018-02-23 22: 48: 48.671 KST> HINT: Future log output will appear in directory "pg_log".
Feb 23 22:48:49 ec5d-pbfcompilation-02 systemd [1]: Started PostgreSQL database server.
Note: CentOS7.x not support /etc/rc.local script file, Detailed description as following:
#cat /etc/rc.local
#! / bin / bash
# THIS FILE IS ADDED FOR COMPATIBILITY PURPOSES
#
# It is highly advisable to create own systemd services or udev rules
# to run scripts during boot instead of using this file.
#It is wise to create a systemd service or udev rule to run the script when the system restarts, instead of using /etc/rc.local
#
# In contrast to previous versions due to parallel execution during boot
# this script will NOT be run after all other services.
#Compared with the previous system version, when the system starts, since the services run in parallel, /etc/rc.local will not run after other services start
#
# Please note that you must run 'chmod + x /etc/rc.d/rc.local' to ensure
# that this script will be executed during boot.
Although it is said here that you can use chmod + x /etc/rc.local to execute this script, I add a line to this file: su-postgres -c ‘pg_ctl start -D / usr / local / pgsql / data’
Then reboot test many times, postgres did not start successfully with the system in the end, so it is no longer recommended (officially not recommended) to start postgres using the /etc/rc.local file, as well as start other services, it is best to configure one systemd service.
Centos 7.x configure PostgreSQL to start automatically