我的美洲狮配置:
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中有什么可能导致这种情况吗?
RAILS_ENV=development rails s
填充development.log
和
RAILS_ENV=production rails s
让production.log像Kim Kardashian的头一样空洞。
答案 0 :(得分: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
之前添加此行。
答案 1 :(得分:1)
如果要将服务器的输出添加到日志中,最简单的方法是告诉系统执行此操作。运行服务器启动命令,如:
pumactl -F config/puma.rb start >> log/development.log
将服务器的每一行输出附加到开发日志。虽然为了使调试更容易,但您可能希望为每个服务器提供自己的日志,例如log/puma.log
。如果这样做,您可能希望每次启动服务器时都从头开始重写文件,而不是保留累积日志,如果是这种情况,只需将>>
转换为>
,例如:
pumactl -F config/puma.rb start > log/puma.log
但是,如果您将系统设置为在服务器失败时自动重新启动服务器,则使用>
将覆盖服务器重新启动时可能导致崩溃的日志。
同样,您可以通过启动rails服务器来使production.log
正常工作:
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
有关命令行界面的更多信息,Command Line Crash Course是一个很好的资源。