read

Eine kurze Anleitung, wie mit Hilfe von Capistrano und BitBucket auf all-Inkl deployed werden kann.

1. Vorbereitung

Wichtig ist, dass die ersten beiden Schritte meines SSH und all-Inkl-Tutorials bereits ausgeführt wurden. Ebenso setze ich voraus, dass bereits das Repository auf BitBucket angelegt wurde und ebenfalls lokal existiert.

2. SSH-Einstellungen

Wir loggen uns per SSH auf dem all-Inkl-Server ein und erstellen uns SSH-Keys. Diese sind wichtig, um auf das auf BitBucket hinterlegte Git-Verzeichnis zugreifen zu können. Ich persönlich empfehle einen Key ohne Passphrase, da all-inkl sonst immer Fehler meldet (falls jemand dieses Problem lösen sollte, bitte immer her mit den Infos!). Da diese Anleitung höchstwahrscheinlich genauso für GitHub funktioniert, verweise ich noch einmal auf deren Anleitung.

# Wir wechseln in das SSH-Verzeichnis
cd ~/.ssh

# Der Key wird generiert
ssh-keygen -t rsa -C "your_email@example.com"

# Wir lassen uns den Key anzeigen und kopieren ihn anschließend manuell in unsere Zwischenablage
cat id_rsa.pub

Nachdem dieser auf dem Server generiert wurde, muss er noch auf BitBucket im Verzeichnis hinterlegt werden. Dazu wechselt man in die Administration seines Projekts, klickt auf „Deployment Keys” und fügt einen neuen Eintrag hinzu. Der Name ist egal, wichtig ist nur, dass wir den Key einfügen. Damit wir jedoch tatsächlich später auf das Repo zugreifen können, müssen wir zuerst BitBucket unserer ~/.ssh/known_hosts hinzufügen. Ich klone dabei einmal alle vorhandenen Daten und habe so einen Live-Test, ob tatsächlich alles funktioniert:

# Wechsle in den Root
cd ~

# Klone das Repo von BitBucket
git clone git@bitbucket.org:USERNAME/Repo.git

# Lösche diese Daten nach Erfolg
rm -rf Repo.git

3. Capistrano-Deployment

Erneut muss zuerst Capistrano initialisiert werden (dieser Artikel bezieht sich auf Capistrano Version 2!):

capify .

Die eben angelegte Datei config/deploy.rb kann nun auf unsere Bedürfnisse angepasst werden:

# Unsere Repo-URL auf BitBucket
set :repository, 'git@bitbucket.org:USERNAME/Repo.git'

# Der Branch, aus dem wir deployen möchten
set :branch , 'master'

# Unsere Domain
set :domain , 'server.tld'

# SSH-Nutzer
set :user , 'ssh-w00000x'

# Server-Pfad
set :deploy_to, '/www/htdocs/w00000x/'

# Nutze kein Sudo, da all-inkl dieses verbietet
set :use_sudo , false

# Standard-Rechte
role :website, domain, :primary => true

Das Deployment sollte nun möglich sein. Sollten verschiedene Environments verwendet werden, so kann (mit ein wenig Modifizierung des obigen Codes) bequem von BitBucket auf mehrere Server deployed werden.

Marco Raddatz

Marco Raddatz

Published

Image
Marco Raddatz #TechnicalProjectManagement #SoftwareDevelopment #Berlin Back to Overview