2013-08-22 181 views
2

我在开发环境和分离模式下在amazon ec2上运行rails 3.2应用程序。无法重新启动webbrick而无需重新启动ec2实例

$ rails s -d 

此命令后的EC2终端挂起,不出来这个命令的,但在服务器启动,因为我可以访问application.I必须关闭终端和服务器保持启动。

之后我杀了应用程序。

$ lsof|grep 3000 
$ kill -9 <pid> 

现在,如果我尝试重新启动服务器,它会给出错误。

A server is already running. Check /home/ubuntu/trade_ship/tmp/pids/server.pid. 
Exiting 

现在,即使我删除了tmp文件夹并重新创建它,服务器也不会启动。任何人都可以帮我解决这两个问题吗?

回答

0

即使我遇到过这个问题,试着重新启动你的系统,然后检查......当时这个解决方案对我有效。

+0

感谢排名。是的,重新启动服务器有帮助,但我需要一个永久的解决方案。 – Bot

+0

如果再次遇到此问题,请使用kill -9 (位于tmp/pid/sessions.id中)而不是删除tmp文件夹。 – rank

+0

我刚刚检查过它,它的工作原理。不要直接删除tmp文件。我正在使用Ubuntu 12.04 – rank

0

首先,如果你不能够使用3000端口使用rails s -p <port no>命令

二是,如果你要杀死其服务器启动的RUBY实例,以便使用

ps aux | grep ruby 
username  17731 0.1 1.6 3127008 67996 ?? S  2:00PM 0:01.42 /Users/username/.rvm/rubies/ruby-1.9.2-p180/bin/ruby script/rails s -d 

,然后杀死

kill -9 17731 

这一定会解决问题

+0

感谢Magnum。这也没有帮助,可能是因为我们在这里注意新事物。我们只是使用命令'kill -9 '来杀死进程。只是我们得到pid的方式是不同的。所有三种方法即: ps aux | grep ruby​​,lsof | grep 3000和tmp/pid/sessions.id(@ rank's)返回相同的pid。 – Bot