我正在尝试从灵活的环境迁移到标准环境。我犯了一个错误,那就是在第一次部署时我的app.yaml中有env: flex
。当我使用env: standard
进行部署时,我得到了确认Deployed service [default] to [project]
,尽管部署似乎太快了,无法实现。当我请求该应用程序时,出现500错误。我在轨道上使用红宝石。
2020-09-22 03:11:12 default[20200921t205538] Puma starting in single mode...
2020-09-22 03:11:12 default[20200921t205538] * Version 4.3.3 (ruby 2.7.1-p83), codename: Mysterious Traveller
2020-09-22 03:11:12 default[20200921t205538] * Min threads: 5, max threads: 5
2020-09-22 03:11:12 default[20200921t205538] * Environment: production
2020-09-22 03:11:12 default[20200921t205538] * Listening on tcp://0.0.0.0:8081
2020-09-22 03:11:12 default[20200921t205538] bundler: failed to load command: rackup (/workspace/.bundle/gems/ruby/2.7.0/bin/rackup)
2020-09-22 03:11:12 default[20200921t205538] Errno::ENOENT: No such file or directory @ rb_sysopen - tmp/pids/server.pid
2020-09-22 03:11:12 default[20200921t205538] /layers/google.ruby.bundle/gems/.bundle/gems/ruby/2.7.0/gems/puma-4.3.3/lib/puma/launcher.rb:216:in `initialize'
2020-09-22 03:11:12 default[20200921t205538] /layers/google.ruby.bundle/gems/.bundle/gems/ruby/2.7.0/gems/puma-4.3.3/lib/puma/launcher.rb:216:in `open'
2020-09-22 03:11:12 default[20200921t205538] /layers/google.ruby.bundle/gems/.bundle/gems/ruby/2.7.0/gems/puma-4.3.3/lib/puma/launcher.rb:216:in `write_pid'
2020-09-22 03:11:12 default[20200921t205538] /layers/google.ruby.bundle/gems/.bundle/gems/ruby/2.7.0/gems/puma-4.3.3/lib/puma/launcher.rb:105:in `write_state'
2020-09-22 03:11:12 default[20200921t205538] /layers/google.ruby.bundle/gems/.bundle/gems/ruby/2.7.0/gems/puma-4.3.3/lib/puma/single.rb:103:in `run'
2020-09-22 03:11:12 default[20200921t205538] /layers/google.ruby.bundle/gems/.bundle/gems/ruby/2.7.0/gems/puma-4.3.3/lib/puma/launcher.rb:172:in `run'
2020-09-22 03:11:12 default[20200921t205538] /layers/google.ruby.bundle/gems/.bundle/gems/ruby/2.7.0/gems/puma-4.3.3/lib/rack/handler/puma.rb:73:in `run'
2020-09-22 03:11:12 default[20200921t205538] /layers/google.ruby.bundle/gems/.bundle/gems/ruby/2.7.0/gems/rack-2.2.2/lib/rack/server.rb:327:in `start'
2020-09-22 03:11:12 default[20200921t205538] /layers/google.ruby.bundle/gems/.bundle/gems/ruby/2.7.0/gems/rack-2.2.2/lib/rack/server.rb:168:in `start'
2020-09-22 03:11:12 default[20200921t205538] /layers/google.ruby.bundle/gems/.bundle/gems/ruby/2.7.0/gems/rack-2.2.2/bin/rackup:5:in `<top (required)>'
2020-09-22 03:11:12 default[20200921t205538] /workspace/.bundle/gems/ruby/2.7.0/bin/rackup:23:in `load'
2020-09-22 03:11:12 default[20200921t205538] /workspace/.bundle/gems/ruby/2.7.0/bin/rackup:23:in `<top (required)>'
2020-09-22 03:11:13 default[20200921t205538] nginx failed to start: aborted, context canceled. subject:"nginx" Timeout:30m0s, attempts:2
2020-09-22 03:11:13 default[20200921t205538] "GET /favicon.ico HTTP/1.1" 500
答案 0 :(得分:1)
您提供的日志中的错误指出:
bundler: failed to load command: rackup (/workspace/.bundle/gems/ruby/2.7.0/bin/rackup)
我可以看到您正在使用Puma,并且the App Engine Standard docs指定了一些依赖Rack的应用要采取的步骤:
大多数Web应用程序都使用Rack支持的Web服务器,例如Puma, 独角兽还是薄。
您必须将服务器作为依赖项添加到应用程序的
Gemfile
中 配置文件。运行时将在安装所有依赖项之前 您的入口点将被调用。source "https://rubygems.org" gem "rack" gem "puma"
将puma用于Rails应用程序的示例入口点:
entrypoint: bundle exec rails server Puma -p $PORT
instructions for flex与关于Gemfile和入口点的标准环境相同,因此我不确定一个为什么起作用而另一个不起作用,但是我建议您仔细检查所有这些指示已正确实施。
我认为您的app.yaml
本身没有任何问题,因为如果您通过了App Engine不允许的配置,那么API会拒绝部署。
它可能与入口点或依赖项有关。这样可以构建并部署容器,但是在脚本实际尝试启动时会失败。
答案 1 :(得分:0)
根据说明,我相信只有env: flex
到env: standard
被更改了,因此至少也必须更改runtime
。
如果您查看文档(flex和standard),则运行时的版本将以不同的方式指定。在标准环境中,它是通过runtime
值选择的,而在灵活环境中,版本是:
您应用程序目录中的
.ruby-version
文件
在两种环境下,app.yaml
选项中当然还有其他差异(参考:flex和standard)。因此,如果您能够在Flex中进行部署,则必须查看所有设置。
答案 2 :(得分:0)
您的app.yaml应该至少具有:
runtime: ruby25 # or ruby26 or ruby27 for Ruby 2.6 (beta) or Ruby 2.7 (beta)
entrypoint: bundle exec ruby app.rb
部署到App Engine标准。然后删除旧的损坏的部署。请注意,无需指定env
。
检查this以获得更多信息。