Capistrano überschreitet das Zeitlimit bei der Bereitstellung mit Amazon RDS

8

Ich kann Capistrano anscheinend nicht dazu bringen, gut mit AmazonRDS zu spielen. Ich habe überall nach Informationen gesucht, um das richtig einzurichten, habe aber keine gefunden. Gerade jetzt, wenn ich cap deploy , der Prozess läuft ab.

Das ist mein deploy.rb:

%Vor%

Der Benutzername für die RDS-Datenbankinstanz unterscheidet sich von dem hier festgelegten SSH-Benutzernamen, ist jedoch in meiner Datenbank.yml definiert. Ich denke, dass dies wahrscheinlich nicht von capistrano gelesen wird, aber ich habe keine Ahnung, wie ich das erreichen kann.

Wenn ich "Cap Deployment":

%Vor%

Warum sollte es den zwischengespeicherten Checkout auf allen Servern aktualisieren? Der DB-Server sollte zu diesem Zeitpunkt noch nicht einmal benötigt werden. Ich bin ratlos, wie ich das beheben kann. Hoffentlich kann mir jemand in die richtige Richtung zeigen!

    
Tony Ghita 07.06.2011, 17:46
quelle

1 Antwort

26

Ich hatte genau dieses Problem und habe damit gerungen, was ich peinlich finde, es waren gute fünf oder sechs Stunden. Am Ende, als ich realisierte, was das Problem war, fühlte ich mich, als würde ich mich selbst schlagen, weil ich das einmal wusste, aber es vergessen hatte. Hier ist der Kern des Problems, beginnend mit diesem Teil von deploy.rb:

%Vor%

Wenn Sie die Maschinenrollen für Capistrano definieren, identifizieren Sie nicht wirklich, welche Maschinen eine bestimmte Rolle spielen. Stattdessen identifizieren Sie , auf welchen Maschinen der Capistrano-Code ausgeführt wird wann ein Bereitstellungsrezept für eine Rolle anwenden Wenn Sie also die Rolle: db definieren, möchten Sie auf Ihre EC2-Instanz zeigen, nicht die RDS-Instanz. Sie können nicht in den RDS-Rechner wechseln, daher ist es für Capistrano unmöglich, dort ein Rezept auszuführen. Zeigen Sie stattdessen: db auf denselben Computer, auf den Sie zeigen: web und: app, d. H.

%Vor%

Wie wirkt sich die RDS-Maschine dann aus? Nun, es ist die Datei database.yml, die diktiert, auf welchem ​​Rechner das RDBMS ausgeführt wird, auf dem SQL ausgeführt werden soll. Sie müssen lediglich sicherstellen, dass Sie den Host: -Wert für die Zieldatenbank festlegen, z. B .:

%Vor%

Sinn machen?

Ich hoffe, dass dies jemand anderem die Frustration rettet, die ich erlebt habe.

  • David
David L. Bean 21.06.2011, 18:08
quelle

Tags und Links