在AWS Elastic Beanstalk上使用Django - Oscar自动设置Apache Solr

时间:2015-12-07 04:21:27

标签: django solr elastic-beanstalk django-oscar

我需要确保使用我的django-oscar应用程序安装Apache Solr,并使用这些instructions和.ebextensions配置文件来自动安装Solr并重建索引。

这是.ebextensions / 03_solr.config

container_commands:
  01_install_solr:
    command: "wget http://archive.apache.org/dist/lucene/solr/4.7.2/solr-4.7.2.tgz &&
    tar xzf solr-4.7.2.tgz &&
    cd solr-4.7.2.example/solr/collection1 && 
    mv conf conf.original && 
    ln -s /opt/python/current/app/deploy/solr conf &&
    cd ../.. && 
    java -jar start.jar"
  02_rebuild_index:
    command: "python manage.py rebuild_index --noinput"

我需要在此处添加/更新以使solr自动安装在

eb deploy

更新:将bash更改为单个命令。看起来该过程正在完成,但在执行java -jar start.jar时,.ebextensions/03_solr.config任务执行

org.eclipse.jetty.server.AbstractConnector - Started SocketConnector@0.0.0.0:8983

此过程应该是后台进程,因为它正在导致部署挂起,并在不部署新应用程序的情况下超时。根据{{​​3}},在部署新应用程序版本之后启动延迟作业需要一些工作。有什么建议?澄清:

运行

java -jar start.jar

命令作为EB的非阻塞后台进程?

2 个答案:

答案 0 :(得分:3)

所以答案确实最终需要使用后部署钩子,如上所述。终止并重新启动EB EC2实例和全新部署解决了这个问题。

container_commands:
  01_install_solr:
    command: "cd /opt/python/current/app &&
    wget http://archive.apache.org/dist/lucene/solr/4.7.2/solr-4.7.2.tgz &&
    tar xzf solr-4.7.2.tgz &&
    cd solr-4.7.2/example/solr/collection1/ &&
    cp -r conf conf.original &&
    ln -s /opt/python/current/app/deploy/solr conf"
    leader_only: true
  02_rebuild_index:
    command: "python manage.py rebuild_index --noinput"
    leader_only: true
commands:
  create_post_dir:
    command: "mkdir /opt/elasticbeanstalk/hooks/appdeploy/post"
    ignoreErrors: false

  files:
    "/opt/elasticbeanstalk/hooks/appdeploy/post/start_solr.sh":
      mode: "000755"
      owner: root
      group: root
      content: |
        #!/usr/bin/env bash
        nohup java -jar /opt/python/current/app/solr-4.7.2/example/start.jar queue:work --daemon >/dev/null 2>&1 &

答案 1 :(得分:2)

请注意,每个步骤都在默认文件夹中执行,因此发出cd命令无效。您应该在一个命令中而不是多个命令中运行所有这些步骤 步骤04将失败,因为它在默认目录而不是solr one

中启动