Menü

abhijit bossotto

personal thoughts in an impersonal world

Meine IDE: «PHPStorm»

Seit ich in der Webentwicklung tätig bin, was immerhin seit 1997 mehr oder weniger der Fall ist, verwende ich dazu verschiedene Programme. Angefangen beim genialen «Netscape Composer» und dessen damaliger, direkter Konkurrenz: «Microsoft Frontpage Express» ging es recht schnell zu «Dreamweaver» der Firma «Macromedia». Bei letzterem Programm bin ich über die Jahre hängengeblieben und habe es ziemlich intensiv verwendet.

Seit 2007, seit ich den Umstieg auf die «OS X»-Plattform gewagt habe, verwende ich neben «Dreamweaver» ein kleines Programm der Firma «Panic» mit dem Namen «Coda». Anders als jedoch «Dreamweaver» handelt es sich bei «Coda» um einen reinen Editor, ohne «WYSIWYG»-Funktion. «Coda» begleitet mich nun schon seit einigen Jahren und ich bin eigentlich recht zufrieden mit dem Programm.

Inzwischen bin ich jedoch auf die Programme der Firma «JetBRAINS» gestossen. Anders als «Coda» gibt es das von mir verwendete Programm «PHPStorm» auch für die Windows- und die Linux-Plattform.

Seit nun knapp einem Jahr verwende ich nun vermehrt «PHPStorm», wenn ich Entwicklungen vornehme. Das Programm glänzt mit einer unschlagbaren Stabilität und Geschwindigkeit. Ausserdem gefällt mir die Funktion, in Drittprogrammen geänderte Dateien via «PHPStorm» automatisch auf einen Server hochzuladen. Da ich mit SASS arbeite und «CodeKit» als Kompilierungs-Tool verwende, kommt mir das durchaus entgegen. Natürlich ginge das auch mit «PHPStorm» selber. Ich mag aber das Handling von «CodeKit».

Die IDEs von «JetBRAINS» kann ich allen Entwicklern empfehlen, die eine stabile und schnelle Umgebung benötigen.

 

Projekt «NATHAN» – Teil 1 – Einleitung

Da ich viel mit neuen (Web)-Technologien herumexperimentiere, habe ich auch einige Programme bei mir lokal installiert. «Apache» gehört ebenso dazu wie das allgegenwärtige relationale Datenbankmanagementsystem «MySQL».

Um mich jedoch ein wenig tiefer mit der Materie zu befassen – bisher ging die Konfiguration der jeweiligen Programme immer komfortabel über eine «GUI» wie sie beispielsweise «MAMP (Pro)» zur Verfügung stellt, habe ich mich entschieden, einen eigenen Server einzurichten.

Vorab sollte man sich über einige grundlegende Dinge Gedanken machen: Was sind die Ziele, was die Motivation? Wie möchte man das ganze realisieren (hängt letztlich auch von der nächsten Frage ab)? Wie viel Zeit (und Geld) will man investieren? Und was will ich damit letztlich (können/tun)?

Ziele & Motivation

In erster Linie geht es mir darum, meine «Skills» zu verbessern und mich mit neuen Betriebssystemen und Programmen auseinanderzusetzen. Ich verwende absichtlich keine «OOTB»-Lösung («Out-Of-The-Box») hierfür. Das hat zweierlei Konsequenzen zur Folge: Ich muss mehr «googlen» und experimentieren. Ersteres ist kein Problem. Letzteres umso spannender.

Wie realisieren?

Nachdem ich unter Punkt eins eine «One-Click»-Lösung ausgeschlossen habe, musste ich mir überlegen, wie ich das ganze bewerkstelligen wollte. Als kostengünstiges Grundgerüst bietet sich eine der zahlreichen «Linux»-Distributionen förmlich an. Aus meinem Studium kannte ich noch «OpenSuse» und auch im beruflichen Umfeld habe ich zumindest mit einem «OpenSuse»-Server zu tun. «YAST», das «etwas andere Setup Tool» von «OpenSuse» ist natürlich eines der «Highlights».

Trotzdem habe ich mich nach langem Überlegen für «Ubuntu Server x64» entschieden. Auch (aber nicht nur) weil es unter «Ubuntu» kein «Yast» gibt und ich so mehr arbeiten muss und lernen kann.

Nachdem ich nun also das Grundgerüst hatte, musste ich entscheiden wie ich das ganze umsetze. Dabei gab es für mich drei Möglichkeiten:

  • als virtueller Server (bspw. unter «OS X» mit «VMWare Fusion»),
  • als virtueller Server auf einem «Hypervisor» (bspw. «VMWare Sphere» oder «Microsoft Hyper-V Core»),
  • als physischer Server direkt auf entsprechender Hardware.

(Punkt 1 & 2 unterscheiden sich lediglich durch das Untergerüst in Form des «Hypervisors». Während bei Punkt 1 das ganze neben einem normalen Betriebssystem weiterläuft, gibt es bei Punkt 2 nur die virtuelle Maschine)

Während ich im Office auf Möglichkeit 1 setze um nebenbei mit einem Linux Server zu arbeiten, setze ich für mein Projekt auf die Möglichkeit 3. Im folgenden gehe ich auf die Gründe hierfür ein:

Als Grundlage dient mir ein «HP ProLiant Microserver» mit einer «Xeon E3» CPU, sowie 16 GB Ram und 4 1-TB-Festplatten («WD Red Edition»). Darauf würde – natürlich – auch ein Hypervisor, egal ob VMWare oder Microsoft, laufen. Für Virtualisierungen habe ich jedoch einen anderen Server im Auge der zugleich leistungs- und auch ausbaufähiger ist. Für die ersten Schritte genügt dieser Server hier vollauf.

Zeit & Geld

Eine entscheidende, jedoch nicht die wichtigste, Frage war für mich der finanzielle Aufwand: Ich wollte ein möglichst gutes Preis-/Leistungs-Verhältnis für alle Komponenten. Sicherlich gibt es einfachere Möglichkeiten, einen Server zu betreiben. Man kann einen alten ausrangierten PC dafür nehmen und es muss nicht zwingend eine «Xeon»-CPU sein. Für mich war aber eine solide Hardwarebasis wichtig. Deshalb auch ein Markenprodukt wie der «HP ProLiant Microserver» (inkl. entsprechender Garantieerweiterung) und vier Festplatten, die für einen Server-Betrieb ausgelegt sind.

Die Hardware ist auch der einzige Punkt, die wirklich Geld kostet. Jeder, der einen alten PC hat, spart hier schon mal (je nach Konfiguration muss natürlich der Arbeitsspeicher und/oder der Speicherplatz aufgerüstet werden).

Da ich als Software auf «Open Source» setze und Linux verwende, habe ich hier keine Kosten. Zumindest nicht monetärer Art. Denn, wenn Probleme auftauchen muss ich selber Zeit aufwenden um diese zu lösen. So gesehen wird bei einer «Linux»-basierten Lösung «Zeit» als «Währung» eingesetzt. Aber immerhin ist der Lernfaktor deshalb um einiges höher.

Was ich noch einplanen musste: Wie viel Zeit wollte ich in dieses Projekt investieren? Was sollte es mir wert sein? Ich habe hier bewusst kein «Zeitmanagement» aufgestellt und auch bewusst die Stunden nicht aufgeschrieben. Denn, ansonsten wäre ich wahrscheinlich ziemlich frustriert gewesen… Manchmal kann die Fehlersuche ganz schön lange dauern…

«Nutzen»

Neben der Möglichkeit, mein Wissen zu erweitern, soll der linuxbasierte Server folgende Aufgaben/Features in meinem Office haben:

Entwicklungsplattform

  • Webserver auf Basis von «nginx» (schnellere Alternative zu «Apache 2»)
  • Datenbank mit «MariaDB» (Alternative zu Oracles «MySQL»)
  • Installation von PHP5 / Ruby on Rails / etc.

Kommunikation

  • Kommunikation mit dem Server via SSH
  • Mail-Server inkl. Weboberfläche
  • VPN Server und Gateway für andere Geräte