首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Foreman,Rails,Puma SSL/HTTPS

Foreman,Rails,Puma SSL/HTTPS
EN

Stack Overflow用户
提问于 2019-03-05 01:21:28
回答 1查看 1.1K关注 0票数 2

如何组合这两个命令,以便Rails在puma命令中使用puma选项?

代码语言:javascript
复制
puma: puma -b 'ssl://127.0.0.1:3000?key=/Users/cdrum/.ssh/server.key&cert=/Users/cdrum/.ssh/server.crt' -b 'tcp://127.0.0.1:3001'
rails: bundle exec rails s --binding=127.0.0.1 -p 3000 -e $RAILS_ENV puma

现在,我得到了一个错误:

代码语言:javascript
复制
puma/binder.rb:272:in `initialize': Address already in use - bind(2) for"127.0.0.1" port 3000 (Errno::EADDRINUSE)

或者,我可以告诉Rails查找已经运行的puma实例,而不是再次尝试引导它?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-03-05 04:26:02

您实际上可以通过只运行puma并将所有配置存储在config/puma.rb中来解决这个问题。不同的证书。管理,但不管:

代码语言:javascript
复制
threads_count = ENV.fetch('RAILS_MAX_THREADS') { 5 }
threads threads_count, threads_count
port ENV.fetch('PORT') { 3000 }
environment ENV.fetch('RAILS_ENV') { 'development' }
plugin :tmp_restart

localhost_key = "#{Dir.pwd}/#{File.join('config', 'certs', 'localhost.key')}"
localhost_cert = "#{Dir.pwd}/#{File.join('config', 'certs', 'localhost.crt')}"

unless File.exist?(localhost_key)
  def generate_root_cert(root_key) # rubocop:disable Metrics/AbcSize
    root_ca = OpenSSL::X509::Certificate.new
    root_ca.version = 2
    root_ca.serial = 0x0
    root_ca.subject = OpenSSL::X509::Name.parse '/C=BE/O=A1/OU=A/CN=localhost'
    root_ca.issuer = root_ca.subject
    root_ca.public_key = root_key.public_key
    root_ca.not_before = Time.now
    root_ca.not_after = root_ca.not_before + 2 * 365 * 24 * 60 * 60
    root_ca.sign(root_key, OpenSSL::Digest::SHA256.new)
    root_ca
  end

  root_key = OpenSSL::PKey::RSA.new(2048)
  file = File.new(localhost_key, 'wb')
  file.write(root_key)
  file.close

  root_cert = generate_root_cert(root_key)
  file = File.new(localhost_cert, 'wb')
  file.write(root_cert)
  file.close
end

ssl_bind '0.0.0.0', '8443', key: localhost_key, cert: localhost_cert

现在,HTTP和HTTPS都适用于我的Rails应用程序。

Procfile现在只是:

代码语言:javascript
复制
web: puma

不过,您确实需要特别 gem的一个puma分支来避免puma错误。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54994088

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档