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

9

我需要确保我的Django-Oscar应用程序已经安装了Apache Solr,并使用这些说明和一个 .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

这个过程应该真正成为一个后台进程,因为目前它会导致部署挂起并超时,而没有部署新的应用程序。根据这篇SO帖子,在新的应用程序版本部署后启动延迟作业需要一些工作。有什么建议吗?为了澄清:

运行

java -jar start.jar

将命令作为非阻塞、后台进程在EB中运行?
2个回答

4
所以答案最终是需要使用后部署挂钩,如所述。终止并重新启动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 &

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

不,它们正在执行,但在04_archive上失败了:我想执行目录与包获取的位置不同。 - Tui Popenoe
好的,请更新您的问题并附上您收到的错误信息。我会更新我的回答。 - Tal

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