6

我的彪马配置:

path = Dir.pwd + "/tmp/puma/"

threads 0,20
environment "production"
daemonize true
drain_on_shutdown true

bind  "unix://" + path + "socket/puma.sock"
pidfile path + "pid/puma.pid"
state_path path + "pid/puma.state"

我的环境/production.rb

MyApp::Application.configure do    
  config.log_level = :debug
end

我启动我的服务器:

starkers@ubuntu:~/Desktop/myspp$ pumactl -F config/puma.rb start
=> Booting Puma
=> Rails 4.0.2 application starting in production on http://0.0.0.0:3000
=> Run `rails server -h` for more startup options
=> Ctrl-C to shutdown server
config.eager_load is set to nil. Please update your config/environments/*.rb files accordingly:

  * development - set it to false
  * test - set it to false (unless you use a tool that preloads your test environment)
  * production - set it to true

Puma 2.8.2 starting...
* Min threads: 0, max threads: 16
* Environment: production
* Listening on tcp://0.0.0.0:3000

我浏览我的应用程序。我的 log/production.log 是空白的。不知道为什么?

目录访问权限0777贯穿我的整个应用程序。

不知道是什么原因造成的。真的需要日志(显然)。在本地和远程发生,因此与我的配置有关。但是我不确定是什么配置。puma/ubuntu/rails 中有什么可能导致这种情况的吗?

development.log 完美运行。

我已将 development.rb 复制粘贴到 production.rb 文件中。字面意思相同。好的?相同的 development.rb 和 production .rb 然而:

RAILS_ENV=development rails s

填充 development.log

RAILS_ENV=production rails s

让 production.log 和 Kim Kardashian 的脑袋一样空荡荡。

4

2 回答 2

3

bind在配置文件末尾设置:

path = Dir.pwd + "/tmp/puma/"

threads 0,20
environment "production"
daemonize true
drain_on_shutdown true

pidfile path + "pid/puma.pid"
state_path path + "pid/puma.state"
bind  "unix://" + path + "socket/puma.sock"

我使用命令pumactl -F config/puma.rb start启动服务器(我想没有区别,但无论如何)。

我建议使用#{}路径:

pidfile "#{path}pid/puma.pid"
state_path "#{path}pid/puma.state"
bind  "unix://#{path}socket/puma.sock"

但这是你的选择。

希望它有帮助(对我来说,你的配置也不起作用)。

您还可以添加 Puma 日志:

stdout_redirect "#{Dir.pwd}/log/puma.stdout.log", "#{Dir.pwd}/log/puma.stderr.log"

bind.

于 2014-05-08T03:03:56.953 回答
1

如果您想将服务器的输出添加到日志中,最简单的方法是告诉您的系统完全这样做。运行您的服务器启动命令,如:

pumactl -F config/puma.rb start >> log/development.log

将服务器的每一行输出附加到开发日志中。尽管为了使调试更容易,您可能希望为每个服务器提供自己的日志,例如log/puma.log. 如果这样做,您可能希望每次启动服务器时都从头开始重写文件,而不是保留累积日志,如果是这种情况,只需将其>>转换>为:

pumactl -F config/puma.rb start > log/puma.log

但是,如果您将系统设置为在服务器失败时自动重新启动服务器,则使用>将覆盖日志以了解在服务器重新启动时可能导致崩溃的原因。

同样,您可以production.log通过启动 Rails 服务器来开始工作,例如:

RAILS_ENV=production rails s >> log/production.log

如果您想像在生产环境中一样在后台运行服务器,您可以&在末尾添加一个字符,例如:

pumactl -F config/puma.rb start > log/puma.log &

如果您这样做,您可能希望存储进程标识符,以便稍后杀死服务器,因为^C它不适用于后台进程。要存储进程 ID,请在某处创建另一个空文件lib/pids/puma.pid,然后将该 puma 服务器的进程 ID 导出到空文件,如:

pumactl -F config/puma.rb start > log/puma.log &
echo $! > lib/pids/puma.pid

然后,您将能够使用以下命令杀死服务器:

kill `cat lib/pids/puma.pid`

重要的是要记住,即使将服务器的输出附加到development.log文件中,它也不会显示在开发 Rails 服务器的输出中。如果您想实时查看日志以进行调试,可以使用以下tailf命令:

tailf log/puma.log

有关命令行界面的更多信息,命令行速成课程是一个很好的资源。

于 2014-05-09T03:08:26.687 回答