gpt4 book ai didi

ruby-on-rails - Elastic Beanstalk 部署后自动重启 SolR

转载 作者:行者123 更新时间:2023-12-04 03:42:04 27 4
gpt4 key购买 nike

我在 AWS 上有一个 RoR 应用程序。
我的应用程序使用 SolR 作为搜索引擎,但每次部署后,应用程序无法再次索引。所以我必须重置权限并手动重新启动 Solr:

chmod 777 -R /solr /tmp /log
RAILS_ENV=production rake sunspot:solr:stop # or I kill the processus if it doesn't work :D
RAILS_ENV=production rake sunspot:solr:start
RAILS_ENV=production rake sunspot:reindex

现在我正在尝试将其设置为 eb 扩展以自动化部署。
这是我在 .ebextensions/deploy.config 中尝试的内容:
container_commands:
1_change_permissions:
command: chmod 700 .ebextensions/setup.sh
2_restart_solr:
command: bash .ebextensions/setup.sh

这是 setup.sh 脚本:
#!/bin/bash
chmod 777 -R solr/ log/ tmp/
RAILS_ENV=production rake sunspot:solr:restart

结果是部署没有失败,但只有权限被正确更改,并且 solr 服务正在运行,但是当我尝试索引某些内容时,它失败了(查询工作正常)。

我还尝试通过在我的 .ebextensions/deploy.config 中添加命令块来在部署应用程序之前停止服务器(并且我更改了我的 sh 脚本以启动服务而不是重新启动):
commands:
1_stop_solr:
command: cd /var/app/current & RAILS_ENV=production rake sunspot:solr:stop

我收到此错误(我不知道从哪里执行):

[2015-06-25T09:51:35.510Z] INFO [13207] - [CMD-AppDeploy/AppDeployStage0/EbExtensionPreBuild/Infra-EmbeddedPreBuild/prebuild_0_My_First_Elastic_Beanstalk_Application/Command 1_stop_solr] ,因为:borted!Activityaker
找不到 HOME 环境 -- 展开`~'

编辑 1(遵循 jay 的评论):
当我保存对象时,索引过程就完成了。

这是一个实体的示例(以及它失败的地方):
class Document < ActiveRecord::Base

# .....

# SolR entity
searchable do
text :title, :description, :tags
integer :user_id
end

# .....

end

**编辑2:**

詹姆斯的回答并没有解决问题,但是,
我意识到在我的 EC2 实例上手动运行,我可以运行以下两行:
chmod 777 -R solr/ tmp/ log/
RAILS_ENV=production rake sunspot:reindex"

我尝试使用 James 的链接来创建部署后脚本,并且 chmod 运行良好,但是当我将 reindex 命令添加到文件中时,部署失败并出现以下错误:
[2015-07-07T16:26:25.509Z] INFO  [20402] - [CMD-AppDeploy/AppDeployStage1/AppDeployPostHook/99_restart_delayed_job.sh] : Activity execution failed, because: rake aborted!
Could not find rake-10.4.2 in any of the sources
/var/app/current/config/boot.rb:3:in `<top (required)>'
/var/app/current/config/application.rb:1:in `<top (required)>'
/var/app/current/Rakefile:4:in `<top (required)>'

此外,如果我尝试手动运行该命令(在部署后脚本 chmod 之后),它会失败并在每个项目上出现 500 个错误以重新编制索引。所以我需要杀死 solr 服务器,启动然后重新索引。

真的很痛苦:)

最佳答案

我对 Beanstalk 一无所知,但看起来正在执行您的命令的 shell 没有您期望的环境变量。假设这篇博文位于 post-deployment scripts是正确的,您应该可以更改您的 setup.sh脚本如下:

 #!/usr/bin/env bash
. /opt/elasticbeanstalk/support/envvars
cd $EB_CONFIG_APP_CURRENT
su -c "RAILS_ENV=production /usr/local/bin/rvm 2.2 do rake sunspot:solr:restart" $EB_CONFIG_APP_USER

关于ruby-on-rails - Elastic Beanstalk 部署后自动重启 SolR,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31047572/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com