我有一个使用puma运行的rails(4.2.4)应用程序。文档说:
如果通过
-e
和--environment
标志或RACK_ENV
环境变量指定了环境,则默认文件位置为config / puma / environment_name.rb。
这就是配置文件的位置。
在我的开发环境中,puma启动就好了。这是配置:
workers 1
threads 1, 6
environment 'development'
activate_control_app
然而,我的生产环境存在问题。这是配置:
workers 1
threads 1, 6
environment 'production'
app_dir = File.expand_path('../../..', __FILE__)
bind "unix://#{app_dir}/tmp/sockets/puma.sock"
stdout_redirect "#{app_dir}/log/puma.stdout.log",
"#{app_dir}/log/puma.stderr.log",
true
pidfile "#{app_dir}/tmp/pids/puma.pid"
state_path "#{app_dir}/tmp/pids/puma.state"
activate_control_app
daemonize true
这显然更复杂,主要是为了使用套接字,日志记录和守护进程。我知道它有效,因为它可以通过以下命令启动:
$ bundle exec pumactl start
到目前为止一切顺利。但是,如果我想像上面的命令一样停止或重启服务器,我收到以下消息:
$ bundle exec pumactl stop
Neither pid nor control url available
如果我指定配置文件的位置:
$ bundle exec pumactl -F config/puma/production.rb stop
为什么我需要指定stop
和restart
但不是start
的配置文件?