Skip to content
Widu Wittekindt edited this page Mar 29, 2016 · 19 revisions

Deployment

Das Deployment läuft mittels Capistrano.

Server vorbereiten:

den User unter dem KaVau laufen soll anlegen

useradd -m -d 'SERVER_DIR' -s /bin/bash SERVER_USER

z.B.

useradd -m -d /var/www/kavau -s /bin/bash kavau

danach den eigenen ssh public key auf dem Server beim SERVER_USER hinterlegen (unter ~/.ssh/authorized_keys, Zugriffsrechte für .ssh 700, für authorized_keys 600

Die Datenbank anlegen

Datenbankuser und Datenbank anlegen (postgresql) - auf debianoiden Systemen als user postgres

createuser DB_USER

kein Superuser, Keine Rechte zum Anlegen von Datenbanken oder Usern

createdb -O DB_USER kavau

psql_password für den DB_USER setzten, Extension hstore aktivieren

psql kavau
\password DB_USER
CREATE EXTENSION hstore;

rvm und ruby installieren

als SERVER_USER rvm installieren:

gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3
\curl -sSL https://get.rvm.io | bash -s stable

# An dieser Stelle muß die Umgebung neu geladen werden: 
# (ausloggen aus dem Server und einloggen als SERVER_USER tuts auch)
source .bashrc
source .profile

rvm install ruby-2.2.3
rvm use ruby-2.2.3@global
gem install bundler

Nöitge Umgebungs-Variablen setzen

z.B. in .bashrc - for der Abfrage ob es eine interaktive shell ist, im zweifelsfall einfach die Einträge ganz an den Anfang stellen

secret und token können mittels "rake secret" (lokal ausführen) generiert werden.

export SECRET_KEY_BASE="very long base64 random secret key"
export TOKEN_KEY="very long base64 random key for encryption" #save the key very securely
export HOST="URL"

Den Webserver configurieren

und eine passende Apache / nginx ... config anlegen für die Domain. Das hängt zu stark vom verwendeten Webserver ab, als dass ich hier mehr dazu schreiben wollte.

Auf dem lokalen Rechner

das deployment file anpassen (production.rb)

server 'SERVER_URL', user: 'SERVER_USER', roles: %w(web app db), primary: true
set :user, :SERVER_USER
set :branch, :production
set :stage, :production
set :servername, '(SUB)DOMAIN_NAME'
set :rails_env, :production
set :deploy_to, 'SERVER_DIRECTORY'

cap production deploy:check

legt dann die benötigten Verzeichnisse + Dateien an.

dann auf dem Server im Verzeichins SERVER_DIR/shared/config die Datenbank-Konfiguration anpassen:

database.yml
  production:
  adapter: postgresql
  username: DB_USER
  pool: 5
  timeout: 5000
  host: localhost
  database: DB_NAME
  password: DB_PASSWORD

auf dem lokalen Recner sollte dann

cap production deploy

den Rest erledigen.

Einen Admin anlegen

Dafür als SERVER_USER auf dem server einloggen.

cd current
RAILS_ENV=production bundle exec rails console
u = User.new(login: 'LOGIN', first_name: 'VORNAME', name: 'NACHNAME', phone: 'TELEFON-NR', role: 'admin', email: 'EMAIL', password: 'PASSWORT', password_confirmation: 'PASSWORT')
u.save

wenn das User anlegen funktioniert erhälst du als Rückgabe auf den Befehl

=> true

schlägt es aber fehl (false als Rückgabe) dann schau dir die Fehlermeldungen an mittels:

u.errors.messages  

um fehlerhafte Attribute zu korrigieren funktioniert die Syntax:

u.ATTRIBUT='Neuer Wert'

also z.B.

u.email = '[email protected]'

speichern mit

u.save

Danach solltest du dich einloggen können und alles weitere über das Web-Interface erledigen können.