0

私は弾薬の豆腐の環境にDjango Channelsを追加しようとしていますが、問題が発生してsupervisordに設定されています。AWS環境でsupervisordを実行しています

container_commands: 
    01_copy_supervisord_conf: 
    command: "cp .ebextensions/supervisord/supervisord.conf /opt/python/etc/supervisord.conf" 
    02_reload_supervisord: 
    command: "supervisorctl -c /opt/python/etc/supervisord.conf reload" 

Elastic BeanstalkでのCLIを使用して、次のエラーメッセージで2番目のコマンドでこのエラーが発生すると、::

Command failed on instance. Return code: 1 Output: error: <class 
    'FileNotFoundError'>, [Errno 2] No such file or directory: 
    file: /opt/python/run/venv/local/lib/python3.4/site- 
    packages/supervisor/xmlrpc.py line: 562. 
    container_command 02_reload_supervisord in 
    .ebextensions/channels.config failed. 

私の推測ではsupervisorになり具体的には、/.ebextensionsに私はこのコードでファイルchannels.configを持っています正しくインストールされませんでしたが、コマンド1はエラーなしでファイルをコピーするため、実際にsupervisorがインストールされていると思っています。コンテナコマンドに問題があります。誰もAWS環境でsupervisorを実装していて、どこが間違っているのか分かりますか?

答えて

1

あなたはここに

はどのようにそれは多分それはここで

packages: 
    yum: 
    python27-setuptools: [] 
container_commands: 
    01-supervise: 
    command: ".ebextensions/supervise.sh" 

を助けることができなかったです、Pythonのバージョンと正確なインストールパスに注意する必要がありますsupervise.shは

#!/bin/bash 
if [ "${SUPERVISE}" == "enable" ]; then 

export HOME="/root" 
export PATH="/sbin:/bin:/usr/sbin:/usr/bin:/opt/aws/bin" 

easy_install supervisor 

cat <<'EOB' > /etc/init.d/supervisord 

    # Source function library 
    . /etc/rc.d/init.d/functions 

    # Source system settings 
    if [ -f /etc/sysconfig/supervisord ]; then 
     . /etc/sysconfig/supervisord 
    fi 

    # Path to the supervisorctl script, server binary, 
    # and short-form for messages. 
    supervisorctl=${SUPERVISORCTL-/usr/bin/supervisorctl} 
    supervisord=${SUPERVISORD-/usr/bin/supervisord} 
    prog=supervisord 
    pidfile=${PIDFILE-/var/run/supervisord.pid} 
    lockfile=${LOCKFILE-/var/lock/subsys/supervisord} 
    STOP_TIMEOUT=${STOP_TIMEOUT-60} 
    OPTIONS="${OPTIONS--c /etc/supervisord.conf}" 
    RETVAL=0 

    start() { 
     echo -n $"Starting $prog: " 
     daemon --pidfile=${pidfile} $supervisord $OPTIONS 
     RETVAL=$? 
     echo 
     if [ $RETVAL -eq 0 ]; then 
      touch ${lockfile} 
      $supervisorctl $OPTIONS status 
     fi 
     return $RETVAL 
    } 

    stop() { 
     echo -n $"Stopping $prog: " 
     killproc -p ${pidfile} -d ${STOP_TIMEOUT} $supervisord 
     RETVAL=$? 
     echo 
     [ $RETVAL -eq 0 ] && rm -rf ${lockfile} ${pidfile} 
    } 

    reload() { 
     echo -n $"Reloading $prog: " 
     LSB=1 killproc -p $pidfile $supervisord -HUP 
     RETVAL=$? 
     echo 
     if [ $RETVAL -eq 7 ]; then 
      failure $"$prog reload" 
     else 
      $supervisorctl $OPTIONS status 
     fi 
    } 

    restart() { 
     stop 
     start 
    } 

    case "$1" in 
     start) 
      start 
      ;; 
     stop) 
      stop 
      ;; 
     status) 
      status -p ${pidfile} $supervisord 
      RETVAL=$? 
      [ $RETVAL -eq 0 ] && $supervisorctl $OPTIONS status 
      ;; 
     restart) 
      restart 
      ;; 
     condrestart|try-restart) 
      if status -p ${pidfile} $supervisord >&/dev/null; then 
       stop 
       start 
      fi 
      ;; 
     force-reload|reload) 
      reload 
      ;; 
     *) 
      echo $"Usage: $prog {start|stop|restart|condrestart|try-restart|force-reload|reload}" 
      RETVAL=2 
    esac 

    exit $RETVAL 
    EOB 

     chmod +x /etc/init.d/supervisord 

     cat <<'EOB' > /etc/sysconfig/supervisord 
    # Configuration file for the supervisord service 
    # 
    # Author: Jason Koppe <[email protected]> 
    #    orginal work 
    #   Erwan Queffelec <[email protected]> 
    #    adjusted to new LSB-compliant init script 

    # make sure elasticbeanstalk PARAMS are being passed through to supervisord 
    . /opt/elasticbeanstalk/support/envvars 

    # WARNING: change these wisely! for instance, adding -d, --nodaemon 
    # here will lead to a very undesirable (blocking) behavior 
    #OPTIONS="-c /etc/supervisord.conf" 
    PIDFILE=/var/run/supervisord/supervisord.pid 
    #LOCKFILE=/var/lock/subsys/supervisord.pid 

    # Path to the supervisord binary 
    SUPERVISORD=/usr/local/bin/supervisord 

    # Path to the supervisorctl binary 
    SUPERVISORCTL=/usr/local/bin/supervisorctl 

    # How long should we wait before forcefully killing the supervisord process ? 
    #STOP_TIMEOUT=60 

    # Remove this if you manage number of open files in some other fashion 
    #ulimit -n 96000 
    EOB 

     mkdir -p /var/run/supervisord/ 
     chown webapp: /var/run/supervisord/ 

     cat <<'EOB' > /etc/supervisord.conf 
    [unix_http_server] 
    file=/tmp/supervisor.sock 
    chmod=0777 

    [supervisord] 
    logfile=/var/app/support/logs/supervisord.log 
    logfile_maxbytes=0 
    logfile_backups=0 
    loglevel=warn 
    pidfile=/var/run/supervisord/supervisord.pid 
    nodaemon=false 
    nocleanup=true 
    user=webapp 

    [rpcinterface:supervisor] 
    supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface 

    [supervisorctl] 
    serverurl=unix:///tmp/supervisor.sock 

    [program:process-ipn-api-gpsfsoft] 
    command = -- command that u want to run --- 
    directory = /var/app/current/ 
    user = webapp 
    autorestart = true 
    startsecs = 0 
    numprocs = 10 
    process_name = -- process name that u want --- 

    EOB 

     # this is now a little tricky, not officially documented, so might break but it is the cleanest solution 
     # first before the "flip" is done (e.g. switch between ondeck vs current) lets stop supervisord 
     echo -e '#!/usr/bin/env bash\nservice supervisord stop' > /opt/elasticbeanstalk/hooks/appdeploy/enact/00_stop_supervisord.sh 
     chmod +x /opt/elasticbeanstalk/hooks/appdeploy/enact/00_stop_supervisord.sh 
     # then right after the webserver is reloaded, we can start supervisord again 
     echo -e '#!/usr/bin/env bash\nservice supervisord start' > /opt/elasticbeanstalk/hooks/appdeploy/enact/99_z_start_supervisord.sh 
     chmod +x /opt/elasticbeanstalk/hooks/appdeploy/enact/99_z_start_supervisord.sh 
    fi 

ですPS:この実行を取得するには、Elasticbeanstalk環境値でSUPERVISEをEnableとして定義してください。

+0

これは便利ですが、コンテナコマンドを使用してスクリプトを呼び出そうとすると、権限エラーが発生します。 'コマンドはインスタンス上で失敗しました。リターンコード:126出力:/ bin/sh:.ebextensions/supervise.sh: 許可が拒否されました。 – hackerman

関連する問題