Kategorie

Rails Server: SSL für vereine.ch

Februar 14th, 2012

In Rails Server: vereine.ch schnell und einfach deployed habe ich über das Deployment der vereine.ch Applikation gesprochen.

Da wir mit dieser auch https Logins erlauben wollen, muss ich den Webserver noch entsprechend Konfigurieren.

Dazu lege ich einen neuen VirtualHost auf Basis der normalen vereine.ch Konfiguration an.

cp /etc/apache2/sites-enabled/prod.vereine.conf  /etc/apache2/sites-enabled/prod.vereine.conf_443

Dieser muss noch für SSL Zugriffe angepasst werden.

NameVirtualHost 193.247.72.65:443
<VirtualHost 193.247.72.65:443>
    PassengerAppRoot /var/www/rails_apps/prod/vereine/
    SSLEngine on
    SSLCertificateFile /etc/ssl/certs/vereine.ch.crt
    SSLCertificateChainFile /etc/ssl/certs/vereine.ch.ca
    SSLCertificateKeyFile /etc/ssl/private/vereine.ch.key
    ...
</VirtualHost>

und damit ist vereine.ch auf schon unter https://vereine.ch erreichbar.

Rails Server: vereine.ch schnell und einfach deployed

Februar 8th, 2012

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.