【问题标题】:Redmine autostart after Debian 7.9 rebootDebian 7.9 重启后 Redmine 自动启动
【发布时间】:2017-09-06 06:10:49
【问题描述】:

我正在尝试在重新启动 Debian 7.9 后配置 Redmine 的自动启动,但是我做不到。通常我用两个命令启动 Redmine:

  1. cd /opt/redmine/current
  2. ruby 脚本/rails server webrick -e production -d

为了自动启动,我创建了 LSBInitScript (/etc/init.d/redmine)。 https://wiki.debian.org/LSBInitScripts

脚本的全部内容:

#!/bin/bash
### BEGIN INIT INFO
# Provides:          redmine
# Required-Start:    $all
# Required-Stop:     $all
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: redmine webrick
# Description:       redmine webrick server autostart-script
### END INIT INFO

. /lib/lsb/init-functions

# Modify it to your configuration
DIR=/opt/redmine/current

# Start Redmine in daemon mode.
start(){
    log_daemon_msg "Starting Redmine WebRick"
        cd $DIR
        log_progress_msg
        ruby script/rails server webrick -e production -d > redmine-start.log 2>&1
        log_progress_msg
        log_end_msg 0
}

# Stop Redmine daemon
stop(){
        log_daemon_msg "Stopping Redmine WebRick"
        RUBYPID=`ps aux | grep "ruby script/rails server webrick -e production -d" | grep -v grep | awk '{print $2}'`
        log_progress_msg
        if [ "x$RUBYPID" != "x" ]; then
                kill -2 $RUBYPID
        fi
        log_end_msg 0
}

# Check if Redmine is running
status(){
        RUBYPID=`ps aux | grep "ruby script/rails server webrick -e production -d" | grep -v grep | awk '{print $2}'`
        if [ "x$RUBYPID" = "x" ]; then
                echo "* Redmine is not running"
        else
                echo "* Redmine is running"
        fi
}


case "$1" in
        start)
                start
                ;;

        stop)
                stop
                ;;

        status)
                status
                ;;

        restart|force-reload)
                stop
                start
                ;;

        *)
                echo "Usage: $0 {start|stop|restart|force-reload|status}"
                exit 1

esac

我将文件 /etc/init.d/redmine 设为可执行文件,并通过

将其添加到启动序列中

update-rc.d redmine 默认值

重启操作系统后会执行redmine脚本,如redmine-start.log文件所示,但是该文件报错。

完整的输出如下所示:

/var/lib/gems/1.9.1/gems/bundler-1.10.6/lib/bundler/spec_set.rb:92:in `block in materialize ': Could not find json-1.8.3 in any of the sources ( Bundler :: GemNotFound)
        from /var/lib/gems/1.9.1/gems/bundler-1.10.6/lib/bundler/spec_set.rb:85:in `map! '
        from /var/lib/gems/1.9.1/gems/bundler-1.10.6/lib/bundler/spec_set.rb:85:in `materialize '
        from /var/lib/gems/1.9.1/gems/bundler-1.10.6/lib/bundler/definition.rb:140:in `specs'
        from /var/lib/gems/1.9.1/gems/bundler-1.10.6/lib/bundler/definition.rb:185:in `specs_for '
        from /var/lib/gems/1.9.1/gems/bundler-1.10.6/lib/bundler/definition.rb:174:in `requested_specs'
        from /var/lib/gems/1.9.1/gems/bundler-1.10.6/lib/bundler/environment.rb:18:in `requested_specs'
        from /var/lib/gems/1.9.1/gems/bundler-1.10.6/lib/bundler/runtime.rb:13:in `setup '
        from /var/lib/gems/1.9.1/gems/bundler-1.10.6/lib/bundler.rb:127:in `setup '
        from /var/lib/gems/1.9.1/gems/bundler-1.10.6/lib/bundler/setup.rb:18:in `<top (required)> '
        from /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:60:in `require '

据我判断,此错误表示找不到文件 json-1.8.3,而且问题似乎是没有安装某些东西。但是,如果我尝试手动启动 redmine,即

/etc/init.d/redmine start

这样的开始将毫无错误地发生。下一个自然的假设是错误是在系统启动后启动脚本的顺序。但是这个假设并没有给出任何东西,因为这条线应该确保Redmine尽可能晚地推出。

必需的开始:$all

我也手动尝试获取一些加载顺序,但这不起作用。 如果不是 /etc/init.d 我将脚本添加到 /etc/rc.local 并且如果不是 update- rc.d 我使用 insserv

指南,其他人的脚本给出了同样的错误,在这种情况下我在谷歌中找不到提及。

我该如何解决这个问题?

【问题讨论】:

    标签: ruby-on-rails linux redmine system-administration


    【解决方案1】:

    /etc/init.d 中手动运行脚本不是一个好主意。该脚本将使用从 your shell 继承的环境运行。所以很有可能你的环境中的某些东西使它起作用。

    要使用其/etc/init.d 脚本启动服务,请使用service,因此:service redmine start。如果这确实是环境问题,这也可能会失败。

    【讨论】:

    • 你是对的。我声明了一些环境变量(export var1=.. 等),并且能够通过 service redmine start 让 Redmine 运行但是,当我重新启动操作系统时,出现错误,但是其他。 /usr/local/rvm/gems/ruby-2.1.5/gems/rmagick-2.13.4/lib/RMagick2.so: [BUG] Segmentation fault ruby​​ 1.9.3p194 -- Ruby 级别的回溯信息 ------ ---------------------------------- script/rails:6:in &lt;main&gt;' script/rails:6:in require'
    猜你喜欢
    • 2016-05-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-20
    • 2013-05-31
    • 1970-01-01
    • 2015-01-25
    • 2016-02-01
    相关资源
    最近更新 更多