我花了两天时间才走到这一步。但我快到了。当我运行cap deploy:cold
时,部署失败并显示以下消息:
servers: ["xxx"]
[xxx] executing command
** [out :: xxx] rake aborted!
** [out :: xxx] FATAL: password authentication failed for user "my_app"
我的database.yaml
有这个:
production:
adapter: postgresql
encoding: utf8
database: my_app_production
pool: 5
host: localhost
username: my_app
password: secret
我在我创建的名为cap deploy
的用户下运行deployer
。我在deployer
下安装了Postgres。我还在psql中创建了用户my_app
:
create user my_app with password 'secret';
create database my_app_production owner my_app;
我通过运行my_app
验证用户\du
是否存在。当我浏览deployer@xxx
并运行命令psql
时,我得到psql: FATAL: role "deployer" does not exist
。
我做错了什么?
答案 0 :(得分:1)
要使psql
调用与rails类似,它应该是:
psql -h localhost -U my_app -d my_app_production
如果省略这些选项,默认情况下会psql
:
pg_hba.conf
中有不同的身份验证规则)答案 1 :(得分:0)
我已经完成了你想要的Railscasts。我只是把我的网站搞定了,虽然我仍然有一些帽子部署的故障。无论如何,为了清楚起见。
您显然在远程主机上创建了部署用户。但是,这并不意味着“deployer”是Postgres的用户。一旦你ssh为deployer@xxx.xxx.xxx.xxx,你必须运行sudo -u postgres psql来输入psql作为默认的postgres管理员。假设您使用的是Ubuntu,则没有默认密码。
我感到困惑的是,如果你不能使用部署者进入远程系统,你是否在psql中创建了my_app用户?这几乎听起来像你在本地这样做(Vagrant可能?)并没有远程做到这一点。正如我所说的,我想我刚刚完成了你正在查看的相同内容,如果在远程盒子上使用正确的密码创建了my_app用户,它就可以正常工作。