4

在 /etc/thin/ 我有几个 yml 文件。当我运行service thin stop -C /etc/thin/app.yml瘦时停止所有应用程序,而不仅仅是我指定的应用程序。

如何让我只停止/启动指定的应用程序?

更新:嗯,/etc/init.d/thin有这个:$DAEMON restart --all $CONFIG_PATH。这解释了很多。是否有更智能的 init.d 脚本?这是我的脚本:

https://gist.github.com/1003131

也可以看看:

使用瘦即服务运行 Rails 应用程序

4

3 回答 3

5

您必须编辑 /etc/init.d/thin 添加新操作或修改“重新启动”操作。

如您所见,--all $CONFIG_PATH将命令发送到所有瘦实例。

将初始化脚本粘贴到某个地方,我们可以找到一个不错的解决方案;)

更新:

尝试在下面添加以下

restart)
  $DAEMON restart --all $CONFIG_PATH
  ;;
restart-single)
  $DAEMON restart -C $2
  ;;
stop-single)
  $DAEMON stop -C $2
  ;;

我没有尝试过,但它应该工作得很好。这是一个非常简单的解决方案(没有错误检查),我们添加了 2 个必须调用的新操作:

service thin restart-single /etc/thin/your_app.yml
or
service thin stop-single /etc/thin/your_app.yml

让我知道它是否有效;)

干杯,A.

于 2011-06-01T14:28:33.630 回答
0

这很奇怪,我从 gem 本身为脚本添加了一个补丁,用于下一次构建的 init 脚本,以允许在未来的安装中重新启动

重启文件) $DAEMON 重启 -C $2 ;;

但是 gem 所有者拒绝了合并,并说你可以使用瘦启动 - C /path/ 这很奇怪,因为我已经尝试了很多次并且脚本本身说 --all 并且不允许单个配置,我也尝试按照他说的做,显然它重新启动了所有脚本,因为脚本使用了所有内容,任何人都可以更清楚地了解这个https://github.com/macournoyer/thin/pull/176

于 2013-05-21T07:05:47.653 回答
0

我提出了另一种解决方案(我认为这更方便):

  1. 设置/etc/init.d/thin文件的内容以使用我的修复:

    #!/bin/sh
    ### BEGIN INIT INFO
    # Provides:          thin
    # Required-Start:    $local_fs $remote_fs
    # Required-Stop:     $local_fs $remote_fs
    # Default-Start:     2 3 4 5
    # Default-Stop:      S 0 1 6
    # Short-Description: thin initscript
    # Description:       thin
    ### END INIT INFO
    
    # Original author: Forrest Robertson
    
    # Do NOT "set -e"
    
    DAEMON=/usr/local/bin/thin
    SCRIPT_NAME=/etc/init.d/thin
    CONFIG_PATH=/etc/thin
    
    # Exit if the package is not installed
    [ -x "$DAEMON" ] || exit 0
    
    if [ "X$2" = X ] || [ "X$3" = X ]; then
        INSTANCES="--all $CONFIG_PATH"
    else
        INSTANCES="-C $3"
    fi
    
    case "$1" in
      start)
      $DAEMON start $INSTANCES 
      ;;
      stop)
      $DAEMON stop $INSTANCES
      ;;
      restart)
      $DAEMON restart $INSTANCES
      ;;
      *)
      echo "Usage: $SCRIPT_NAME {start|stop|restart} (-C config_file.yml)" >&2
      exit 3
      ;;
    esac
    
    :
    
  2. 使用thin restart -C /etc/thin/my_website.yml. 可以将此类语法与start,restartstop命令一起使用。然而,thin restart(或startstop,当然)会影响所有已注册的实例。

于 2012-12-20T11:00:09.753 回答