Rails:如何在后台启动Rails服务器

17
当我运行ruby script/server -e test时,它在控制台上运行。当我关闭控制台时,它也会停止进程。我想在后台运行服务器。我该如何做到这一点?
7个回答

26
您可以使用script/server -d将其作为守护进程运行。

1
仅显示前两行 => 启动 Mongrel => Rails 2.3.5 应用程序正在 http://0.0.0.0:3000 上启动 - Usman Ali
@Usman Ali:没错。这意味着服务器已经启动。如果你在一个 *nix 系统上,你可以通过以下方式检查它是否正在运行:ps aux | grep 'script/server' - Swanand
1
@Swanand:我也尝试过了,进程列表也没有显示任何东西。:( - Usman Ali
这可能有点冒险,但也许你已经在3000端口上运行了某些东西。 - vise
@vise 不,我有完全相同的问题,而且端口3000是空的。 - João Pimentel Ferreira

24
如果您正在使用 thin:
运行命令:rails server thin -d 停止服务时,请运行命令:kill -9 $(cat tmp/pids/server.pid)

3
谢谢!对我来说,使用 Puma 的命令是:rails s Puma -d。 - oddmeter
对我来说是 rails server -u thin -d - Sunwoo Yang

16

可能有点晚了回答,但对未来的人有好处。

假设要在Unix/Linux操作系统中将Rails(或任何后台服务)放置到后台的最简单和快捷的方法是:

$ nohup rails server &

这适用于任何类似的服务:

$ nohup <service command> &


尝试以守护进程模式运行'nohup rails server -d &' - Ankit Singh

4

在服务器命令结尾加上 &

script/server -e test&

它将把它放到后台。

或者您可以使用其他服务器,如thin:http://code.macournoyer.com/thin/

(sudo) gem install thin

然后使用以下方法启动和停止它:

thin start
thin stop

2

一种方法是使用Screen来实现,即使在ssh连接下也可以保持连接,它会创建一个子终端,不受当前控制台的影响。sudo apt-get install screen 安装Screen screen 启动Screen 然后启动Rails rails server && 只是让它在后台运行。要停止它,请键入kill -9 #,其中#是启动时给出的编号。

按下“Ctrl + A”以退出,并键入screen -r以返回到Screen终端。


使用 screen 真的很专业吗?我觉得我应该将其绑定到套接字并通过我的 HTTPD 服务器获取它或类似的方式。 - IIllIIll

0
另一个选择是使用带有Passenger的Apache,设置非常容易,一旦你完成了一次设置,就可以在所有其他应用程序中使用它。此外,它很可能接近你在生产环境中运行的环境,这是另一个好处。
如果你在Mac上,你也可以获得Passenger首选项面板,简化了Apache配置步骤。

我们能否在服务器启动时启动瘦服务器?我无法做到这一点。请帮帮我。 - Catmandu

0
为了更好地理解Kryptman's answer和oddmeter的评论。
当我尝试在后台模式下启动Puma Rails服务器时,我有这个担忧。
要使用-d标志实现这一点,只需运行以下命令:
rails server puma -d

如果你想为操作指定一个不同的端口,可以使用以下命令,并带上-p标志。
rails server -p 3002 puma -d

如果你想检查 Puma 运行服务器的进程,只需运行以下命令:
ps aux | grep puma

如果您想停止正在运行的进程,请运行以下命令。
ps aux | grep puma | awk {'print $2'} | xargs kill

如果您想立即停止进程,请使用以下命令。但是,这并不推荐:

ps aux | grep puma | awk {'print $2'} | xargs kill -9

注意awk 选择行输出中的第二项($2),即PID,而 xargsawk 中的PID 作为参数接受。

您也可以使用 systemd 实现此操作 - Puma Systemd Configuration for Rails Not Working


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接