使用 Django 自动设置 Apache Solr - Oscar on AWS Elastic Beanstalk
Automatically setup Apache Solr with Django - Oscar on AWS Elastic Beanstalk
我需要确保 Apache Solr is installed with my django-oscar application, and have been using these 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"
我需要 add/update 什么才能让 solr 在
上自动安装
eb deploy
?
更新:将 bash 更改为单个命令。看起来该过程正在完成,但是在执行 java -jar start.jar 时,.ebextensions/03_solr.config
任务会执行
org.eclipse.jetty.server.AbstractConnector - Started SocketConnector@0.0.0.0:8983
这个进程实际上应该是一个后台进程,因为目前它导致部署挂起,并且在没有部署新应用程序的情况下超时。根据 this SO post,在部署新应用程序版本后启动延迟作业需要一些工作。有什么建议么?澄清一下:
运行
java -jar start.jar
命令作为 EB 的非阻塞后台进程?
请注意,每个步骤都在默认文件夹中执行,因此发出 cd
命令是无效的。您应该 运行 在一个命令中而不是多个命令中执行所有这些步骤。
步骤 04 将失败,因为它在默认目录而不是 solr 目录中启动
所以最终的答案是需要使用 post 部署挂钩,如前所述。终止并重新启动 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 &
我需要确保 Apache Solr is installed with my django-oscar application, and have been using these 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"
我需要 add/update 什么才能让 solr 在
上自动安装eb deploy
?
更新:将 bash 更改为单个命令。看起来该过程正在完成,但是在执行 java -jar start.jar 时,.ebextensions/03_solr.config
任务会执行
org.eclipse.jetty.server.AbstractConnector - Started SocketConnector@0.0.0.0:8983
这个进程实际上应该是一个后台进程,因为目前它导致部署挂起,并且在没有部署新应用程序的情况下超时。根据 this SO post,在部署新应用程序版本后启动延迟作业需要一些工作。有什么建议么?澄清一下:
运行
java -jar start.jar
命令作为 EB 的非阻塞后台进程?
请注意,每个步骤都在默认文件夹中执行,因此发出 cd
命令是无效的。您应该 运行 在一个命令中而不是多个命令中执行所有这些步骤。
步骤 04 将失败,因为它在默认目录而不是 solr 目录中启动
所以最终的答案是需要使用 post 部署挂钩,如前所述。终止并重新启动 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 &