VMWare zu OpenVZ “konvertieren”

20.06.

Hey Leute,

heute hab ich mal die Virtualisierung vom Server wieder auf OpenVZ umgestellt und wollte natürlich die Daten der VMWare-Maschinen nicht komplett löschen daher hab ich mit einem kleinen Workaround alles rüber geschoben :D

Also fangen wir mal an…

Zuerst einmal müssen wir den OpenVZ-Container anlegen darauf geh ich aber nicht näher ein das sollte klar sein.. die Architektur muss natürlich auch richtig gewählt werden aber ich glaub das hättet ihr auch selbst gewusst :P

Ok dann gehts richtig los.. man stoppt erstmal die laufende VMWare Maschine (wenn man das nicht will kopiert man das Disk Image und mountet das kopierte image dann in einer anderen VMWare Maschine), bindet als CD-Laufwerk eine Debian Live CD ein und startet die VMWare Maschine wieder.

Hinweis: Ihr benötigt mindestens den gleichen freien Speicherplatz wie belegten Speicherplatz in euer VMWare Maschine

Achtung: Es kann sein das die VMWare Maschine nicht versucht von der CD zu starten ! Um dies zu ändern stoppt man die VMWare Maschine wieder und geht in ihre Konfiguration. Dort gibt es irgendwo einen Schalter das das BIOS-Setup angezeigt werden soll. Das schaltet man an und startet die VMWare Maschine daraufhin wieder. Nun geht man auf die Boot-Geräte, wählt das CD-Laufwerk aus und drückt solange “+” bis es über der Festplatte ist.

Wenn man jetzt im Debian Live System ist gibt man erstmal “sudo su” ein um root-rechte zu erlangen. Jetzt mountet man seine Festplatte nach “/mnt” (“mount /dev/sda3 /mnt” – es kann sein das die partitionsnummer anders ist da müsst ihr dann etwas rumprobieren, wir benötigen die Systempartition).

Nun wechselt man in das Verzeichnis (“cd /mnt”) und verschiebt erstmal alle Dateien in einen neuen Ordner (“mkdir old; mv * old”). Wenn man seperate Partitionen für z.B. “/usr” benutzt hat sollte man diese nun auch an die richtigen stellen in “old” mounten. (Achtung: “/boot”, “/proc”, “/dev” werden nicht benötigt!).

Nun müssen wir etwas aufräumen.. da OpenVZ den Systemkernel verwendet löschen wir den alten kernel aus dem System: “rm -rf old/boot/* old/lib/modules/* old/usr/src/linux-headers*”

Danach packen wir das ganze “cd old; tar cf ../old.tar *” (Hinweis: Wenn man will kann man zwischen “c” und “f” noch ein “v” setzen um zu sehen was grade gepackt wird. Der Vorgang kann eine ganze Weile dauern..)

Wenn das jetzt fertig ist startet man in der VMWare Maschine den SSH-Server (“/etc/init.d/ssh start”) und ändert das Passwort für “root” (“passwd root”).

Jetzt müssen wir vom HostSystem aus per sftp verbinden (“sftp root@IP” wobei IP nat. durch die IP der vm zu ersetzen ist die man mit “ifconfig” in der VMWare Maschine herausfinden kann)und die Datei runterladen (“get /mnt/old.tar”)

Nun löschen wir alle Dateien aus dem “private” Verzeichnis des OpenVZ-Containers (“rm -rf /vz/private/VEID/*”) und verschieben die “old.tar” in das Verzeichnis. Danach wechseln wir auch noch in das Verzeichnis und entpacken die “old.tar” (“tar xf old.tar”)

Zu guter letzt kann man die “old.tar” natürlich auch noch löschen, ich persönlich empfehle jedoch entweder die “old.tar” oder die vmdk-Datei der VMWare Maschine aufzuheben.. Murphys Law lässt grüßen :P

Die VMWare Maschine könnt ihr jetzt natürlich stoppen. Falls ihr iptables-Weiterleitungen benutzt habt solltet ihr diese löschen da der OpenVZ-Container sonst nicht zu erreichen ist ;)

Noch dazu: Das ganze funktioniert natürlich nur mit Linux-Distributionen und auch nur wenn diese keine speziellen Kernelmodule benötigen! Natürlich funktioniert das Tutorial mit so ziemlich allen VMWare-Versionen ;)

b2evolution patch – Deprecated Error

14.03.

Wenn ihr einen fehler bekommt vonwegen

“Deprecated: Assigning the return value of new by reference is deprecated in /blogs/admin.php on line 169″

dann wendet einfach folgenden patch auf eure Installation an:

depr_new.patch

 

wenn ihr auf dem server exec-rechte habt könnt ihr auch folgendes php-script benutzen:

fix.php

 

wenn ihr eine komplett neue installation machen wollt könnt ihr auch einfach folgendes paket verwenden:

b2evolution-3.3.3-stable-2009-12-15_fixed.zip

PHP – Sessions

24.01.

In diesem Tutorial will ich euch zeigen wie ihr in PHP mit Sessions umgeht.

Zuerst einmal: Was sind Sessions überhaupt ?

Sessions sind (frei übersetzt) Sitzungen. Das heisst man kann die Benuzer voneinander unterscheiden. Jeder Benutzer bekommt eine Session-ID die solange hält bis er den Browser schliesst oder die Sitzung auf dem Server ausläuft, das dauert jedoch eine ganze Weile und die Sitzung wird bei jedem Aufruf aktualisiert wobei das “Timeout” nach hinten verschoben wird. PHP wertet die Session-IDs automatisch aus und gibt uns eine neue “Globale” Variable die den stolzen Namen $_SESSION (Array) trägt.

Um eine Session zu starten muss man vor jeglicher Ausgabe in der PHP-Datei den Befehl “session_start()” verwenden. Ab dem Moment wird die $_SESSION Variable geöffnet. Man kann jetzt mit dieser Variable umgehen wie mit jedem anderen Array auch. Sinnvoll ist es z.B. Benutzername und/oder Passwort in dieser Variable zu hinterlassen so das man sich nach einem Login frei auf der Seite bewegen kann.

Sessions werden in so ziemlich allen Web-Anwendungen (darunter auch WordPress, b2evo, Drupal usw..) verwendet. Meist wird eine Kombination von Cookies und Sessions verwendet wobei die Cookies einen dauerhaften Login verwirklichen können und die Sessions nur für das aktuelle zuständig sind.

 

Zum Abschluss noch ein kleines Beispiel bei dem ein sehr sehr simpler Login verwirklicht wird:

 

 

<?php
session_start();
if($_GET[passwort]==”hackme”){
$_SESSION[logged_in]=1;
}
if($_SESSION[logged_in]==1){
echo “Hallo User”;
}else{
echo “Log dich bitte ein, Danke”;

}
?>

 

 

Zuerst wird man nur “Log dich bitte ein, Danke” sehen aber sobald man das Passwort “hackme” einmal übergeben hat erscheint solange bis die Sitzung ausläuft “Hallo User”.