5

我第一次将应用程序部署到数字海洋并遇到了两个(可能更多)问题。

bundle install1)添加gem 'unicorn'到 Gemfile后我不能。我发现kgio与windows不兼容。通过 capistrano 部署时是否必须存在 Gemfile.lock?我将如何解决这个问题?

group :production do
  gem 'pg', '0.14.1'
  gem "nginx"
  gem 'unicorn'
end

2) 我在服务器上的 postgresql 上进行身份验证时遇到问题。

production:
  adapter: postgresql
  encoding: unicode
  database: postgresql
  pool: 5
  username: postgresql
  password: secret

我运行了这些命令(以及其他一些变体):

create user postgresql with password 'secret';
create database postgresql with owner postgresql;

每次我限制部署时,我都会收到此错误:

FATAL: Peer authentication failed for user "postgresql"

我尝试输入一个我知道不存在的无效用户名,一个无效但错误消息始终相同的数据库。根据postgresql网站,我应该得到不同的错误......

如果我能得到一些帮助,那就太棒了。谢谢!

4

2 回答 2

8

您需要指定用于密码验证的主机。

production:
  adapter: postgresql
  encoding: unicode
  database: postgresql
  pool: 5
  host: localhost
  username: postgresql
  password: secret

更多细节在这里

于 2014-03-02T01:17:28.247 回答
2

您必须首先在文件中设置 Postgres 的密码md5(更安全:自 Postgres 11 以来的 scram-sha-256 )身份验证pg_hba.conf

只要只允许identpeer身份验证,就不会提示密码。您只能以系统用户对应的 db 角色登录。

顺便说一句,数据库角色和操作系统用户通常称为postgres,而不是postgresql。我猜这不是错字吧?

在外壳中尝试:

sudo -u postgres -i

然后postgres使用对等身份验证以 db 角色身份登录。

看:

于 2013-07-23T21:06:15.657 回答