mirror of https://github.com/postgres/postgres
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.uspull/31/head^2
parent
e87d4965bd
commit
ac3b962681
@ -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 |
||||
@ -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> |
||||
@ -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: |
||||
|
||||
sudo /bin/sh ./install.sh |
||||
|
||||
Loading…
Reference in new issue