我在家中使用自制工具安装了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用户等等,但在简单使用情况下我觉得这样足够了。

广告
将在 10 秒后关闭
bannerAds