PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [Diskussion] Virtualisierte Linux PHP Entwicklungsumgebung unter Windows



Enigma
28.02.2009, 19:56
Diskussionsthread zum Howto: http://www.computerbase.de/forum/showthread.php?p=5668962

michi12
28.02.2009, 21:03
Hi,

Schönes HowTo !
Nur hier hast du glaube ich was vergessen:

<?php
phpinfo();
?>
Ist zwar nicht zwingend notwendig, aber gehört finde ich zu einem schöneren Programmier-Stil dazu ;)
Ansonsten gut geschrieben !

Mfg, Michi.

Enigma
01.03.2009, 02:43
Nope - mit Absicht nicht drin. Nur eine unnötige Fehlerquelle, wenn hinter dem ?> noch leere Zeilen sind, die da nicht sein sollen.

excalibur1976
14.03.2009, 11:49
Schönes Anleitung, klasse.

Ich für meinen Teil habe abstand von Eclipse PDT genommen, aber nur aus folgenden Gründen:

Keine x86_64 Version
Installation des x86_64 Eclipse und nachträgliches Installieren der PDT-Pakete war nie erfolgreich
Bei zu großen PHP-Code (6000 Zeilen) wurde Eclipse PDT unerträglich langsam

Daher kann ich Netbeans 6.5 als IDE empfehlen. Ist auch Multiplattform-fähig und läuft auf meinem nicht virtualisiertem Debian GNU/Linux 5.0 und unter Windows XP Pro bisher ohne Schwierigkeiten.

Zumal es auch eine lokale Versionskontrolle gibt, falls man nicht auf CVS oder Subversion zugreifen kann / will.

Aber das hat nichts mit diesem Artikel zu tun ;) Der ist für Einsteiger sehr gut gemacht!

Ich würde bei der Virtualisierung noch einen Schritt weiter gehen:

Eine eigene VM für den DB-Server (MySQL, OHNE Apache & Co.)
Eine VM für den Apache2
Eine VM für einen Mailserver

Das ganze mit XEN, Virtualbox or Whatever.

Warum? Weil man dann, sollte man es später in das Produktivsystem nehmen, einfach die VM's migrieren kann.

Dazu muss aber das das Hostsystem entsprechend ausgestattet sein :)

KLoputzer-007
14.03.2009, 14:23
Schon lange auf sowas gewartet, mach mich heut Abend mal ran :-P

Stefan-
14.03.2009, 14:47
Als Alternative sollte man vielleicht auch noch VMWare empfehlen. Dabei braucht man nicht zwangsläufig eigene Images erstellen, weil ganze LAMP-Systeme vorkonfiguriert zum Download angeboten werden. Das ist einfacher und erspart den ganzen Installationsaufwand.

Besser als Eclipse+PDT ist Aptana, das auf Eclipse aufbaut und an vielen Stellen besser integriert ist.

Mir ist aber noch nicht ganz klar, wofür ich das brauche. Wenn ich entwickele, dann kann ich auch alles direkt auf dem Rechner laufen lassen. Zwischen der IDE und den Server-Komponenten muss ich ja nicht zwangsläufig differenzieren. Einen wirklichen Vorteil sehe ich hier gerade nicht in einer VM..

TchiboMann
14.03.2009, 15:07
Zuallererst: Sehr nettes How-To, gut erklärt und einfach zu verstehen.

Allerdings werde ich glaub ich nie wirklich den Sinn hinter einer IDE-Umgebung verstehen. Alles was ich brauch ist n Texteditor mit Syntaxhervorhebung und eben eine Testumgebung wie XAMPP. Ich hatte Eclipse mal ausprobiert, jedoch mit eher mäßigem Erfolg... Um nicht zu sagen, dass des vollkommen misslungen war^^ Vor allem reichlich kompliziert, die Projektstruktur gefällt mir ebensowenig und viel schlimmer ist halt, dass Eclipse mMn. recht lahm ist, vor allem beim Start (Notepad++ vs Eclipse -> 3 Sekunden vs. 30)...

Vll wär mal n Eclipse (oder ähnliche IDEs) How-To nicht verkehrt?

Enigma
14.03.2009, 15:31
Welche IDE ihr verwendet ist wirklich egal. Ihr habt durch das Netzlaufwerk direkten Zugriff auf das Document Root und könnt auch mit Notepad arbeiten.

Ich nutze Eclipse PDT auch im Büro, und habe dort Projekte die auch weit jenseits von 10k Zeilen Code sind. Skalierungsprobleme sind mir keine bekannt.

Im professionellen Umfeld haben wir auch Xen im Einsatz, mit allen Spielereien die man sich nur vorstellen kann. Jedoch ist XenServer eine Stand-Alone-Anwendung und erfordert noch einen weiteren Rechner. Genau das sollte einem erspart bleiben.

Warum eine VM? Hauptsächlich aus dem Grund, weil fast jeder Hostinganbieter auf Linux-Webserver setzt. Da allein schon der Dateizugriff unter Linux und Windows grundlegend verschieden ist, erspart es viel Ärger wenn man die Anwendung online laufen lassen will. Zudem lassen sich unter Linux viele Funktionen oder Programme über die Shell nutzen, die unter Windows so nicht (einfach) umsetzbar sind.

TchiboMann
14.03.2009, 15:50
Zudem lassen sich unter Linux viele Funktionen oder Programme über die Shell nutzen, die unter Windows so nicht (einfach) umsetzbar sind.

Joh, da hab ich auch schon meine leidigen Erfahrungen gemacht... Des ist auf Linux in der Tat leichter.

Stefan-
14.03.2009, 15:50
Dem stimme ich so nicht zu. Es gibt mittlerweile die Windows PowerShell, die einiges an Funktionen hinzugefügt hat. Ebenfalls gibt es diverse Portierungen von Linux-Befehlen, die den gesamten Rest ersetzen.

Wenn ich eine Webanwendung baue, dann muss ich aber alleine schon im Sinne des Kunden darauf gucken, dass alle verwendeten Funktionen systemunabhängig (d.h. für alle Systeme, auf denen z.B. PHP betrieben werden kann) eingesetzt werden. Dazu gehört es auch, Dateipfade entsprechend zu optimieren. Wenn ich von Anfang an nur für ein Betriebssystem programmiere, weil ich die Dateipfade nicht vernünftig anpasse, habe ich später bei einer Migration auf ein anderes System üblicherweise einen enormen Zusatzaufwand, der so nicht aufkommen muss.

TchiboMann
14.03.2009, 17:00
Kommt drauf an Stefan. Absolute Pfade z.B. musste eigentlich nicht angeben, hauptsache die Pfadstruktur im Script selbst funktioniert einwandfrei. Man sollt eher drauf achten, welche Funktionen von PHP beispielsweise nur auf Linux oder nur auf Windows funktionieren - dem stimm ich dir also zu, ist aber wichtigste Prio mMn. Mit Pfaden hatte ich bisher absolut nie Probleme, egal ob ich ein Script auf Windows entwickle und teste und auf Linux nutze.

Aaaaber: Das gilt auch ausschliesslich NUR dann, wenn du etwas zusammenscriptest, was für die Allgemeinheit sein soll. Nur dann machts Sinn diverse Systeme zu berücksichtigen - bei standalone/exklusiv-Projekten wäre des womöglich relativ Sinnfrei.


Zur Powershell: Haste da zufällig ein paar gute (deutsche) Links? Scheinst dich da wohl n klein wenig auszukennen, wäre für mich recht interessant mehr drüber zu erfahren (nein, ich scheu mich nicht vor Recherchearbeit, nur das passende zu finden könnte länger dauern, was blöde wär wenn jemand gute Tipps schon parat hat ;) ).

Stefan-
14.03.2009, 18:49
Die zentrale Seite zur Powershell ist die hier: http://www.microsoft.com/germany/technet/scriptcenter/hubs/msh.mspx. Da findest du ansich alles, um direkt loslegen zu können (Download, Tutorial, Archiv, Webcasts). "Freie" Ressourcen gibt es ansonsten relativ wenig, zumindest sind diese noch nicht so ausführlich, wie sie sein könnten.

Wenn du dich intensiver mit dem Thema beschäften willst, lies die TecChannel-Artikel zum Thema PowerShell. Da ist immer mal wieder etwas dabei, was interessant ist und bei dem Thema weiterhilft. Achja, eventuell sind einige ältere Sachen nicht unter PowerShell, sondern unter Monad zu finden. Das war in der Beta der Codename.

TchiboMann
14.03.2009, 21:01
Danke!

Kartoffel200
14.03.2009, 22:02
Gut gemacht und gute OS wahl ;).
Doch ich finde VMs sehr träge, auch bei neueren CPUs mit Virtualdisierungstechnik und viel RAM in der Kiste.
Ich entwickel son bissel PHP Sachen auf Linux (Debian Lenny) und muss nur als einzigen Umstand Feststellen das ich keine IE hab (naja eigentlich will ich ihn auch nicht).

Ach ja und es wäre gut wenn du das mit der Virtualisierungstechnik im BIOS erwähnen würdest sonst laufen die Maschinen nicht so schnell.

Swissjustme
15.03.2009, 00:46
danke!

was ich noch kapieren musste ist, dass obwohl VM auf dem Physikalischen Betriebssystem läuft, aus der Netzwerkkarte trotzdem zwei verschiedene IP's und dementsprechend zwei MAC-Addressen kommen :freak Ich hatte fast damit gerechnet, dass ich ausserhalb des PC's nur eine IP sehen würde.
Die Netzwerkbuchse hat sich zu einem Switch verwandelt :D
ich kenne das zwar schon, aber hab es total vergessen ^^

Ich hab selber schon Routers auf alten Rechnern gebaut
Nun meine Frage: Ist es eigentlich irgendwie möglich, einen Router-OS einzurichten?
D.H. Ich schliesse das Modem direkt an die Netzwerkbuchse, so dass zuerst der Router das Signal mit PPPoE korrekt bearbeitet und dann ein NAT-Netzwerk erstellt, so dass der physikalsiche Rechner über einen zweiten virtuellen adapter des Routers sich dort anschliesst? (der physikalische Rechner bräuchte dann selber auch einen
virtuellen Adapter)
Falls das gehen würde, wäre das genauso sicher wie wenn ich zwei Geräte dafür hätte? Ich müsste dann einfach davon ausgehen, dass (z.B.) Windows sich gegen das erste Signal, welches direkt vom Modem kommt, abschirmt.
Naja wenn ich mir das so durchlese, bekomme ich nun doch Zweifel, ob das überhaupt realisierbar ist. :/

Enigma
15.03.2009, 11:46
Klar geht das - nur hab ich festgestellt dass es verdammt schwer ist zu erklären wie so etwas geht, wenn man keine/wenig Netzwerkgrundlagen voraussetzt. Zudem geht die Konfiguration über die Fähigkeiten der GUI hinaus und wollte bei Gelegenheit einen 2. Artikel darüber zusammenschreiben. Hier auf jeden Fall mal ein guter Link der ein paar aufschlussreiche Bildchen mitliefert ;)

http://www.nwlab.net/tutorials/virtualbox/

PS: Da du ein bissl an der Konfiguration der VM rumspielen musst - hier liegt sie:
C:\Dokumente und Einstellungen\username\.VirtualBox\Machines\Webserver\Webserver.xml

CoolHandLuke
15.03.2009, 11:49
Hmmm schon eine sehr eigenartige "Vision".... man müsste die physikalische Schnittstelle ausschließlich einer virtuellen Maschine zur Verfügung stellen. In dieser VM läuft beispielsweise ein IP-Cop oder Endian, um als Firewall und Router zu agieren. Diese VM hätte noch weitere Schnittstellen, die an das Hostsystem weitergereicht werden können oder müssen.

Unter Linux (mit Xen) hab ich sowas im Einsatz: dort hat der Server (Host) allerdings mehrere physikalische Schnittstellen. Die, die ans Modem angeschlossen ist, wird allerdings nur von einer virtuellen Maschine genutzt.

Das geht soweit ganz gut. Aber keine Ahnung, ob sowas auch mit Windows geht. Es ist bestimmt möglich, ohne auf irgendwelche Drittanbieter Tricks angewiesen zu sein.

merv
18.03.2009, 16:11
Schönes Tutorial und meiner Meinung nach "Best Practices" für die Webentwicklung, nicht nur mit PHP. Denn die gesamte Konfiguration, samt des Dateisystems kann in der virtuellen Festplatte einfach gespeichert werden und "mitgenommen" werden. Evtl. für Präsentationen beim Kunden o.ä. nützlich. Und noch ganz wichtig: Spart auf jeden Fall Strom :-)

jK*
18.03.2009, 16:16
oder du installierst einfach xampp=)

merv
18.03.2009, 17:21
Mhh! Da hab ich ja wieder alles in einem Ordner lokal und keine echte *nix - Umgebung und nicht nur einfach eine Datei.

Erdmännchen
19.03.2009, 16:24
Vielleicht könnt ihr mir helfen:

Wollte dein schönes Tutorial probieren, jedoch scheitert es schon an der Installation von dem von dir verlinkten VirtualBox...

Während der Installation kommt immer, dass das Programm nicht den Windows Logo test bestanden hat, ich kann dann auch nicht mehr fortsetzen...

EDIT: Hat sich behoben, hab unter Systemsteuerung/System/Hardware/Treibersignatur "Ignorieren" ausgewählt...hoffe jedoch, dass damit nicht was anderes (mal wieder) gefährdet ist...

Furtano
22.03.2009, 11:29
Großes Lob, ein tolles Tutorial !

cmc84@gmx.net
23.03.2009, 17:33
hallo, ich hab das tut auch mal getestet. funktioniert bestens. ich habe jedoch ein problem. ich will den server noch zum testen ein wenig erweitern um meine linux kenntnisse zu erweitern. daher wollte ich noch einen openssh server einrichten um den server so probeweise über windows steuern zu können (als test für später mal)

aber das bekomme ich irgendwie nicht hin :(

ich habe den openssh daemon mittel
apt-get install openssh-server installiert nur weiß ich nicht genau wo ich da die einstellungen für setzen mus damit ich mich über windows mittels putty einloggen kann. kann mir da evtl. jemand weiter helfen?

edit: ok ich habs hin bekommen. lag nur an einem fehlendem kacken in putty ;)

funland
16.04.2009, 15:03
hab ein kleines problem und zwar mit netzwerkkonfiguration:

Nun muss der Eintrag "Angeschlossen an" bei Adapter 1 (bereits ausgewählt) von NAT in Hostinterface geändert werden.

in der auswahlliste sind folgende einträge:
- nicht angeschlossen
- NAT
- Bridged Netzwerk
- Internes Netzwerk
- host-only Netwerk

aber ich sehe da nichts mit hostinterfaces.

tigerstyle
19.01.2010, 17:55
Super Anleitung, hat von A-Z gleich funktioniert :-) Für mich gibt es auch keine bessere Lösung um mit der Testumgebung unabhängig zu sein. Und man kann schön Sicherungspunkte erstellen.

Ich hätte da aber noch zwei Fragen:
1. Wie muss ich das System konfigurieren, wenn ich mehrer VirtualHost habe, deren DocRoots jeweils in /var/www liegen?

2. Gibt es so eine Anleitung auch für Macs?

Vielen Danke noch mal für das HowTo :-)

krizzelfix
19.01.2010, 18:29
Hallo und Willkommen im Forum,

1. Du musst die Projekte einfach in verschiedene Verzeichnisse legen also:
/var/www/ProjketA
/var/www/ProjektB

2. Die Einrichtung der Virtuellen Maschine sollte eigentlich gleich sein.
Oder willst du MacOS als Gast System haben?

Enigma
19.01.2010, 22:30
Vhosts werden überbewertet ;) Ich hab meine komplette Entwicklungsumgebung in einem VHost.

Sonst kann ich folgende Verzeichnisstruktur empfehlen:
Vhost-Config legt man hier ab: /etc/apache2/sites-available/<name>


ServerName <alias>

DocumentRoot /var/www/<name>/htdocs
<Directory /var/www/<name>/htdocs>
Options Indexes
Order Allow,Deny
Allow From All
</Directory>
CustomLog /var/www/<name>/logs/access.log combined
ErrorLog /var/www/<name>/logs/error.log


Eventuelle Problemlösungen findest du am besten über Google.

Edit: Den Default-VHost musst du entsprechend auch anpassen ;)

tigerstyle
20.01.2010, 14:30
Danke für die Antworten, ich habe es nun so gelöst:

1. Für jeden vhost eine Datei in /etc/apache2/sites-available bzw. site-enabled mit folgendem Inhalt anlegen:
1 <VirtualHost *:80>
2 ServerAdmin foo@bar.com
3
4 DocumentRoot /var/www/project
5
6 ServerName project
7 ServerAlias project
8 <Directory "/var/www/project">
9 AllowOverride All
10 Allow from All
11 </Directory>
12
13 ErrorLog /var/log/apache2/error_project.log
14
15 # Possible values include: debug, info, notice, warn, error, crit,
16 # alert, emerg.
17 LogLevel warn
18
19 CustomLog /var/log/apache2/access_/project.log combined
20 </VirtualHost>

2. Auf dem Windows Host die hosts-Datei bearbeiten (c:\windows\System32\drivers\etc\hosts):
127.0.0.1 loclahost
192.168.56.101 project1
192.168.56.101 project2
etc.

Das wars.

Ergänzung vom 20.01.2010 14:33 Uhr:
2. Die Einrichtung der Virtuellen Maschine sollte eigentlich gleich sein.
Oder willst du MacOS als Gast System haben?
Der Part mit

net use W: \\192.168.68.187\webroot /PERSISTENT:YES
Ist doch bei Macs sicher nicht der selbe, oder?

Ergänzung vom 20.01.2010 15:25 Uhr: Ich hab ansch. irgendwie vergessen MySQL zu installieren und durch die Änderung im Netzwerkadapter von NAT in Hostinterface bekomme ich nun keine Verbindung mehr zum Internet. Habt Ihr eine Idee wie ich wieder Anschluss bekomme?

Bzw. kann ich mir die Einstellungen zerstören wenn ich kurzzeitig wieder NAT einstelle? Edit: Das kurzfristge Umstellen auf NAT um wieder ins Internet zum kommen, hat nicht geschadet.

Edit: In den vhost-einstellungen musste ich noch ServerAlias ergänzen, da der Server sonst nicht zum richtigen vhost weitergeleitet hat.

Enigma
20.01.2010, 15:34
Bei allgemeinen Problemen zum Linux-Gast-Betriebssystem machst du am besten einen neuen Thread auf. Ich möchte diesen Thread nicht richtung Unix-Support ausweiten.

Alternativ findest du auch kompetente Unterstützung in vielen IRC-Channels zum Thema Debian/Linux.

zuo
02.12.2010, 23:00
Ich hätte gern noch ein Zusatz.

Wenn man mit der Debian 5.0.6 den Apache mit PHP installiert macht er wohl was nicht richtig.
Denn wenn man Apache und PHP installiert hat, interpretiert der Apache nicht alle Dateien richtig.

Bei der Debian 5.0.4 machte er es noch richtig.

Wenn man im Unterverzeichnis z.B. http://debian506/forum oder http://debian506/forum/ geht, gibt er die PHP datei zum Download aus.
Er interpretiert dann nur richtig wenn man http://debian506/forum/index.php eingibt.

Um dieses Problem zu lösen muss man in der Apache2.conf folgendes am Ende hinzufügen.


AddType application/x-httpd-php .php
AddType application/x-httpd-php4 .php4
AddType application/x-httpd-php5 .php5
Dann Apache mit /etc/init.d/apache2 restart neustarten.

Ich hab das Problem mit Debian506 x86 sowie x64 festgestellt.

mfg zuo


EDIT:

ansonsten wäre vielleicht noch nicht schlecht wenn man php5-mcrypt gleich mit installiert.

Enigma
02.12.2010, 23:27
Braucht man nicht. Die Daten sind in der /etc/apache2/mods-available/php5.conf drin. Wenn das Modul deaktiviert ist: a2enmod php5.

djaliced
06.03.2011, 02:02
Moin Moin,
ich habe das ganze wie tigerstyle gelöst. Nur hab ich noch zusätzlich resolvconf und dnsmasq installiert und ein "unsauberes" Mini-Script geschrieben (habe leider mit shell-Programmierung leider noch nicht die Erfahrung), welches mir automatisch vhosts mit Verzeichnis anlegt und den Apache neu-startet und den neuen vhost in die hosts einträgt und dnsmasq neu-startet.
Jetzt brauche ich wenigstens nicht mehr in der Windows-hosts-Datei "rumwursteln", da ich als DNS-Server ein Mal den VServer drin stehen habe und dann mein Router.

Gruß Olly