IPDB Backend

Installation

Es ist Ruby (1.8.7) und Rubygems (1.8.24) nötig. Die Versionen können natürlich (wenn kompatibel) auch andere seien. Mit Rubygems dann Rails installieren (es gibt auch die Möglichkeit, Rails per Hand zu installieren, bringt aber Gems/Rails meist durcheinander?)

Ich habe es bei der neuen Maschine wie folgt gemacht:

1.)    Als erstes wird MySQL inkl. den Developer-Teilen benötigt. Die Teile habe ich einfach per Package Manager installiert:
yum install mysql
yum install mysql-server
yum install mysql-devel

Dann muss mysql gestartet warden.

service  mysqld start

Dann muss noch das Passwort für Root geändert werden:
mysqladmin ?u root password 'neues-passwort'

2.)    Dann einen Datenbanknutzer für die IPDB anlegen.  Dazu in MySQL einloggen mit ?mysql -p? und das oben angegebene ?neues-passwort? verwenden. Dann folgende MySQL-Anfragen verwenden.
use mysql;
GRANT ALL ON *.* TO ipdb@'localhost' IDENTIFIED BY 'quartipdb';
FLUSH PRIVILEGES;
Das sollte einen Nutzer ipdb mit quartipdb als PW anlegen, der von localhost aus zugreifen darf. Kann man mit SELECT * FROM user; auch prüfen, ob es einen Eintrag in der Nutzertabelle gibt.

3.)    Da im Package Manager (yum) nur eine ältere Version von Ruby verfügbar war, habe ich das per Hand installiert.
Also ruby 1.8.7 unter www.ruby-lang.org (mit wget) heruntergeladen. Dann entpackt, configure, make und dann make install ;-)

4.)    Dann rubygems unter rubygems.org (version 1.8.24) heruntergeladen, entpackt und mit ?ruby setup.rb? ruby gems installiert.


5.)    Dann kann man Rails (aktuell ist Version 3.2.8 notwendig) installieren. Im Quellcode von der IPDB kann man in der Datei ?Gemfile? sehen, welche Rails-Version notwendig ist. Alternativ kann man diese Datei auch nutzen, um fehlende Gems zu installieren.
Dazu muss aber der Quelltext vorher ausgecheckt sein.

6.)    Der Quellcode der IPDB ist in einem SVN (http://isdb1.offis.uni-oldenburg.de/repos/ipdb/bamadb). Zugang wird wie die anderen SVNs verwaltet. Den Ordner einfach auschecken. Aktuell ist der Ort /opt/ipdb/

7.)    Nun am besten noch fehlende Gems installieren. Dazu in dem Hauptverzeichnis von rails (also unter /opt/ipdb/) den Befehl ?bundle install? ausführen. Dann sollten noch ein paar Gems installiert werden, die nötig sind. (eine aktuelle Liste aller installierten Gems bekommt man auch mit ?gem list?. Unten habe ich mal die aktuelle Liste angehängt, damit man weiß was notwendig ist. Wichtig ist, dass MySQL schon mit dem Developer-Teil (mysql-devel) installiert ist, weil sonst das Gem ?mysql2? nicht gebaut werden kann. Dieser ist im Prinzip der Ruby-Treiber für den Datenbank-Zugriff.

8.)    Falls man eine andere Datenbank oder einen anderen Nutzer verwendet, dann muss man ggf. noch unter ?config/database.yml? die anderen Zugangsdaten für die Datenbank angeben.

9.)    Rails benötigt 3 Datenbanken: ipdb_development, ipdb_production und ipdb_test, wobei ich die letzteren zwei nicht verwendet habe. Entsprechend liegen die Daten in ipdb_development. Diese müsste also auch kopiert werden. Ich habe dazu navicat (ein windows-tool) verwendet, um eine SQL-Datei als Dump zu erstellen, die ich dann auf der neuen DB wieder eingespielt habe.

Wenn die vorhandene Datenbank (warum auch immer) nicht kopiert werden kann und das Schema neu erstellt werden muss, kann das mit rails gemacht werden. Dazu im root-verzeichnis von rails (/opt/ipdb) den Befehl ?rake db:migrate? ausführen. Dann sollten alle notwendigen Tabellen erzeugt werden. Man muss dann aber noch einen Benutzer für IPDB anlegen, damit man auch wieder Zugriff hat. Dazu am besten in MySQL direkt in die Tabelle  users einen Nutzer anlegen. Dazu muss man sein Passwort zunächst hashen, indem man es mit SHA2 mit 256 Bit Länge ?verschlüsselt?. Eine Anfrage zum Hinzufügen eines Nutzers müsste dann so aussehen:
INSERT INTO users (id, email, hashed_password, is_admin, created_at, updated_at) VALUES (1, 'dennis.geesen@uni-oldenburg.de', '1234567890',1,NOW(), NOW());

10.)    Dann kann man Rails starten, indem man ?rails server? im Hauptverzeichnis verwendet. Oder mit ?rails server -d? kann man den Prozess auch als Deamon laufen lassen. Auf der aktuellen Maschine hab ich mit ?/etc/init.d/bama start? auch ein start-script angelegt. Siehe auch unten.

11.)    Ggf. muss sonst noch Port 3000 geöffnet werden, damit es auch von außen (u.a. auch von www-is / polaris für die Webseite ) zugreifbar ist. Dazu entsprechend iptables unter /etc/sysconfig/iptables ändern/erweitern und mit service iptables restart die firewall neustarten.

12.)    Das war es auch schon ;)

13.)    Noch kurz zu dem IPDB-Plugin für Typo3: wenn man es (heißt dort ?BaMa Thesis?) in Typo als Plug-in ausgewählt hat, dann muss man 3 URLs angeben. ?Base URL for rewriting? wird verwendet, um die Anfragen innerhalb von IPDB auf diese Typo3 Seite umzuleiten. ?Root URL to fetch? ist die Hauptadresse von der IPDB. Also muss das ggf. angepasst werden, wenn die Rails-bzw. IPDB-Installation woanders läuft. Und ?First URL to fetch on start? ist die erste URL, die von dem Plugin aufgerufen wird. Was also grob passiert: beim ersten Anzeigen der Seite wird ?Root URL? genommen und ?First URL? hinten rangepackt. Der Inhalt der Seite wird dann gezogen. Dann werden alle Links umgeschrieben, sodass sie auf die ?Base URL?-Seite umleiten. Also für meine Mitarbeiter-Seite wird 134.106.56.66 als Root-URL genommen und beim ersten Aufruf der Mitarbeiter-Seite wird dann /home/staff/587 als First URL verwendet. Entsprechend wird am Anfang der Inhalt von 134.106.56.66/home/staff/587 in die Mitarbeiter-Seite eingebunden. Jeder Link, der in dieser Seite ist, zeigt normalerweise (dank Ruby on Rails) auf die eigene installation. Also für eine Thesis z.B.: 134.106.56.66/home/thesis/4/3 . Das Plugin jedoch schreibt alle diese Links um und leitet damit die Anfragen auf die Base-URL-Seite (http://www-is.informatik.uni-oldenburg.de/451/) um, indem /home/thesis/4/3 als Parameter übergeben wird und dieser Parameter dann zum Holen  der neuen Seite dient (also ähnlich zu first-URL).


Starten / Stoppen und Neustart

Das geht mit einem Script, das ich angelegt habe:

/etc/init.d/bama start

/etc/init.d/bama stop

/etc/init.d/bama restart

Das script muss angepasst warden, wenn die IPDB nicht mehr unter /opt/ipdb liegt!


*** LOCAL GEMS ***

actionmailer (3.2.9, 3.2.8)
actionpack (3.2.9, 3.2.8)
activemodel (3.2.9, 3.2.8)
activerecord (3.2.9, 3.2.8)
activeresource (3.2.9, 3.2.8)
activesupport (3.2.9, 3.2.8)
arel (3.0.2)
bcrypt-ruby (3.0.1)
builder (3.0.4)
bundler (1.2.2)
coffee-rails (3.2.2)
coffee-script (2.2.0)
coffee-script-source (1.4.0)
erubis (2.7.0)
execjs (1.4.0)
hike (1.2.1)
i18n (0.6.1)
journey (1.0.4)
jquery-rails (2.1.3)
jquery-ui-rails (2.0.2)
json (1.7.5)
libv8 (3.3.10.4 x86_64-linux)
mail (2.4.4)
mime-types (1.19)
multi_json (1.3.7)
mysql2 (0.3.11)
nested_form (0.3.1)
polyglot (0.3.3)
rack (1.4.1)
rack-cache (1.2)
rack-ssl (1.3.2)
rack-test (0.6.2)
rails (3.2.9, 3.2.8)
railties (3.2.9, 3.2.8)
rake (10.0.1)
rdoc (3.12)
rdoc-data (3.12)
sass (3.2.3)
sass-rails (3.2.5)
sprockets (2.2.1, 2.1.3)
therubyracer (0.10.2)
thor (0.16.0)
tilt (1.3.3)
treetop (1.4.12)
tzinfo (0.3.35)
uglifier (1.3.0)