Bereitstellung Ich habe folgendes Setup in meinem deploy.rbMittel SSH Forwarding mit Capistrano 3 nicht arbeiten, wenn Rails-Anwendung
set :application, 'sample_app'
set :repo_url, '[email protected]:/home/user/railsapps/sample_app'
set :deploy_to, '/var/www/sample_app'
set :user, "user"
set :ssh_options, { :forward_agent => true }
und meine deploy/production.rb Datei:
set :stage, :production
server '123.45.67.200', user: 'user', roles: %w{app db web}
ich der folgende Fehler, wenn ich cap production deploy ausführen: überprüfen
DEBUG [] ssh: connect to host 123.45.67.100 port 22: Connection timed out
DEBUG [] fatal: Could not read from remote repository.
Please make sure you have the correct access rights and the repository exists.
(Backtrace restricted to imported tasks)
cap aborted!
SSHKit::Runner::ExecuteError: Exception while executing as [email protected]: git exit status: 128
git stdout: Nothing written
git stderr: ssh: connect to host 123.45.67.200 port 22: Connection timed out
fatal: Could not read from remote repository.
Please make sure you have the correct access rights and the repository exists.
In einer der Zeilen, sehe ich, dass es versucht, auf das Repository zugreifen als [email protected], die die Bereitstellung Benutzer für den Produktionsserver ist:
INFO [] Running /usr/bin/env git ls-remote --heads [email protected]:/home/user/railsapps/sample_app as [email protected]
Sollte es nicht sagen, dass es mit den lokalen SSH-Schlüssel wie der lokale Benutzer-Anschluss? Registriert Capistrano sich auf dem Produktionsserver und zieht dann Code aus dem Repository? Wenn ja, gibt es eine Möglichkeit, Code vom Repository auf den Produktionsserver zu übertragen?
Capistrano funktioniert durch Ziehen des aktualisierten Codes. Es meldet sich auf dem Produktionsserver an und macht von dort aus einen Git-Pull. Wenn Sie Schlüssel weiterleiten, ist der lokale Schlüssel verfügbar. Überprüfen Sie jedoch, ob Sie den Repo als Bereitstellungsbenutzer klonen können –