当前位置: 首页 > 面试题库 >

将redis部署到heroku无法连接

刘德义
2023-03-14
问题内容

香港专业教育学院一直试图与heroku合作。我可以成功地使其在开发模式下工作,但是当我尝试推送到heroku时,我得到了

Errno::ECONNREFUSED (Connection refused - Unable to connect to Redis on 127.0.0.1:6379):

然后,我阅读并关注了http://blog.redistogo.com/2010/07/26/resque-with-redis-to-
go/

我把站点中列出的配置放了,但是出现了以下错误

SocketError (getaddrinfo: nodename nor servname provided, or not known):

我把我的初始化器/ resque.rb

Resque.after_fork = Proc.new { ActiveRecord::Base.establish_connection }

ENV["redis://redistogo:11111111111111111@lab.redistogo.com:9254/"] ||= "redis://heroku_username:heroku_password@host:9254/"
uri = URI.parse(ENV["redis://redistogo:1111111111111111@lab.redistogo.com:9254/"])
Resque.redis = Redis.new(:host => uri.host, :port => uri.port, :password => uri.password)

但是它引发了上面提到的错误。在我的开发模式下,我也得到了错误。

我尝试使用我的heroku用户名(即使用来自heroku的插件),将密码输入heroku,并将端口更改为9254。但是,我现在一直收到套接字错误。我究竟做错了什么?

帮助将不胜感激。谢谢

更新。

@凯文

我试过了

uri = URI.parse(ENV["my_url_string"] || "redis://localhost:9254/" )
REDIS = Redis.new(:host => uri.host, :port => uri.port, :password => uri.password)

在initializer / redis.rb中也是如此,但是出现以下错误

Errno::ECONNREFUSED (Connection refused - Unable to connect to Redis on 127.0.0.1:6379):

错误中的数字(即127.0.0.1:6379)有效吗?香港专业教育学院检查我的redis gui应用程序,也从heroku配置中,我的端口号是9254

REDISTOGO_URL       => redis://redistogo:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx@lab.redistogo.com:9254/

您还有其他配置设置吗?感谢您的帮助!

最后更新。

我修好了它。我简直不敢相信!我完整的解决方案

uri = URI.parse(ENV["REDISTOGO_URL"])
REDIS = Redis.new(:host => uri.host, :port => uri.port, :password => uri.password)
Resque.redis = REDIS

逐字。它无需显式设置url就可以工作,因为我猜heroku已尝试为我设置它


问题答案:

对于我的设置,我有/config/initializers/redis.rb以下几行:

uri = URI.parse(ENV["REDISTOGO_URL"] || "redis://localhost:6379/" )
REDIS = Redis.new(:host => uri.host, :port => uri.port, :password => uri.password)

REDISTOGO_URL是在我的heroku配置中定义的。您应该能够通过键入以下内容进行验证:

heroku config --app my_app

您将在输出中看到以下值: REDISTOGO_URL

您应该REDISTOGO_URL直接从Redis To Go 复制您的内容。您可以通过在heroku中找到该实例并单击Add Ons-> Redis
To Go来找到它。

这里有一些提示:

  1. 像我上面演示的那样,从命令行验证您的heroku配置中是否具有REDIS_TO_GO URL。
  2. 验证REDIS_TO_GO URL是否与Add Ons-> Redis To Go配置中分配给该实例的URL相同。


 类似资料:
  • 我设法让它在本地工作(不同的集群,单独的settings.py),但不是在部署到Heroku之后。 Heroku-自动添加DATABASE_URL配置var与postgresql,我不能删除/编辑它。 MongoDB Atlas-我已经将MongoDB Atlas集群设置为允许来自任何地方的IP。密码没有有趣的字符。 django生产设置。py公司 我在部署后直接运行迁移,它都是绿色的OK 一切都

  • 问题内容: 我是Yesod的新手,无法静态构建Yesod,因此可以部署到Heroku。 我已更改默认的.cabal文件以反映静态编译 而且它不再构建。我收到一堆警告,然后是许多未定义的引用,如下所示: 如果我仅使用just进行编译,而没有进行 任何编译,则一切正常,但是当尝试在Heroku上启动时,应用程序崩溃。 我尝试按照此处的建议将libgmp.so.10添加到LD_LIBRARY_PATH

  • 问题内容: 因此,我正在遵循来自Heroku和Django的入门指南。但是,当我运行此命令时: 我得到这个错误 我以为这意味着尚未设置数据库…所以我也手动添加了shared_db选项: 但是..我仍然收到相同的错误。是什么赋予了? 问题答案: 我的应用程序结构已关闭… heroku希望结构看起来像这样:

  • 我正在尝试部署谷歌云SQL Server作为我的数据库。我目前在本地使用谷歌云SQL代理。但很明显,要部署到heroku,我无法做到这一点。 下面有人说他们有解决这个问题的方法。https://elements.heroku.com/buildpacks/emartech/heroku-buildpack-cloud-sql-proxy#buildpack-instructions 我能够运行他们

  • 我正在尝试在Heroku上部署一个可执行的Spring Bootjar。 我已经告诉Heroku从只包含以下文件的github存储库进行部署: 我的如下所示: 如果我查看github中的构建包项目,我可以看到有一个名为的脚本,它检查是否存在文件: https://github.com/heroku/heroku-buildpack-java/blob/master/bin/detect 我相信我的

  • 我在部署到登台时遇到了一些问题,希望任何人都能提出一个解决方案。 所以我用Capistrano部署Rails4来做Droplet。我在不同的液滴上有生产/分期分支(实际上我是第一次部署分期,无法使其工作)。部署进行得很好,我已经在“当前”文件夹中准备好了我的应用程序。但我有麻烦的是创建数据库。当我跑的时候 rails_env=Production bundle exec rake DB:CREAT