我在家中使用自制工具安装了PostgreSQL9.4
我很长时间没搭建PostgreSQL之类的东西了。
% brew install homebrew/versions/postgresql94
尝试一下,应该会出现类似以下的信息。
initdb /Users/kakikubo/brew/var/postgres -E utf8 # create a database
postgres -D /Users/kakikubo/brew/var/postgres # serve that database
PGDATA=/Users/kakikubo/brew/var/postgres postgres # ...alternatively
If builds of PostgreSQL 9 are failing and you have version 8.x installed,
you may need to remove the previous version first. See:
https://github.com/Homebrew/homebrew/issues/issue/2510
To migrate existing data from a previous major version (pre-9.3) of PostgreSQL, see:
http://www.postgresql.org/docs/9.3/static/upgrading.html
When installing the postgres gem, including ARCHFLAGS is recommended:
ARCHFLAGS="-arch x86_64" gem install pg
To install gems without sudo, see the Homebrew documentation:
https://github.com/Homebrew/homebrew/blob/master/share/doc/homebrew/Gems,-Eggs-and-Perl-Modules.md
To have launchd start homebrew/versions/postgresql94 at login:
ln -sfv /Users/kakikubo/brew/opt/postgresql94/*.plist ~/Library/LaunchAgents
Then to load homebrew/versions/postgresql94 now:
launchctl load ~/Library/LaunchAgents/homebrew.mxcl.postgresql94.plist
Or, if you don't want/need launchctl, you can just run:
postgres -D /Users/kakikubo/brew/var/postgres
WARNING: launchctl will fail when run under tmux.
==> Summary
? /Users/kakikubo/brew/Cellar/postgresql94/9.4.5: 3,021 files, 33.7M, built in 4 minutes 26 seconds
在最初的部分提到了如何建立一个示例数据库,但是我不想在这个位置建立,所以我会尽量指定我的PGDATA位置。另外,在初始化数据库时,我一直认为使用–no-locale是常识,但是最近的PostgreSQL似乎不再需要了,是吗?
首先,我认为在bashrc或zshrc中进行以下环境配置会很有帮助。
# PostgreSQL用環境変数
export POSTGRES_HOME=$HOME/brew/opt/postgresql94
export PGLIB=$POSTGRES_HOME/lib
export PGDATA=$POSTGRES_HOME/pgdata
让我们创建一个用于启动的环境。
% initdb ~/brew/opt/postgresql94/pgdata -E utf8 --no-locale
完成了所需数据库的基础。希望通过launchctl实现自动启动,因此还需要执行以下步骤。
ln -sfv /Users/kakikubo/brew/opt/postgresql94/*.plist ~/Library/LaunchAgents
对于这个homebrew.mxcl.postgresql94.plist文件,我们将进行部分编辑,以更改数据目录。
<string>-D</string>
<string>/Users/kakikubo/brew/opt/postgresql94/pgdata</string>
如果使用默认设置,~/brew/var/postgres目录的所有者将变为root,请将其更改为您自己的用户名。
% sudo chown -R kakikubo ~/brew/var/postgres
然后进行启动设置
launchctl load ~/Library/LaunchAgents/homebrew.mxcl.postgresql94.plist
据说在tmux或screen上执行launchctl load是不允许的。
这不仅仅适用于PostgreSQL,可能是launchd的限制吧。
完成上述步骤后,我认为应该顺利启动了。
% ps auxwww | grep post\[g]res
kakikubo 70245 0.0 0.0 2460064 616 ?? Ss 4:49PM 0:00.00 postgres: stats collector process
kakikubo 70244 0.0 0.0 2604920 1460 ?? Ss 4:49PM 0:00.00 postgres: autovacuum launcher process
kakikubo 70243 0.0 0.0 2604920 752 ?? Ss 4:49PM 0:00.01 postgres: wal writer process
kakikubo 70242 0.0 0.0 2604920 1724 ?? Ss 4:49PM 0:00.05 postgres: writer process
kakikubo 70241 0.0 0.0 2596728 776 ?? Ss 4:49PM 0:00.00 postgres: checkpointer process
kakikubo 70239 0.0 0.2 2598776 15092 ?? S 4:49PM 0:00.03 /Users/kakikubo/brew/opt/postgresql94/bin/postgres -D /Users/kakikubo/brew/opt/postgresql94/pgdata -r /Users/kakikubo/brew/var/postgres/server.log
顺便说一下,还可以加上PG之类的。
ARCHFLAGS="-arch x86_64" gem install pg
我想使用Heroku,所以暂时只试了一下简单地启动数据库。
尽管正确的做法应该是创建postgres用户等等,但在简单使用情况下我觉得这样足够了。