mirror of
https://github.com/postgres/postgres.git
synced 2025-06-10 09:21:54 +03:00
Provide modern examples of how to auto-start Postgres on macOS.
The scripts in contrib/start-scripts/osx don't work at all on macOS 10.10 (Yosemite) or later, because they depend on SystemStarter which Apple deprecated long ago and removed in 10.10. Add a new subdirectory contrib/start-scripts/macos with scripts that use the newer launchd infrastructure. Since this problem is independent of which Postgres version you're using, back-patch to all supported branches. Discussion: https://postgr.es/m/31338.1510763554@sss.pgh.pa.us
This commit is contained in:
parent
ca853a2445
commit
77b76fea94
24
contrib/start-scripts/macos/README
Normal file
24
contrib/start-scripts/macos/README
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
To make macOS automatically launch your PostgreSQL server at system start,
|
||||||
|
do the following:
|
||||||
|
|
||||||
|
1. Edit the postgres-wrapper.sh script and adjust the file path
|
||||||
|
variables at its start to reflect where you have installed Postgres,
|
||||||
|
if that's not /usr/local/pgsql.
|
||||||
|
|
||||||
|
2. Copy the modified postgres-wrapper.sh script into some suitable
|
||||||
|
installation directory. It can be, but doesn't have to be, where
|
||||||
|
you keep the Postgres executables themselves.
|
||||||
|
|
||||||
|
3. Edit the org.postgresql.postgres.plist file and adjust its path
|
||||||
|
for postgres-wrapper.sh to match what you did in step 2. Also,
|
||||||
|
if you plan to run the Postgres server under some user name other
|
||||||
|
than "postgres", adjust the UserName parameter value for that.
|
||||||
|
|
||||||
|
4. Copy the modified org.postgresql.postgres.plist file into
|
||||||
|
/Library/LaunchDaemons/. You must do this as root:
|
||||||
|
sudo cp org.postgresql.postgres.plist /Library/LaunchDaemons
|
||||||
|
because the file will be ignored if it is not root-owned.
|
||||||
|
|
||||||
|
At this point a reboot should launch the server. But if you want
|
||||||
|
to test it without rebooting, you can do
|
||||||
|
sudo launchctl load /Library/LaunchDaemons/org.postgresql.postgres.plist
|
17
contrib/start-scripts/macos/org.postgresql.postgres.plist
Normal file
17
contrib/start-scripts/macos/org.postgresql.postgres.plist
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||||
|
<plist version="1.0">
|
||||||
|
<dict>
|
||||||
|
<key>Label</key>
|
||||||
|
<string>org.postgresql.postgres</string>
|
||||||
|
<key>ProgramArguments</key>
|
||||||
|
<array>
|
||||||
|
<string>/bin/sh</string>
|
||||||
|
<string>/usr/local/pgsql/bin/postgres-wrapper.sh</string>
|
||||||
|
</array>
|
||||||
|
<key>UserName</key>
|
||||||
|
<string>postgres</string>
|
||||||
|
<key>KeepAlive</key>
|
||||||
|
<true/>
|
||||||
|
</dict>
|
||||||
|
</plist>
|
25
contrib/start-scripts/macos/postgres-wrapper.sh
Normal file
25
contrib/start-scripts/macos/postgres-wrapper.sh
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
# PostgreSQL server start script (launched by org.postgresql.postgres.plist)
|
||||||
|
|
||||||
|
# edit these as needed:
|
||||||
|
|
||||||
|
# directory containing postgres executable:
|
||||||
|
PGBINDIR="/usr/local/pgsql/bin"
|
||||||
|
# data directory:
|
||||||
|
PGDATA="/usr/local/pgsql/data"
|
||||||
|
# file to receive postmaster's initial log messages:
|
||||||
|
PGLOGFILE="${PGDATA}/pgstart.log"
|
||||||
|
|
||||||
|
# (it's recommendable to enable the Postgres logging_collector feature
|
||||||
|
# so that PGLOGFILE doesn't grow without bound)
|
||||||
|
|
||||||
|
|
||||||
|
# set umask to ensure PGLOGFILE is not created world-readable
|
||||||
|
umask 077
|
||||||
|
|
||||||
|
# wait for networking to be up (else server may not bind to desired ports)
|
||||||
|
/usr/sbin/ipconfig waitall
|
||||||
|
|
||||||
|
# and launch the server
|
||||||
|
exec "$PGBINDIR"/postgres -D "$PGDATA" >>"$PGLOGFILE" 2>&1
|
@ -1,3 +1,8 @@
|
|||||||
|
The scripts in this directory are for use with Apple's SystemStarter
|
||||||
|
infrastructure, which is deprecated since macOS 10.4 and is gone entirely
|
||||||
|
as of 10.10. You should use the scripts in ../macos instead, unless
|
||||||
|
you are using a macOS release too old to have launchd.
|
||||||
|
|
||||||
To install execute the following:
|
To install execute the following:
|
||||||
|
|
||||||
sudo /bin/sh ./install.sh
|
sudo /bin/sh ./install.sh
|
||||||
|
Loading…
x
Reference in New Issue
Block a user