Die eigene Datenwolke mit ownCloud und OpenShift

Fast jeder kennt Dropbox und erstaunlich viele speichern sensible Daten auf Dropbox.

Anmerkung: Wenn du noch nicht bei Dropbox bist und dich dort anmelden möchtest, kannst du mir und dir 500 MB extra Platz sichern. So würdest du BackSite fördern, weil ich alle Bilder auf Dropbox speichere. (Registriere dich hier)

Warum? – Es gibt doch alternativen, wie z. B. ownCloud. OwnCloud ist ein Programm, welches man nur auf seinem eigenen Server installieren muss und schon hat man seine eigene sichere Cloud. Doch wer hat schon einen eigenen Server? Kaum jemand, aber man kann OpenShift prima dafür nutzen. Das Aufsetzen von ownCloud ist sehr einfach. In den Teilen #0-#2 der Serie „Mit WordPress in die Cloud“ habe ich schon beschrieben, wie man OpenShift einrichtet. Nun muss man nur noch das entzippte Verzeichnis von dem ownCloud-Download anstatt WordPress hochladen. (Siehe #3)

Dann öffnet man die Adresse http://www.projektname-domain.rhcloud.com/owncloud/ und wählt einen Benutzernamen und ein Passwort. Unter „Datenbank einrichten“ wählt man MySQL und gibt als Benutzername admin, als Passwort das Passwort aus #2, den Projektnamen und die MySQL-Verbindung aus #2 (ohne „mysql://“) an.

ownCloud Einrichtung

ownCloud Einrichtung

Das war’s dann auch schon 🙂

PHP-FileManager für OpenShift

Wenn man sich kurz mal ein paar Dateien auf dem OpenShift-Server ansehen möchte, muss man sich entweder per ssh mit dem Server verbinden und die Dateien im Terminal auf dem Server ansehen oder man kann die Dateien per scp herunterladen und dann angucken (siehe: Wie lädt man Daten vom OpenShift-Server herunter?).

Es gibt aber auch eine einfachere Lösung: Man installiert einen File-Manager auf dem OpenShift-Server und greift dann bequem per Web-Interface auf die Daten zu.

Weil ich schon mehrere Projekte auf Basis von einer PHP-Applikation von OpenShift aufgesetzt habe, zeige ich euch hier auch einen PHP-File-Manager. Mein Favorit ist phpFileManager, weil er einfach gehalten ist und nur aus einer Datei besteht. Deshalb ist er sehr leicht zu installieren.

Installation

Die Installation ist sehr einfach:

Zuerst lädt man die aktuellste Datei ins lokale GIT-Repository/php Verzeichnis herunter und benennt sie um (z. B. von index.php in filemanager.php).

Dann lädt man die Datei entweder durch:

(man befindet sich im lokalem GIT-Repository; siehe OpenShift einrichten)

git add *

git commit -a -m „FileManager added!“

git push

oder durch:

(man befindet sich im lokalem GIT-Repository; siehe Daten vom OpenShift-Server herunterladen)

scp php/dateiname.php @:osprojektname/repo/php

hoch.

Danach öffnet man im Browser die Seite: Projektname-Domain.rhcloud.com/Dateiname.php

Nun meldet man sich mit „Enter“ an und setzt am besten nach einem Klick auf „Config“ ein Passwort. Nach dem Anklicken von „Save Password“ und „Leave“ wird man beim erneuten Anmelden nach dem Passwort gefragt.

phpFileManager auf OpenShift

phpFileManager auf OpenShift

Info: Wenn man als „File Manager Root“ „/“ angibt, hat man einen interessanten Einblick auf den Verzeichnisbaum von OpenShift.

Verzeichnisbaum von OpenShift

Verzeichnisbaum von OpenShift

Mit Cloud9 im Internet Webapps für OpenShift programmieren

Mit Cloud9 kann man in der Cloud programmieren. Das heißt, alle Projektdaten liegen im Internet und als IDE benutzt man den Web-Browser. Für Teamarbeit ist dies optimal. Es ist auch für einzelne praktisch, die an verschiedenen Orten arbeiten. Warum sollte man also nicht Apps für OpenShift im Internet erstellen und warten?

c9.io bietet Cloud9 als kostenlosen Dienst an. Jetzt brauchen wir nur noch c9.io mit OpenShift zu verknüpfen. Dazu brauchen wir einen Account bei c9.io und bei OpenShift.

Hinweis: Falls du noch keinen Promotional Code für OpenShift kennst:

-Mit PLAY!WEBINAR bekommt man 3 Apps, 1GB Ram und 512MB Datenplatz

-Mit Cloud9Blog bekommt man auch solche „Vorteile“

Nachdem wir uns erfolgreich registriert haben, müssen wir die SSH-Keys austauschen. Zuerst gehen wir deshalb in c9.io auf „Your Account“ und „Show your SSH-Key“. Diesen kopieren wir und fügen ihn dann bei OpenShift in „My Account“ mit „Add a new key…“ ein.

c9.io ssh-key

OpenShift - My Account

Falls noch nicht geschehen, erstellen wir nun eine Applikation mit OpenShift. Dann wählen wir die Applikation im Browser aus und kopieren den Git-Repository Link.

Git-Repository

Nun erstellen wir auf c9.io ein neues Projekt mit den Standardeinstellungen mit „CREATE NEW PROJECT“. Diese wählen wir dann aus und öffnen es mit „START EDITING“. Nun geben wir in der weißen Zeile ganz unten

git remote add openshift -m master LINKzumGITrepo

und

git pull -s recursive -X theirs openshift master

ein.

c9.io

Falls der Verzeichnisbaum sich jetzt nicht verändert hat, wählen wir nach einem Rechts-Klick „Refresh“ aus.

Nun verändern wir eine Datei und laden die Änderungen mit

git add *

git commit -a -m „Eine Nachricht“

git push

zu OpenShift hoch.

Edit:

Falls der Fehler “fatal: No destination configured to push to.” auftritt, muss anstelle von „git push“, „git push openshift“ ausgeführt werden. (Dank an to.rben)

Kostenloser 24/7 Minecraft Server auf OpenShift

OpenShift bietet jetzt auch eine DIY (Do-It-Youself) Applikation an. Man hat sein eigenes RHEL (Red Hat Enterprise Linux) als Untergrund und kann alle, auf RHEL laufenden, Programme ausführen. Man kann sich auch per SSH einloggen. Leider stehen einem nicht alle Befehl zur Verfügung, weil man ja nicht mit Root-Rechten OpenShift zerstören soll.

Da man auch Java nutzen kann, dachte ich, dass es möglich seinen müsste, einen Minecraft Server aufzusetzen. Also habe ich mich schnell per SSH angemeldet und mit wget die Server-Software heruntergeladen. Dann habe ich den Server gestartet. Alles lief super, doch kam manchmal die Warnung, dass der Server übelastet seien könnte. Dies liegt wahrscheinlich daran, dass man als kostenlosen Nutzer nicht ganz so viele Ressourcen hat. Wahrscheinlich muss man an den Startoptionen noch etwas ändern.

Beim zweiten Versuch habe ich die Minecraft Server Software per „git push“ hochgeladen. Dies war  praktischer, als die ganzen Befehle auf der Shell einzugeben. Schreibt, wenn ihr die Dateien haben wollt, die ich hochgeladen habe.

Nun habe ich Versucht auf dem Server zu spielen. Leider habe ich nur einen „End of stream“ Fehler bekommen. Dies kann entweder am Server oder am Clienten liegen.

Deshalb bitte ich euch, dass ihr mal Versucht euch anzumelden und mir eure Erfahrungen schreibt. IP: projects-frontpage.rhcloud.com:25565

Mit WordPress in die Cloud #3 WordPress installieren

Jetzt kann es los gehen! Wir haben erfolgreich OpenShift eingerichtet und können nun WordPress installieren.

WordPress hochladen

Zuerst müssen wir WordPress herunterladen. Danach entpacken wir es nach php im Applikation-Verzeichnis. Wichtig ist, dass die WordPress-Dateien nicht im Ordner wordpress sondern direkt im php Ordner sind. Sonst müssten wir WordPress später über http://www.domain.com/wordpress und nicht über http://www.domain.com aufrufen. Danach öffnen wir wp-config-sample.php mit einem Texteditor.

Die WordPress Dateien

Die WordPress Dateien

Nun geben wir unsere Datenbank-Daten an. Wichtig ist, dass bei DB_HOST nicht mysql:// angegeben werden muss. Die Sicherheitsschlüssel kannst du im Internet erzeugen lassen.

WordPress Configuration

WordPress Configuration

Die Datei speichern wir nun als wp-config.php.

Als Nächstes laden wir WordPress aus dem Applikations-Verzeichnis hoch:

git add*
git commit -a -m "Upload WordPress"
git push

Achtung: Bei einem späteren git push werden alle aus dem Internet nachgeladenen Daten wie z. B. Plugins gelöscht. Man muss zuerst alle Daten per ssh Downloaden. Siehe meine Lösung.

WordPress installieren

Um WordPress zu installieren, rufen wir app-domain.rhloud.com/wp-admin/install.php im Browser auf. Dort geben wir ein paar Daten über unseren Blog an und sind auch schon fertig. Jetzt brauchen wir uns nur noch anmelden und es kann losgehen. Der WordPress Blog ist jetzt immer über app-domain.rhcloud.com erreichbar.

Was haltet ihr davon, wenn ich euch an FrontPage zeige, wie man WordPress mit BuddyPress ein Wiki, Forum und Community Funktionen hizufügt?

Mit WordPress in die Cloud #2 – OpenShift einrichten

rhc installieren

Da wir uns entschieden haben, dass WordPress auf OpenShift und damit in der Cloud laufen soll, müssen wir zuerst ein paar Vorbereitungen treffen. Damit wir unser WordPress hochladen können, brauchen wir ein Tool, dass sich rhc nennt. Der schwierigste Schritt ist die Installation von rhc, wobei dies durchaus machbar ist. Unter Linux brauchen wir die Pakete git, ruby, rubygems, und das Ruby 1.8 Entwickler Paket (ruby-dev). Nach einem simplem

su -c 'gem install rhc'

ist rhc installiert. Falls jemand kein Linux hat oder genauere Infos sucht: Hier steht eine genaue Anleitung für alle Betriebssysteme.

OpenShift einrichten

Nachdem wir die Vorraussetzungen erfolgreich gemeistert haben, können wir uns nun kostenlos bei OpenShift registrieren. Beim ersten Login werden wir aufgefordert eine neue Applikation zu erstellen. Das machen wir aber nicht über den Browser sondern mit rhc, weil uns das das spätere Vorgehen erleichtern wird.

Die Domain

Bevor wir aber eine Applikation erstellen können, müssen wir uns Gedanken über die Domain machen.

Momentan kann man auf einem OpenShift-Account drei Applikationen installieren. Eine Applikation kann zurzeit entweder JavaPHP, Python, Perl, Ruby oder Node.js Anwendungen beherbergen. Man kann aber auch noch zwischen Jenkins Server oder Do-It-Yourself Variante wählen. Unsere Applikation wird PHP Anwendungen beherbergen, weil WordPress in PHP programmiert wird. Die Applikation können wir im Browser über AppName-Domain.rhcloud.com erreichen. Für jede Applikation können wir einen Namen vergeben. Aber wir können für alle drei Applikationen nur einen Domain-Namen verwenden. Als Domain habe ich „frontpage“ verwendet und als Applikation-Name „community“, weil frontpage etwas individuelles ist und in der PHP-Applikation alle meine öffentlichen Content Management Systeme laufen werden.

Wir erstellen die erste App

Nun haben wir uns genug Gedanken über die Namesgebung gemacht und erstellen nun zuerst die Domain. Dazu legen wir zuerst einen Ordner mit

mkdir ordnername

an, wechseln mit

cd ordnername

hinein und erstellen die Domain mit

rhc domain create -n domainname -l mylogin@email.com
Erstellung der Domain

Erstellung der Domain

Nun wird noch nach dem Passwort vom OpenShift-Login gefragt und OpenShift mit dem PC verknüpft. Deshalb brauche wir später die E-Mail Adresse nicht mehr angeben.

Als Nächstes erstellen wir die Applikation, die unser WordPress hosten wird. Dazu geben wir

rhc app create -a appname -t php-5.3

ein:

Erstellung der App

Erstellung der App

Die ersten Veränderungen

Die Applikation hat schon zwei Dateien, die wir umbenennen, damit wir sie nicht mit den Dateien von WordPress überschreiben. Dazu wechseln wir mit

cd appname/php/

ins php-Verzeichnis und benennen index.php und health_check.php mit

mv index.php index-os.php

und

mv health_check.php health_check-os.php

in index-os.php und health_check-os.php um. Zuletz wechseln wir mit

cd ..

ins Applikations-Verzeichnis.

Umbennenung von index.php und health_check.php

Umbennenung von index.php und health_check.php

Nun laden wir die Veränderungen hoch:

git add *
git commit -a -m "Changed some files"
git push
Upload der ersten Änderungen

Upload der ersten Änderungen

Herzlichen Glückwunsch, du hast deine ersten Änderungen erfolgreich hochgeladen 🙂

Jetzt fehlt uns nur noch die MySQL-Datenbank, in die WordPress die Daten speichert. Diese fügen wir mit

rhc app cartridge add -a appname -c mysql-5.1

hinzu.

Wichtig: Schreib dir alle Zugangsdaten zur Datenbank auf! Ohne sie kannst du WordPress nicht installieren!

DB Einrichtung

DB Einrichtung

Da nun alles vorbereitet ist können wir das nächste Mal WordPress hochladen und einrichten.

Mit WordPress in die Cloud #1 – Wie lädt man Daten vom openshift-Server herunter?

Nun hab ich erfolgreich ein WordPress-System auf openshift aufgesetzt (Keine Angst ich schreibe bald, wie ich es angestellt habe 🙂 Link zum Frontpage-Blog). Danach habe ich ein paar Plugins installiert und wollte noch schnell eine Datei auf den Server hochladen. Und was ist passiert? – Alles, was WordPress nachträglich aus dem Internet auf den openshift-Server gezogen hat, war weg.

Weil die Daten nicht auf meinem PC waren, wurden sie auch nicht hochgeladen, nachdem der openshift-Server zurück gesetzt wurde. Der openshift-Server wird aber nicht willkürlich, sondern bei jedem neuen Upload zurückgesetzt.

In den openshift-Hilfeseiten von RedHat steht, dass man per git clone die Daten vom Server herunterladen kann, wenn man zum Beispiel an mehreren Orten an einem Projekt arbeitet. Also erst die Daten herunterladen und dann wieder hochladen.

Doch so einfach ist es dann leider auch nicht, weil die Daten während des Betriebs erzeugt werden und nicht in git vermerkt werden. Noch einmal googlen und das Ergebnis meiner Bemühungen ist: Man kann sich per ssh in den openshift-Server einloggen. Das heißt man kann auch alle Daten per scp vom Server herunter kopieren.

Jetzt die Praxis:

Wo liegen die Daten eigentlich und was sind meine Benuzerdaten? – Die Benutzerdaten findet man, indem man „rhc domain“ im lokalen Projektverzeichnis eingibt. Das Ergebnis müsste dann ungefähr so aussehen:

knoppix@Microknoppix:~/Dokumente/frontpage/php/community$ rhc domain
Password:
User Info
=========
Namespace: frontpage
 RHLogin: email@gmx.de
Application Info
================
community
 Framework: php-5.3
 Creation: datum
 UUID: username(viele Ziffern)
 Git URL: ssh://username(viele Ziffern)@community-frontpage.rhcloud.com/~/git/community.git/
 Public URL: http://community-frontpage.rhcloud.com/
Embedded: 
 mysql-5.1 - Connection URL: mysql://127.2.64.1:3306/
knoppix@Microknoppix:~/Dokumente/frontpage/php/community$

Dabei ist besonders die Zeile Git URL zu beachten. Die „Textstelle“ zwischen „ssh://“ und „@“ ist der Benutzernamen. Die „Textstelle“ zwischen „@“ und „/~“ ist der Servername(hier: community-frontpage.rhcloud.com). Nun braucht man nur noch das Verzeichnis, in dem sich alle Projekt-Daten befinden. Dieses findet man indem man sich per ssh anmeldet. Das Verzeichnis lautet: „projektname/repo/“.

Aus den oben gesammelten Wissen baut man sich nun folgenden Befehl zusammen:

scp -r benutzername@server:projektname/repo/ zielordner/

In meinem Fall:

scp -r einesehrlangeziffernfolge@community-frontpage.rhcloud.com:community/repo/ serverdata/

Danach hat man alle Daten vom Server im Zielordner und kann diese dann wieder hochladen.