Rails Server: vereine.ch schnell und einfach deployed

Die vereine.ch Applikation in 10 Minuten auf den Citrin Rails Server migrieren.

Folgende Themen werde ich hier behandeln

  • Installation einer bestehenden Ruby on Rails Applikation
  • Übernahme der Datenbank
  • Apache Konfiguration

Der Rails Server

Für den Betrieb von vereine.ch werden wir neu den Rails Server Standard verwenden. Dieser ist für 25 Fr./Monat zu haben und bietet root-Zugriff auf ein Rails-optimiertes Ubuntu mit 1 GB Memory und 15 GB Festplattenspeicher.

Wir versprechen uns von der Migration einen Gewinn in Performance und Wartbarkeit von vereine.ch. Zudem wollen wir dadurch in Zukunft Features ermöglichen, die mit herkömmlichem Hosting nicht umsetzbar wären.

Installation der Applikation

Da es ein bestehendes Projekt ist, haben wir bereits ein Subversion Repository und ich will nun die Applikation von da installieren. Dazu logge ich mich zuerst per SSH auf dem Rails Server ein.

ssh root@rh05.citrin.ch

Nun verwende ich den citrin Gem um mir einen neuen Apache VirtualHost anzulegen.

citrin create_webserver vereine

Das erstellt mir ein Apache Configfile und gibt mir an wohin ich meine Applikation installieren muss

Apache VirtualHost Konfiguration unter: /etc/apache2/sites-enabled/prod.vereine.conf
App Root unter: /var/www/rails_apps/prod/vereine
URL: http://vereine.rh05.citrin.ch[/sourcecode]

Ich wechsle also in das angegebene Verzeichnis und mache dort einen Checkout meines Subversion Projekts.

 cd /var/www/rails_apps/prod/vereine svn co svn+ssh://svn.citrin.ch/svn/vereine/trunk vereine

Danach lasse ich bundler die für diese Applikation benötigten Gems nachinstallieren

cd vereine
bundle install

Übernahme der Datenbank

Mit dem citrin Gem lege ich noch eine MySQL Datenbank für meine Applikation an.

citrin create_database vereine

Der Gem gibt mir auch gleich die Konfigurationsdaten so an, dass ich sie nur noch in mein config/database.yml übernehmen muss.

production:
  adapter: mysql2
  encoding: utf8
  database: vereine_prod
  username: vereine_prod
  password: ********

Nachdem ich das eingefügt habe importiere ich noch die Datenbank:

mysql -u vereine_prod -p vereine_prod < /var/tmp/vereine.sql

Die Applikation ist somit lauffähig und ich kann die automatisierten Tests laufen lassen.

rake test

Die Tests laufen Fehlerfrei durch. Damit ist vereine.ch fertig installiert.

Die Applikation kann auch schon über eine Subdomain des Servers erreicht werden: http://vereine.rh05.citrin.ch

Apache Konfiguration

Um die Applikation auch unter vereine.ch erreichbar zu machen braucht es noch eine kleine Anpassung am Virtualhost in /etc/apache2/sites-enabled/prod.vereine.conf.

Aus

<VirtualHost *:80>
  ServerName vereine.rh05.citrin.ch

wird

<VirtualHost *:80>
  ServerName vereine.ch
  ServerAlias www.vereine.ch *.vereine.ch  vereine.rh05.citrin.ch

Mit einem /etc/hosts Eintrag kann ich die Konfiguration noch testen bevor ich die DNS Server umstelle.

193.247.72.65   vereine.ch

Auch hier läuft alles wie erwartet also lasse ich die DNS-Server von Citrin anpassen.
Das wars auch schon zum Thema Applikationsmigration. In einem Nachfolgeartikel werde ich auf die verschiedenen Möglichkeiten für Performance Optimierung mit dem Rails Server eingehen.

Wer allgemeinere Anleitungen zum Rails Server sucht findet diese hier.

Programme im Hintergrund laufen lassen mittels screen

screen ist ein nettes Tool, um mit mehreren Personen gemeinsam auf einem Bildschirm (engl. “screen”) zu arbeiten, genauer gesagt in einem Terminal (xterm oder Konsole spielt keine Rolle). Man kann so z.B. jemand beim Konfigurieren zuschauen (oder jemand zuschauen lassen, wie man etwas konfiguriert).

Auch sehr praktisch ist screen für unzuverlässige Verbindungen, z.B. per Interneteinwahl oder Wireless-LAN: bricht die Verbindung zum fern gewarteten Server ab, dann wählt man sich einfach wieder neu ein und schaltet sich erneut auf screen auf – die Bildschirminhalte sind dann genauso wie vor dem Abbruch!

screen ist ein sehr vielfälltiges Konsolen-Tool, welches sich für verschiedenste Aufgaben nutzen lässt.

Vorgehensweise:

  • Verbindung zum Zielrechner aufbauen, z.B. mit OpenSSH.
  • Starten tut man es einfach mit “screen”, ab dann arbeitet man auf einem von “screen” verwalteten screen
  • Eine Liste von laufenden screens erzeugt screen -ls
  • Multi-User-Mode: Wenn schon ein screen läuft, kann man sich einfach mit screen -r draufschalten.
    • Wenn man sich nicht sicher ist, ob schon ein anderer screen läuft: screen -R erstellt bei Bedarf einen neuen.
    • Wenn man fertig ist, einfach Verbindung abbrechen (ggf. vorher Strg-a d = detach).

Die wichtigsten Screen-Kommandos:

Kombination		Kommando		Beschreibung

ctrl-a ?		help			Zeigt den eingebauten Hilfebildschirm
ctrl-a 0		select			Schaltet zum Bildschirm 0
...			select			...
ctrl-a 9		select			Schaltet um auf Bildschirm 9
ctrl-a A		title			Erlaubt dem User, dem aktuellen Bildschirm einen Namen zu geben.
ctrl-a c		create			erzeugt einen neuen von Screen verwalteten Bildschirm
ctrl-a d		detach			Beendet den screen prozess, der die Session und das Terminal verbindet
ctrl-a n		next			Schaltet zum Bildschirm mit der nächst höheren Nummer
ctrl-a p		previous		Schaltet zum Bildschirm mit der nächst niedrigeren Nummer
ctrl-a x		lockscreen		Sperrt die Konsole, bis das Passwort des Benutzers eingegeben wurde
ctrl-a <Leertaste>	next			Alternative zu n; u.U. handlicher zu bedienen
ctrl-a ""		windowlist -b		Listet alle Fenster der aktuellen Session 
ctrl-d  		exit			Beendet die Session in Screen

Update von CYAML auf YAML 3.3.1

Wir haben unser Projekt CYAML auf die neuste YAML Version 3.3.1 aktualisiert.

Zu diesem Anlass wollen wir auch einen kurzen Überblick über die Funktionen und den Einsatz von CYAML geben.

Was ist CYAML?

CYAML ist ein compass Plugin und bildet das YAML Framework in SASS/SCSS ab. compass ist ein Ruby gem der sowohl für Stand-Alone Layouts wie auch die Integration in Ruby on Rails verwendet werden kann.

Welche Vorteile bietet mir CYAML?

Mit CYAML ist es möglich sehr einfach einzelne Teile von YAML für die Gestaltung eines XHTML/CSS Layouts zu verwenden. Ziel ist es nur noch eine einzige css Datei zu haben, welche alle nötigen CSS Rules (ob Framework oder Projekteigene) beinhaltet und bei der Entwicklung trotzdem einzelne Stylesheet Files zu haben um Übersicht und Wiederverwendbarkeit zu gewährleisten. In der neusten CYAML Version werden sogar die Bilder des YAML Frameworks als inline-images im CSS integriert wodurch die Anzahl HTTP-Requests reduziert werden kann.

Wie verwende ich CYAML?

sudo gem install cyaml

Danach kann man ein neues Projekt erstellen:

compass create projectname -r cyaml --using 

Jetzt noch die Standardkonfiguration an den richtigen Ort verschieben:

cd projectname
mv .config.scss src/config.scss
mv .basemod.scss src/basemod.scss

Um den Start zu erleichtern stellen wir ein vorgefertigtes 3-Spalten HTML Template bereit. Dieses kann kopiert werden:

cp citrin.html index.html

In src/basemod.scss können nun alle projektspezifischen CSS Regeln eingefügt werden.

Um mehr Teile des YAML Frameworks zu verwenden kann man einfach bei den entsprechenden Zeilen in src/default_includes.scss die Kommentar-Zeichen entfernen.

Werte wie Header und Content-Höhe oder die Breite der Content-Spalten können als Variabeln in src/config.scss gesetzt werden.
Nachdem man die SCSS-Files nach seinen Wünschen angepasst hat kompiliert man noch alles in ein einzelnes CSS File (in diesem Fall stylesheets/basemod.css)

compass compile

Das Repository und die Dokumentation findet man auf github: https://github.com/servasat/cyaml

« Ältere Einträge Neuere Einträge »