Capistrano einsetzen. aber wie?

Serverkonfiguration & Management der laufenden Anwendung

Capistrano einsetzen. aber wie?

Beitragvon megawatt am 06.12.2007, 20:44

Hallo Zusammen,
habe mal ein Tut über Capistrano gelesen, bin damit aber garnicht zurecht gekommen. Gibt es irgendwo ne deutsche Anleitung die man versteht?

Sanfte Grüße
Megawatt
megawatt
 
Beiträge: 30
Registriert: 06.12.2007, 20:38

Re: Capistrano einsetzen. aber wie?

Beitragvon megawatt am 13.04.2008, 00:00

Hallo zusammen,

inzwischen ist doch einiges an Zeit zum obigen Eintrag vergangen. Ich habe nun Capistrano zum Arbeiten überreden können. Dafür waren folgende Schritte notwendig:

    1. Capistrano über die Konsole installieren: gem install capistrano
    2. Falls ruby 1.8.6 verwendet wird, wird zur Ausräumung eines Bugs vorgeschlagen, Fastthread nachzuinstallieren. Dies geschieht mit gem install fastthread. Vorsicht, das geht zur Zeit nur mit alten Gems (Version <= 0.9.4). Also: ggf. Downgrade des Gems.
    3. Wenn eine Windows-Maschine verwendet wird, muss noch lokal ein SSH-Client installiert werden. Ich habe diesen installiert: http://subversion.tigris.org/servlets/P ... olderID=91 (anschließend muss die Kiste neu hestartet werden).
    4. Jetzt kann man über die Konsole in das Verzeichnis der Rails-Applikation wechseln und capify . (mit Punkt, bitte) eingeben.
    5. Im Verzeichnis conf hat Capistrano nun eine Datei namens deploy.rb angelegt. Hier müssen nun ein paar Informationen zum SVN-Repository, ggf. zum Deploy-Ziel und zum Server eingetragen werden.
    Sollte es Probleme bei https-Repositories in der Form geben, dass bspw. ein Zertifikat bestätigt werden muss, die Tatstatureingabe aber nicht funktioniert (warum es auch immer bei mir nicht funktioniert hat), so kann man in der deploy.rb noch default_run_options[:pty]=true einfügen. Diese Angabe sorgt für ein automatisches Bestätigen des Zertifikates.

Wichtig ist bei alldem noch, dass der auf dem SVN-Repository angelegte Nutzer sich auch auf dem Produktionsserver "befindet" - mit dem gleichen Passwort.

Über den Konsolenbefehl cap deploy:setup wird zunächst nur die Verzeichnisstruktur auf dem Produktionsserver angelegt. Über cap deploy:cold kann man schliesslich das erste mal alle Daten auf den Produktionsserver kopieren. Ein "normales" Deploy erfolgt dann über cap deploy.
megawatt
 
Beiträge: 30
Registriert: 06.12.2007, 20:38

Capistrano im Production-Mode deployen

Beitragvon megawatt am 14.04.2008, 11:20

Nachtrag:

Ich habe einen Lighttpd, der meine Rails-Applikation im Production-Modus fahren soll. Dazu habe ich in der lighttpd.conf-Datei einfach die folgende Definition hinzugefügt:
Code: Alles auswählen
"bin-environment" => ( "RAILS_ENV" => "production" )


Übrigens auch ein Fehler, der schnell passieren kann: In der dispatch.fcgi (auf einer Windows-Entwicklungsumgebung) steht in der ersten Zeile ein WIndowspfad. Wenn der Produktivserver dann ein Linuxsystem ist, muss man diese Zeile mit
Code: Alles auswählen
#!/usr/bin/ruby (also Pfad zum Ruby-Interpreter)

auswechseln. Am besten, man fügt der deploy.rb auch noch folgende Task hinzu:
Code: Alles auswählen
task :after_update_code, :roles => [:web, :db, :app] do
  run "chmod 755 #{release_path}/public -R"
end
megawatt
 
Beiträge: 30
Registriert: 06.12.2007, 20:38

Re: Capistrano einsetzen. aber wie?

Beitragvon stefan1397 am 13.04.2009, 10:21

Hallo,

Bin langsam am verzweifeln. Vl versteht ihr was ich hier nicht ganz richtig mache. Ich betreibe in meinem Intranet vorerst zu test- und lernzwecken einen linuxserver mit ubuntu 8.10. dieser hat bei mir im netz die ip 192.168.0.24.
ich hab ihn komplett konfiguriert, apache, mongrel, mysql, rails etc. alles drauf.
eigenes repository hab ich mir unter /srv/svn eingerichtet. der server ist auch wunderbar per ssh oder http erreichbar. der svn import funktioniert ebenfalls ohne fehlermeldung.
doch nun zum eigentlichen problem:

ich habe schrittweise die anleitung in dem openbook von galileo-computing durchgearbeitet doch der befehl cap deploy:cold schlägt fehl. hier mal der output:

Code: Alles auswählen
stefan@stefan-laptop:~/NetBeansProjects/Neuer Ordner/trunk$ cap deploy:cold  * executing `deploy:cold'
  * executing `deploy:update'
** transaction: start
  * executing `deploy:update_code'
    executing locally: "svn info svn+ssh://deploy@192.168.0.24/srv/svn/OnlineInsurance/trunk  -rHEAD"
deploy@192.168.0.24's password:
Permission denied, please try again.
deploy@192.168.0.24's password:
  * executing "svn export -q  -r1 svn+ssh://deploy@192.168.0.24/srv/svn/OnlineInsurance/trunk /srv/www/OnlineInsurance/releases/20090412195144 && (echo 1 > /srv/www/OnlineInsurance/releases/20090412195144/REVISION)"
    servers: ["192.168.0.24"]
Password:
    [192.168.0.24] executing command
** [192.168.0.24 :: err] Permission denied, please try again.
** [192.168.0.24 :: err] Permission denied, please try again.
** [192.168.0.24 :: err] Permission denied (publickey,password).
** svn: Connection closed unexpectedly
    command finished
*** [deploy:update_code] rolling back
  * executing "rm -rf /srv/www/OnlineInsurance/releases/20090412195144; true"
    servers: ["192.168.0.24"]
    [192.168.0.24] executing command
    command finished
failed: "sh -c \"svn export -q  -r1 svn+ssh://deploy@192.168.0.24/srv/svn/OnlineInsurance/trunk /srv/www/OnlineInsurance/releases/20090412195144 && (echo 1 > /srv/www/OnlineInsurance/releases/20090412195144/REVISION)\"" on 192.168.0.24
stefan@stefan-laptop:~/NetBeansProjects/Neuer Ordner/trunk$



bei den passwort einfragen gebe ich immer das passwort für den user deploy an. passwor tist auch korrekt schon mehrfach an anderer stelle getestet

hier meine deploy.rb:

Code: Alles auswählen
require 'mongrel_cluster/recipes'
# =============================
# = Allgemeine Einstellungen =
# =============================
set :application, "OnlineInsurance"
set :domain, "192.168.0.24"
set :repository,
"svn+ssh://deploy@192.168.0.24/srv/svn/OnlineInsurance/trunk"
set :deploy_to, "/srv/www/#{application}"
set :scm, :subversion
set :deploy_via, :export # default ist :checkout
set :user, "deploy" # default ist der aktuelle User
set :use_sudo, true # Verwende kein sudo

# =========
# = Roles =
# =========
role :app, "#{domain}"
role :web, "#{domain}"
role :db, "#{domain}", :primary => true

# ===========
# = Mongrel =
# ===========
# Anzahl Mongrel-Servers
set :mongrel_servers, 3

# Erste Port-Nummer, die verwendet wird.
# Bei drei Servern werden 8020, 8021 und 8022 verwendet.
set :mongrel_port, 8020

# Path to conf file.
# Defaults to /etc/mongrel_cluster/app_name.conf
set :mongrel_conf, "/etc/mongrel_cluster/#{application}.yml"

# Rails-Umgebung (Environment) in der die Rails-Applikation
# ausgeführt wird
set :mongrel_environment, 'production'


die deploy.rb ist 1:1 aus dem openbook übernommen und an meinen server angepasst worden.

gut. mein erster gedanke. nachdem ich permission denied las -> deploy.rb ändern auf set :use_sudo = true

bringt nix. deploy user admin rechte erteilt-> ohne erfolg
langsam verzweifel ich. hat irgendwer von euch vl eine lösung oder muss ich das ganze schmeissen

noch ein paar nebeninfos:

rails: server und entwickler rechner: 2.3.2
ruby: server und entwicklerrechner: 1.8.7 (2008-08-11 patchlevel 72) [i486-linux]
gem: server und entwicklerrechner: 1.3.1
mongrel: 1.1.5
mongrel-cluster: 1.0.5
capistrano: 2.5.5 (logischerweise nur am entwicklerrechner)

hab in einem anderen forum den tipp bekommen das es vl am ssh zertifikst liegen könnte. hatte vorher eines ohne passwort laut dieser anleitung aus dem openbook erstellt:

Wenn Sie häufig Capistrano verwenden, ist es praktisch, wenn Sie nicht jedes Mal das Passwort eingeben müssen. Um das einzurichten, müssen Sie einen privaten und einen öffentlichen SSH-Schlüssel generieren und den öffentlichen Schlüssel auf dem Server ablegen. Führen Sie dazu folgende Schritte auf Ihrem lokalen Rechner durch:

1. SSH-Schlüssel generieren

ssh-keygen -t rsa

Sie werden nach einer Passphrase gefragt. Geben Sie nichts ein, indem Sie die Eingabetaste drücken.

2. Verzeichnis .ssh auf dem Server erstellen

ssh deploy@ihr-server "mkdir .ssh; chmod 0700 .ssh"

3. Übertragen des öffentlichen Schlüssels auf den Server

scp .ssh/id_rsa.pub \
deploy@ihr-server:.ssh/authorized_keys2}

4. Testen

Wenn Sie sich nun mit ssh deploy@ihr-server auf Ihrem Server einloggen, sollten Sie nicht mehr nach einem Passwort gefragt werden.

Um zu vermeiden, dass Sie nach dem Passwort des SVN-Repository gefragt werden, sollten Sie sich mit dem User deploy an dem Server anmelden und einen SVN-Befehl, wie z. B. den List-Befehl, ausführen:

ssh deploy@ihr-server "svn list \
=svn+ssh://ihr-server/srv/svn/railsair"=


hab dann ein neues zertifikat erstellt und das alte überschrieben. ich hab als passwort das von dem user deploy gewählt. nach einem erneuten
Code: Alles auswählen
cap deploy:cold
habe ich wieder den gleichen fehler bekommen wie oben. hab weiters probiert die dateien
authorized_keys2}
und
known_hosts
auf dem server im verzeichnis .ssh auf dem server im home verzeichnis des users deploy umbenannt in
authorized_keys2}.bak
und
known_hosts.bak
.

nach erneutem cap deploy:cold versuch hab ich folgenden leicht geänderten error:

Code: Alles auswählen
stefan@stefan-laptop:~/NetBeansProjects/Neuer Ordner/trunk$ cap deploy:cold
  * executing `deploy:cold'
  * executing `deploy:update'
** transaction: start
  * executing `deploy:update_code'
    executing locally: "svn info svn+ssh://deploy@192.168.0.24/srv/svn/OnlineInsurance/trunk  -rHEAD"
deploy@192.168.0.24's password:
  * executing "svn export -q  -r1 svn+ssh://deploy@192.168.0.24/srv/svn/OnlineInsurance/trunk /srv/www/OnlineInsurance/releases/20090413065316 && (echo 1 > /srv/www/OnlineInsurance/releases/20090413065316/REVISION)"
    servers: ["192.168.0.24"]
Password:
    [192.168.0.24] executing command
** [192.168.0.24 :: err] Host key verification failed.
** [192.168.0.24 :: err] svn: Connection closed unexpectedly
    command finished
*** [deploy:update_code] rolling back
  * executing "rm -rf /srv/www/OnlineInsurance/releases/20090413065316; true"
    servers: ["192.168.0.24"]
    [192.168.0.24] executing command
    command finished
failed: "sh -c \"svn export -q  -r1 svn+ssh://deploy@192.168.0.24/srv/svn/OnlineInsurance/trunk /srv/www/OnlineInsurance/releases/20090413065316 && (echo 1 > /srv/www/OnlineInsurance/releases/20090413065316/REVISION)\"" on 192.168.0.24
stefan@stefan-laptop:~/NetBeansProjects/Neuer Ordner/trunk$


vl könnt ihr mir helfen. bin wirklich schon am verzweifeln.

lg stefan
stefan1397
 
Beiträge: 2
Registriert: 13.04.2009, 10:10

Re: Capistrano einsetzen. aber wie?

Beitragvon stefan1397 am 13.04.2009, 13:00

hab das mit den keys jetzt richtig gemacht. ssh funktioniert jetzt ohne passwort abfrage.
doch bei einem erneuten cap deploy:cold wieder:
stefan@stefan-laptop:~/NetBeansProjects/Neuer Ordner/trunk$ cap deploy:cold
* executing `deploy:cold'
* executing `deploy:update'
** transaction: start
* executing `deploy:update_code'
executing locally: "svn info svn+ssh://deploy@192.168.0.24/srv/svn/OnlineInsurance -rHEAD"
* executing "svn export -q -r1 svn+ssh://deploy@192.168.0.24/srv/svn/OnlineInsurance /srv/www/OnlineInsurance/releases/20090413114726 && (echo 1 > /srv/www/OnlineInsurance/releases/20090413114726/REVISION)"
servers: ["192.168.0.24"]
[192.168.0.24] executing command
** [192.168.0.24 :: err] Host key verification failed.
** svn: Connection closed unexpectedly
command finished
*** [deploy:update_code] rolling back
* executing "rm -rf /srv/www/OnlineInsurance/releases/20090413114726; true"
servers: ["192.168.0.24"]
[192.168.0.24] executing command
command finished
failed: "sh -c \"svn export -q -r1 svn+ssh://deploy@192.168.0.24/srv/svn/OnlineInsurance /srv/www/OnlineInsurance/releases/20090413114726 && (echo 1 > /srv/www/OnlineInsurance/releases/20090413114726/REVISION)\"" on 192.168.0.24
stefan@stefan-laptop:~/NetBeansProjects/Neuer Ordner/trunk$ cap deploy:cold
* executing `deploy:cold'
* executing `deploy:update'
** transaction: start
* executing `deploy:update_code'
executing locally: "svn info svn+ssh://deploy@192.168.0.24/srv/svn/O ... ance/trunk -rHEAD"
* executing "svn export -q -r1 svn+ssh://deploy@192.168.0.24/srv/svn/O ... ance/trunk /srv/www/OnlineInsurance/releases/20090413114827 && (echo 1 > /srv/www/OnlineInsurance/releases/20090413114827/REVISION)"
servers: ["192.168.0.24"]
[192.168.0.24] executing command
** [192.168.0.24 :: err] Host key verification failed.
** [192.168.0.24 :: err] svn: Connection closed unexpectedly
command finished
*** [deploy:update_code] rolling back
* executing "rm -rf /srv/www/OnlineInsurance/releases/20090413114827; true"
servers: ["192.168.0.24"]
[192.168.0.24] executing command
command finished
failed: "sh -c \"svn export -q -r1 svn+ssh://deploy@192.168.0.24/srv/svn/O ... ance/trunk /srv/www/OnlineInsurance/releases/20090413114827 && (echo 1 > /srv/www/OnlineInsurance/releases/20090413114827/REVISION)\"" on 192.168.0.24
stefan@stefan-laptop:~/NetBeansProjects/Neuer Ordner/trunk$


keiner eine idee?
stefan1397
 
Beiträge: 2
Registriert: 13.04.2009, 10:10


Zurück zu Deployment

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast