Ich habe eine RoR-Anwendung auf AWS. Meine App verwendet SolR für die Suchmaschine, aber nach jeder Bereitstellung kann die App nicht erneut indexieren. Also muss ich Berechtigungen zurücksetzen und neu starten Solr manuell mit:Automatischer Neustart von SolR nach Elastic Beanstalk Bereitstellung
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
Jetzt ist es als eb Erweiterung Setup Ich versuche, die Bereitstellung zu automatisieren. Hier ist, was ich versuchte, in meinem .ebextensions/deploy.config:
container_commands:
1_change_permissions:
command: chmod 700 .ebextensions/setup.sh
2_restart_solr:
command: bash .ebextensions/setup.sh
Und hier sind die setup.sh Skript:
#!/bin/bash
chmod 777 -R solr/ log/ tmp/
RAILS_ENV=production rake sunspot:solr:restart
Das Ergebnis ist der Einsatz nicht funktioniert scheitern aber, nur die Berechtigungen werden korrekt geändert, und der Solr-Dienst wird ausgeführt, aber wenn ich versuche, etwas zu indizieren, schlägt es fehl (die Abfrage funktioniert einwandfrei).
Ich habe versucht, auch den Server zu stoppen, bevor die App durch Hinzufügen eines Befehle Block in meinem .ebextensions/deploy.config (und ich änderte meine sh Skript den Dienst statt Neustart zu starten) eingesetzt wird:
commands:
1_stop_solr:
command: cd /var/app/current & RAILS_ENV=production rake sunspot:solr:stop
ich habe diesen Fehler (ich weiß nicht, von wo aus es ausgeführt wird):
[2015-06-25T09: 51: 35.510Z] INFO [13207] - [CMD-AppDeploy/AppDeployStage0/EbExtensionPreBuild/Infra-EmbeddedPreBuild/prebuild_0_My_First_Elastic_Beanstalk_Application/Comm und 1_stop_solr]: Die Ausführung der Aktivität ist fehlgeschlagen, weil: rake abgebrochen wurde! konnte nicht HOME Umgebung finden - Erweiterung `~‘
EDIT 1 (nach jay Kommentar): Der Indexierungsprozess durchgeführt wird, wenn ich die Objekte speichern. Hier
ist ein Beispiel für ein Unternehmen (und wo es nicht):
class Document < ActiveRecord::Base
# .....
# SolR entity
searchable do
text :title, :description, :tags
integer :user_id
end
# .....
end
** EDIT 2: **
James Antwort nicht das Problem beheben, aber Ich weiß, dass manuell auf meine EC2-Instanz, kann ich nur die zwei folgenden Zeilen aus:
chmod 777 -R solr/ tmp/ log/
RAILS_ENV=production rake sunspot:reindex"
ich habe versucht, James' Link zu verwenden, um einen Post-Deployment-Skript zu erstellen, und die chmod funktioniert gut, aber wenn ich hinzufügen der reindex Befehl in die Datei, der Einsatz mit diesem Fehler fehlschlägt:
[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)>'
Auch, wenn ich versuche, den Befehl manuell ausführen (nach dem Post-Deployment-Skript chmod), schlägt es mit 500 Fehlern auf jedes Element neu indizieren. Also muss ich den Solr Server beenden, starten und dann neu indizieren.
Es ist wirklich schmerzhaft :)
Wie indexieren Sie Dokumente? Ein Skript verwenden? Verwenden Sie post.jar-Datei von solr? Meine Vermutung ist, dass der Prozess, der Indizes hat keine Schreibrechte für den Indexordner von solr. Das könnte erklären, warum Sie abfragen können (nur Leseberechtigung erforderlich), aber nicht indizieren kann. – jay
Ich habe meinen Beitrag mit einem Indexierungsbeispiel aktualisiert. Danke für deine Hilfe! –