如何在SSH终止后使EC2服务器保持运行状态

6

我有一台在EC2上安装了rails服务器的实例。当我运行

rails server

但是当我关闭ssh连接后,服务器也会停止。如何让服务器在关闭ssh连接后继续运行。

7个回答

11
screen rails s

解决了问题

之后按下CTRL + A + D,我离开了,服务器运行良好


10

试试这个。我们必须将Rails服务器作为守护进程启动。

rails s -d &

作为守护进程?你能详细说明一下吗? - user1616238
守护进程是一种在类Unix操作系统上运行的程序类型,它在后台静默运行,而不是在用户的直接控制下运行,等待特定事件或条件的发生以被激活。 - vajapravin
在SSH中使用“ps -aux | grep rails”检查Rails服务器是否正常运行。 - vajapravin
2
我认为应该使用"rails s -d&"而不是"rails -s -d&",如果还要指定环境(例如此示例中的生产环境),请使用"rails s -d -e production&"。 - JK ABC
还要注意,服务器进程的进程 ID 可以在 {Rails 应用程序目录}/tmp/pids/server.pid 中找到,当您想稍后终止服务器进程时,此 ID 非常有用。 - JK ABC
显示剩余4条评论

1

1
我需要的是在后台运行所有内容而不仅仅是Rails。安装Screen,它可以创建一个子终端,不会受到ssh连接的影响。sudo apt-get install screen打开screen screen然后启动Rails rails server &
按下“Ctrl + A”,然后按“D”键进行退出,并输入screen -r以重新进入屏幕终端。

0
这是一个使用RVM和Systemd的生产证明版本。如果出现任何原因导致服务器终止,它将保持服务器运行。
[Unit]
Description=Puma Control
After=network.target

[Service]
Type=forking
User=user
WorkingDirectory=/var/www/your_project_name

PIDFile=/var/www/your_project_name/shared/tmp/pids/puma.pid

ExecStart=/home/user/.rvm/bin/rvm default do bundle exec puma -C /var/www/your_project_name/shared/puma.rb --daemon

ExecStop=/home/user/.rvm/bin/rvm default do bundle exec pumactl -S /var/www/your_project_name/shared/tmp/pids/puma.state -F /var/www/your_project_name/shared/puma.rb stop

Restart=always
# RestartSec=10

[Install]
WantedBy=default.target

0

我建议使用Apache或其他服务器代替常规的Rails服务器,但你可以在结尾添加&并随意离开。

rails server &

这将在他关闭期间失效,请记住它对于背景专业人士很有用。 - Sivan Wolberg

0

这些步骤对我有用。我的操作系统是:Ubuntu 16.04.4 LTS

  • sudo apt-get install screen
  • screen rails s
  • CTRL + A + D 从终端分离现有进程并让其运行。

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