启动/停止Rails服务器

19
运行Rails服务器,我使用$rails server。它会显示'To stop, click Ctrl+c'。 我使用的是Putty
问题如下:
  1. 我应该一直保持终端打开吗?因为如果服务器停止,我的网页将无法工作。使用Apache时,我只需使用apachectl start / stop命令。

  2. 如果我想要使用命令怎么办?我应该停止服务器,使用命令,然后再次运行吗?因为在同一个终端中,如果服务器正在运行,我不能做任何事情。


你可以在后台启动它,或者使用像Passenger这样的服务器,它易于使用且方便。 - Andrey Saleba
如何在后台启动它?就像Apache一样 - user6586190
1
要使用Apache作为反向代理启动Rails服务器,您需要一些应用程序服务器来提供Ruby代码服务。请查看此链接以获取设置指南:https://www.phusionpassenger.com/documentation/Users%20guide%20Apache.html - Andrey Saleba
不,我使用 Puma 服务器。我的意思是,如何像 Apache 一样在后台运行 Puma? - user6586190
3个回答

30

您可以通过编写代码来使其在后台运行

daemonize true

在你的 puma.rb 文件中

为了停止,你需要找到正在运行的 puma 进程

 ps aux | grep puma

那么您需要终止主进程。

 sudo kill -9 your process id

开始操作需要输入

 puma -C config/puma.rb 

@SonyaSeyrios更新了我的答案,希望解决了这个问题。 - kajal ojha
谢谢,我会检查它。 - user6586190
1
如果您在systemd服务中使用了puma,那么您就不需要使用kill命令。使用kill命令关闭应用服务器真是太奇怪了。 - Daniel Viglione
2
很遗憾,Puma 5.0中已经删除了daemonize。详情请参见:链接 - Jan Werkhoven

9
您可以通过在命令中添加-d来启动守护进程服务器。例如:
rails server -d

停止服务器,您可以根据其进程ID杀死它:

kill $(cat tmp/pids/server.pid)

1

我应该一直保持终端开着吗?因为如果服务器停止,我的网页就无法工作。使用Apache时,我只需使用命令apachectl start/stop。

是的,你应该保持它开着,因为如果你按Ctrl C,它会停止服务器。另一个选项是在后台运行,但我不确定如何在Putty中实现。

如果我想使用命令怎么办?我需要停止服务器,使用命令,然后再运行吗?因为在同一个终端中,如果服务器正在运行,我什么都做不了。

你能打开另一个终端窗口吗?如果你有两个终端窗口,你可以用一个来运行服务器,另一个来做其他任务。


好的,假设您已经开发了一个项目并上传到托管服务。您会在哪里保持终端窗口打开?这似乎很愚蠢,为什么Apache不这样? - user6586190
托管在开发和生产中是两种非常不同的情况。通常在开发阶段更容易在终端中运行,但对于生产环境来说,你需要更强大的解决方案。 - kcdragon
例如,什么? - user6586190

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