<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Stetix</title>
	<atom:link href="http://stetix.de/feed" rel="self" type="application/rss+xml" />
	<link>http://stetix.de</link>
	<description>Gedanken über Web-Development, Webdesign, Technik, Handys, Musik, Vinyl, Gadgeds und mehr..</description>
	<lastBuildDate>Wed, 28 Nov 2012 17:24:35 +0000</lastBuildDate>
	<language>de-DE</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<item>
		<title>15 +1 Nützliche Tools und kostenlose Online-Dienste für Webdesigner und Webentwickler</title>
		<link>http://stetix.de/15-nuetzliche-tools-und-kostenlose-online-dienste-fuer-webdesigner-und-webentwickler.html</link>
		<comments>http://stetix.de/15-nuetzliche-tools-und-kostenlose-online-dienste-fuer-webdesigner-und-webentwickler.html#comments</comments>
		<pubDate>Tue, 13 Nov 2012 19:22:25 +0000</pubDate>
		<dc:creator>Nico</dc:creator>
				<category><![CDATA[Webdesign]]></category>
		<category><![CDATA[Webentwicklung]]></category>
		<category><![CDATA[online dienste]]></category>
		<category><![CDATA[tools]]></category>
		<category><![CDATA[web design]]></category>
		<category><![CDATA[web development]]></category>
		<category><![CDATA[webentwicklung]]></category>

		<guid isPermaLink="false">http://stetix.de/?p=1853</guid>
		<description><![CDATA[In der letzten Zeit sind mir viele neue und nützliche Tools aufgefallen, die man als Webentwickler und Webdesigner bei der täglichen Arbeit gut gebrauchen kann und die einem diese um einiges erleichtern. Ich möchte mich mit dieser Liste bei den Entwicklern der Tools bedanken und jedes einzelne natürlich vorstellen und weiterempfehlen. Wirklich interessant, was mittlerweile [...]]]></description>
				<content:encoded><![CDATA[<p>In der letzten Zeit sind mir viele neue und nützliche Tools aufgefallen, die man als Webentwickler und Webdesigner bei der täglichen Arbeit gut gebrauchen kann und die einem diese um einiges erleichtern. Ich möchte mich mit dieser Liste bei den Entwicklern der Tools bedanken und jedes einzelne natürlich vorstellen und weiterempfehlen. Wirklich interessant, was mittlerweile alles möglich ist und welche Ideen die Entwickler dieser Tools haben. Aber legen wir los mit der Liste der 15 nützlichen Tools für Webdesigner und Webentwickler. Es sind sowohl neue als auch schon länger bestehende dabei:</p>
<p><span id="more-1853"></span></p>
<p><img src="http://stetix.de/wp-content/uploads/2012/11/placehold-it.png" alt="placehold it 15 +1 Nützliche Tools und kostenlose Online Dienste für Webdesigner und Webentwickler" title="placehold-it" width="914" height="332" class="alignnone size-full wp-image-1963" /></p>
<h2><a href="http://placehold.it/" target="_blank">Placehold.it</a></h2>
<p>Wie der Name schon verrät geht es hier um Platzhalter und zwar für Grafiken. Genial! Wie oft hat man sich beim Erstellen einer Webseite irgendein Foto genommen und verändert oder irgendwelche Fakebilder als Platzhalter für die späteren wirklichen Bilder verwendet. Das benötigt man nun nicht mehr, denn dank Placehold.it kannst du Platzhalter für die Bilder in jeder beliebigen Größe erstellen. Dazu kann das Format, die Farbe, der Text und natürlich wie schon erwähnt die Größe einfach über das Verändern des Bildpfades oder der GET-Parameter geändert werden. Danke für dieses tolle Tool!</p>
<p>Webseite: <a href="http://placehold.it/" target="_blank">http://placehold.it/</a></p>
<p><br class="clear" /></p>
<p><img src="http://stetix.de/wp-content/uploads/2012/11/getfavicon.png" alt="getfavicon 15 +1 Nützliche Tools und kostenlose Online Dienste für Webdesigner und Webentwickler" title="getfavicon" width="914" height="341" class="alignnone size-full wp-image-1961" /></p>
<h2><a href="http://getfavicon.appspot.com/" target="_blank">getFavicon</a></h2>
<p>Das nächste Tool hat mir wirklich schon oft geholfen und jede Menge Arbeit erspart. getFavicon ist eine Art Proxy für Favicons. Man kann sich hier von jeder Domain und von jedem Pfad in einer Domain das jeweilige Favicon anzeigen lassen. Hierzu übergibt man dem Tool einfach die URL der benötigten Domain inkl. Pfad und schon wird das Favicon angezeigt. Klasse für Listen mit Domains oder URL&#8217;s. Features wie SSL, Setzen des Default-Icons wenn keins gefunden wird, Decaching und einiges mehr machen das Tool wirklich brauchbar und sehr nützlich.</p>
<p>Webseite: <a href="https://getfavicon.appspot.com" target="_blank">https://getfavicon.appspot.com</a></p>
<p><br class="clear" /></p>
<p><img src="http://stetix.de/wp-content/uploads/2012/11/favicon-cc.png" alt="favicon cc 15 +1 Nützliche Tools und kostenlose Online Dienste für Webdesigner und Webentwickler" title="favicon-cc" width="914" height="378" class="alignnone size-full wp-image-1977" /></p>
<h2><a href="http://www.favicon.cc" target="_blank">Favicon.ico Generator</a></h2>
<p>Jede kleine Webseite braucht die kleinen lustigen Grafiken, genannt Favicon. Das Favicon wird links neben der URL in der Adressleiste des Browsers angezeigt und für Bookmarks oder in anderen Diensten (wie z.B. über getFavicon, siehe oben) als grafische Beilage zur URL der Seite verwendet. Favicons zu erstellen war bisher immer ziemlich aufwendig. Man musste eine kleine Grafik, die maximal 32&#215;32 Pixel groß war erstellen, als BMP speichern und mit einem gesonderten Programm als Icon exportieren. Favicon.cc vereinfacht diesen Prozess. In diesem Online-Tool kann man Favicons selbst pixeln und erstellen oder bestehende Bilder ganz einfach importieren und verändern. Das fertige Favicon kann natürlich heruntergeladen und auf Wunsch auf der Seite veröffentlicht werden. Sehr nützliches Tool!</p>
<p>Webseite: <a href="http://www.favicon.cc" target="_blank">http://www.favicon.cc</a></p>
<p><br class="clear" /></p>
<p><img src="http://stetix.de/wp-content/uploads/2012/11/gradiant-editor.png" alt="gradiant editor 15 +1 Nützliche Tools und kostenlose Online Dienste für Webdesigner und Webentwickler" title="gradiant-editor" width="914" height="341" class="alignnone size-full wp-image-1978" /></p>
<h2><a href="http://www.colorzilla.com/gradient-editor/" target="_blank">Ultimate CSS Gradient Generator</a></h2>
<p>CSS3 bietet wahnsinnig viele schöne neue Möglichkeiten. Eine davon sind Farbverläufe, die man in beliebiger Farbe, Richtung und Grösse einfach per CSS auf jedes HTML-Element anwenden kann. Da dies jeder Browser aber noch etwas anders implementiert, sind für einen Verlauf viele Zeilen CSS-Code zu schreiben. Händisch fast unmöglich. Genau hier springt der CSS Gradient Generator ein. Mit ihm kann man die benötigten Farben wählen oder direkt über Eingabe des Hexcodes definieren und über ein Photoshop-like Interface die Verläufe anpassen und verändern. Ist man mit dem Ergebnis in der Vorschau zufrieden, kann man sich direkt den generierten CSS-Code kopieren und in&#8217;s eigene Stylesheet einfügen. Super easy und hilfreich. Probiert es einfach mal aus, einfacher geht es nicht!</p>
<p>Webseite: <a href="http://www.colorzilla.com/gradient-editor/" target="_blank">http://www.colorzilla.com/gradient-editor/</a></p>
<p><br class="clear" /></p>
<p><img src="http://stetix.de/wp-content/uploads/2012/11/tinypng.png" alt="tinypng 15 +1 Nützliche Tools und kostenlose Online Dienste für Webdesigner und Webentwickler" title="tinypng" width="914" height="341" class="alignnone size-full wp-image-1979" /></p>
<h2><a href="http://tinypng.org" target="_blank">TinyPNG</a></h2>
<p>Die Ladezeit einer Webseite ist extrem wichtig. Wer möchte heutzutage noch gerne länger warten bis eine Webseite vollständig geladen ist. Ein entscheidender Faktor von vielen für schnellere Ladezeiten einer Webseite ist die Grösse von Bildern. TinyPNG ist eine Online-Tool, das die Grösse von PNG-Grafiken um einiges verkleinert. Einfach das gewünschte Bild oder mehrere (maximal 20 Bilder und 2 MB pro Bild) per Drag&#8217;n'Drop auf die dafür vorgesehene Fläche auf der TinyPNG-Webseite ziehen und schon beginnt der &quot;Shrink&quot;-Prozess begleitet von einer lustigen Panda-Animation. Nach Fertigstellung können die Bilder sofort heruntergeladen werden. Im Vergleich zu Photoshop verkleinert TinyPNG die Bilder um 40% und mehr &#8211; und das ohne optisch sichtbare Veränderung des Bildes. Klasse! Mehr ist hier nicht rauszuholen. Sehr hilfreich &#8211; speed up your website!</p>
<p>Webseite: <a href="http://tinypng.org" target="_blank">http://tinypng.org</a></p>
<p><br class="clear" /></p>
<p><img src="http://stetix.de/wp-content/uploads/2012/11/css3-generator.png" alt="css3 generator 15 +1 Nützliche Tools und kostenlose Online Dienste für Webdesigner und Webentwickler" title="css3-generator" width="914" height="332" class="alignnone size-full wp-image-1980" /></p>
<h2><a href="http://css3generator.com" target="_blank">CSS3 Generator</a></h2>
<p>Hier verrät der Name im Prinzip schon alles. Mit dem CSS3 Generator kann man über ein sehr einfaches Interface schnell CSS3-Code für Features wie Border-Radius, Box-Shadow, Font-Shadow, Verläufe, RGBA, @Font-Face und vieles mehr generieren. Leider fehlt im generierten Code die Angabe -moz für Gecko-basierte Browser wie Firefox oder Seamonkey, die man aber ohne weiteres per Hand ergänzen kann. Für schnelle Code-Generierung sehr hilfreich, das Tool sollte in keiner Tool-Sammlung und Linkliste von Webdesignern fehlen.</p>
<p>Webseite: <a href="http://css3generator.com" target="_blank">http://css3generator.com</a></p>
<p><br class="clear" /></p>
<p><img src="http://stetix.de/wp-content/uploads/2012/11/color-scheme-designer.png" alt="color scheme designer 15 +1 Nützliche Tools und kostenlose Online Dienste für Webdesigner und Webentwickler" title="color-scheme-designer" width="914" height="341" class="alignnone size-full wp-image-1981" /></p>
<h2><a href="http://colorschemedesigner.com" target="_blank">Color Scheme Designer</a></h2>
<p>Wenn man sich bei der Erstellung einer Webseite, eines Logos oder sonstiger grafischer Ergüsse auf die Hauptfarbe(n) geeinigt hat, ist es oft ziemlich aufwendig und schwierig hierzu passende Farben zu finden, damit die Webseite oder die Grafik einen harmonischen und schönen Eindruck macht. Hier hilft der Color Scheme Designer weiter und findet schnell sehr gut Farben die zueinander passen und ermöglich so die Erstellung eines kompletten Farbschemas. Genial! Durch die Wahl der verschieden Modes Mono, Complement, Triad, Tetrad, Analogic und Accented Analogic sind unendlich viele Farb-Kombinationen auf gewünschter Basis möglich. Das Tool gibt es schon etwas länger, ist bei mir aber etwas in Vergessenheit geraten, was auf keinen Fall mehr passieren wird, da die Ergebnisse des Tools wirklich ziemlich brauchbar und umwerfend sind. Wer so etwas schon in Photoshop per Hand versucht hat und keine grafische Ausbildung genossen hat, wird dieses Tool umso mehr lieben. Just try it!</p>
<p>Webseite: <a href="http://colorschemedesigner.com" target="_blank">http://colorschemedesigner.com</a></p>
<p><br class="clear" /></p>
<p><img src="http://stetix.de/wp-content/uploads/2012/11/100-random-colors.png" alt="100 random colors 15 +1 Nützliche Tools und kostenlose Online Dienste für Webdesigner und Webentwickler" title="100-random-colors" width="914" height="341" class="alignnone size-full wp-image-1982" /></p>
<h2><a href="http://www.100randomcolors.com" target="_blank">100 Random Colors</a></h2>
<p>Hundert zufällige Farben. Genau das und nicht mehr macht dieses Tool und zeigt hundert zufällige Farben im Quadrat mit Hexcode der jeweiligen Farbe an. Ist keine Farbe dabei, für die man sich begeistern kann, lädt man die Seite neu und erhält die nächsten hundert zufälligen Farben. Tolle Idee und gut zu gebrauchen für die Ideenfindung und als Inspirationsgeber für Farben.</p>
<p>Webseite: <a href="http://www.100randomcolors.com" target="_blank">http://www.100randomcolors.com</a></p>
<p><br class="clear" /></p>
<p><img src="http://stetix.de/wp-content/uploads/2012/11/color-hunter.png" alt="color hunter 15 +1 Nützliche Tools und kostenlose Online Dienste für Webdesigner und Webentwickler" title="color-hunter" width="914" height="341" class="alignnone size-full wp-image-1983" /></p>
<h2><a href="http://www.colorhunter.com" target="_blank">Color Hunter</a></h2>
<p>Mit dem Farbjäger, dem Color Hunter, kann man passende Farben aus einem Bild oder zu einem Bild finden. Das Bild kann über die Angabe der URL oder über Upload hinzugefügt werden. Ganz nett, wenn man ein Bild hat und farblich hierauf eine Webseite oder passende Elemente aufbauen möchte. Das Tool liefert allerdings nicht immer zufrieden stellende Ergebnisse und bis auf die die Helligkeit gibt es keine Möglichkeit Einfluss auf das Ergebnis zu nehmen. Als Ideen- und Farbgeber aber dennoch sehr gut zu gebrauchen.</p>
<p>Webseite: <a href="http://www.colorhunter.com" target="_blank">http://www.colorhunter.com</a></p>
<p><br class="clear" /></p>
<p><img src="http://stetix.de/wp-content/uploads/2012/11/color-blender.png" alt="color blender 15 +1 Nützliche Tools und kostenlose Online Dienste für Webdesigner und Webentwickler" title="color-blender" width="914" height="193" class="alignnone size-full wp-image-1984" /></p>
<h2><a href="http://colorblender.com" target="_blank">ColorBlender</a></h2>
<p>Das letzte Farbtool in dieser Liste, der ColorBlender, bietet als selbst ernannter Farbwerkzeugkasten ebenso die Möglichkeit Farbschemas oder Farbmischungen zu erstellen. Hierbei kann man an einem RGB oder HSV-Regler die gewünschte Ausgangsfarbe einstellen, anhand der die 6-farbige Platte bzw. Mischung errechnet wird. Die fertige Mischung kann gespeichert und später wieder verwendet werden. Hierfür benötigt man ein Benutzerkonto. Ohne Registrierung kann man das Ergebnis als Photoshop-Farbtabelle oder Illustrator-Farben (.EPS) downloaden oder per E-Mail verschicken. Zusätzlich kann man bereits erstellte Mischungen von anderen anschauen und verwenden. Sehr nützlich für ein Farben-Brainstorming oder komplette Konzeptionen. Ein klasse Tool!</p>
<p>Webseite: <a href="http://colorblender.com" target="_blank">http://colorblender.com</a></p>
<p><br class="clear" /></p>
<p><img src="http://stetix.de/wp-content/uploads/2012/11/keyonary.png" alt="keyonary 15 +1 Nützliche Tools und kostenlose Online Dienste für Webdesigner und Webentwickler" title="keyonary" width="914" height="341" class="alignnone size-full wp-image-1985" /></p>
<h2><a href="http://keyonary.com/" target="_blank">Keyonary</a></h2>
<p>Oft kann man Sie gebrauchen, oft vergisst man sie aber auch. Die Rede ist von Shortcuts. KEYONARY versteht sich als Shortcut-Finder und hilft einem in sehr schönem Design bei vergessenen Shortcuts auf die Sprünge. Natürlich kann man auch ganz neue noch unbekannte Screenshots entdecken oder hinzufügen. Shortcuts können per Volltextsuche oder per Auswahl des Betriebsystems oder der Anwendung gefunden werden. Die Idee, Umsetzung und das Design ist wirklich sehr gut gemacht und auf jeden Fall einen Besuch und Bookmark wert!</p>
<p>Webseite: <a href="http://keyonary.com/" target="_blank">http://keyonary.com/</a></p>
<p><br class="clear" /></p>
<p><img src="http://stetix.de/wp-content/uploads/2012/11/google-web-fonts.png" alt="google web fonts 15 +1 Nützliche Tools und kostenlose Online Dienste für Webdesigner und Webentwickler" title="google-web-fonts" width="914" height="341" class="alignnone size-full wp-image-1986" /></p>
<h2><a href="http://www.google.com/webfonts" target="_blank">Google Web Fonts</a></h2>
<p>Zu diesem Tool muss man eigentlich nicht mehr viel sagen, dennoch muss es unbedingt auf meine Liste. Lange war es einem im Web verwehrt andere Schriftarten außer Arial, Verdana, Helvetica oder Times zu nutzen, weil es technisch nicht möglich oder nicht auf allen Browsern und Betriebssystemen lauffähig war. Seit Google Web Fonts kann man nun aus unzähligen Schriftarten wählen und über Einfügen des entsprechenden Javascripts die Schriftart auf der eigenen Webseite nutzen. Bis auf die 2% der Besucher, die Javascript deaktiviert haben, bei denen es sich meist sowieso um Bots handelt, kann diese Schriftart in allen Browsern angezeigt werden. Und das Beste: Alle dort angebotenen und nutzbaren Fonts sind Open Source und auch der Service und dessen Nutzung sind kostenlos. Wer sich jetzt noch um die Erreichbarkeit seiner Webseite Sorgen macht, weil ein externes Javascript eingebunden werden muss, dem sei gesagt, das Google Server so gut wie keine Ausfälle haben und zu den schnellsten und ausfallsichersten Servern im Web gehören. Unschlagbar gut und unverzichtbar. Danke Google!</p>
<p>Webseite: <a href="http://www.google.com/webfonts" target="_blank">http://www.google.com/webfonts</a></p>
<p><br class="clear" /></p>
<p><img src="http://stetix.de/wp-content/uploads/2012/11/button-maker.png" alt="button maker 15 +1 Nützliche Tools und kostenlose Online Dienste für Webdesigner und Webentwickler" title="button-maker" width="914" height="341" class="alignnone size-full wp-image-1987" /></p>
<h2><a href="http://css-tricks.com/examples/ButtonMaker/" target="_blank">Button Maker</a></h2>
<p>Das wichtigste Action-Element auf Webseiten ist auf jeden Fall der Button. Er wird für fast alles wichtige benutzt, es wird wie wild auf Ihm herumgedrückt und er muss immer gut aussehen. Für letzteres gibt es den genialen Button Maker von <a href="http://css-tricks.com/css3-button-maker/">CSS Tricks</a>. Hier kann man schöne abgerundete Buttons mit Farbverläufen und Schatten erstellen. Über einen Regler kann man die Größe, das Padding und die Grösse der abgerundeten Ecken einstellen. In sieben Farbfeldern wählt man die gewünschten Farben für den Verlauf, die Hintergrundfarbe, Textfarbe, Rahmenfarbe, Hoverfarbe usw. Zum Schluß noch schnell die Schriftart gewählt und sobald man mit dem Ergebnis zufrieden ist, kann man mit einem Klick auf &#8211; na? &#8211; den fertigen Button (wo sonst?) den CSS-Code generieren lassen und in das eigene Stylesheet kopieren. Super easy zu benutzen und unbedingt zu empfehlen. Hammer Tool!</p>
<p>Webseite: <a href="http://css-tricks.com/examples/ButtonMaker/" target="_blank">http://css-tricks.com/examples/ButtonMaker/</a></p>
<p><br class="clear" /></p>
<p><img src="http://stetix.de/wp-content/uploads/2012/11/codemirror.png" alt="codemirror 15 +1 Nützliche Tools und kostenlose Online Dienste für Webdesigner und Webentwickler" title="codemirror" width="914" height="341" class="alignnone size-full wp-image-1988" /></p>
<h2><a href="http://codemirror.net/" target="_blank">CodeMirror</a></h2>
<p>Wer einen Quelltext- oder Code-Editor auf seiner Webseite integrieren möchte, um das Bearbeiten von HTML, Javascript, PHP, Ruby oder anderen Sprachen zuzulassen, der kommt um den besten freien Javascript-Code-Editor mit Namen CodeMirror nicht herum. Dieser Editor bietet unendlich viele Möglichkeiten, wie Syntax-Highlighting für alle gängigen Sprachen, Shortcuts, Auto-Completion und viele weiteren Funktionen, die man von einer normalen IDE gewohnt ist. Durch die einfache API lässt sich das Tool wunderbar und unendlich mit eigenen Sachen oder bestehenden Addons erweitern. Das Tool muss heruntergeladen und durch Einbau des CSS und Javascripts in die eigene Webseite integriert werden, ist von daher zwar kein Online-Dienst, darf hier aber dennoch nicht fehlen wie ich finde. Einfach genial! Online Code Editing. Das schreit nach neuen webbasierten Editoren. Ich denke das wir hier noch einiges erwarten dürfen. Keep on coding!</p>
<p>Webseite: <a href="http://codemirror.net/" target="_blank">http://codemirror.net/</a></p>
<p><br class="clear" /></p>
<p><img src="http://stetix.de/wp-content/uploads/2012/11/pingdom-full-page-test.png" alt="pingdom full page test 15 +1 Nützliche Tools und kostenlose Online Dienste für Webdesigner und Webentwickler" title="pingdom-full-page-test" width="914" height="341" class="alignnone size-full wp-image-1989" /></p>
<h2><a href="http://tools.pingdom.com/fpt/" target="_blank">Pingdom Full Page Test / Page Speed Tool</a></h2>
<p>Wie schon vorher erwähnt ist die Ladezeit einer Webseite sehr wichtig. Um die genaue Ladezeit einer Webseite zu ermitteln kann man entweder eines der zahlreichen Browser-Plugins, von denen das bekannteste Google Page Speed ist, nutzen oder auf ein Online-Tool wie den Full Page Test von Pingdom setzen. Meines Wissens nach setzt Pingdom hier auch auf die Messtechnik der Google Page Speed API, der Vorteil ist hier aber ganz klar das man den Test über eine Webseite machen kann. Einfach Webseite aufrufen, URL der zu testenden Seite eingeben und in (hoffentlich) wenigen Sekunden hat man das Ergebnis in Form von Zeit und Bytes für die komplette Seite und aller Elemente, die sich auf der Seite befinden. Die Anzeige des detailierten Performance-Grads und der ausführlichen Analyse-Tabellen runden das Tool ab. Hiermit kann man super Schwachstellen identifizieren, die meist durch wenige Handgriffe zu eliminieren sind.</p>
<p>Webseite: <a href="http://tools.pingdom.com/fpt/" target="_blank">http://tools.pingdom.com/fpt/</a></p>
<p><br class="clear" /></p>
<p><img src="http://stetix.de/wp-content/uploads/2012/11/onedit.png" alt="onedit 15 +1 Nützliche Tools und kostenlose Online Dienste für Webdesigner und Webentwickler" title="onedit" width="914" height="332" class="alignnone size-full wp-image-1990" /></p>
<h2><a href="http://www.onedit.de/" target="_blank">Onedit CMS</a></h2>
<p>Das 16. und letzte Tool dieser Liste ist eine Eigenentwicklung und läuft etwas ausser Konkurrenz, deshalb 15 +1 Tools. Es handelt sich um ein von mir entwickeltes Content-Management-System, kurz CMS. Solche Tools gibt es zwar schon wie Sand am Meer, das Besondere an diesem CMS ist aber, das man damit bestehende Webseiten bearbeiten kann, ohne eine Software auf dem Webspace oder dem eigenen Rechner zu installieren. Durch die Vergabe von CSS-Klassen kann man bestimmte Elemente einer Webseite zur Bearbeitung im CMS freigeben. In Onedit müssen nur noch die FTP-Zugangsdaten für den Webspace eingegeben werden (keine Angst, es wird alles verschlüsselt gespeichert) und schon kann das Bearbeiten der Webseite beginnen. Das CMS ist für Webdesigner besonders interessant, da man eigene Benutzer anlegen kann und Ihnen Zugriff auf bestimmte Webseiten, Unterseiten und Funktionen geben kann. Eine Whitelabel-Lösung mit eigenem Logo und eigener Domain ist ebenso möglich. Onedit ist in den Basis-Funktionen für eine Webseite und 10 Unterseiten kostenlos.<br />
In Zukunft wird hier sicher noch ein kompletter Artikel über Onedit erscheinen, wenn die aktuellen Weiterentwicklungen des Tools abgeschlossen sind.</p>
<p>Webseite: <a href="http://www.onedit.de/" target="_blank">http://www.onedit.de/</a></p>
<p><br class="clear" /></p>
<p>Ich hoffe es war für den einen oder anderen ein neues und hilfreiches Tool dabei. Ich nutze viele dieser Tools sehr oft. Vielleicht kennt Ihr auch noch andere Tools, die diese Liste super ergänzen würden? Freue mich über Kommentare.</p>
<p><br class="clear" /></p>
<p>Weiterführende Links für nützliche Tools:</p>
<ul>
<li><a href="http://t3n.de/news/50-nutzliche-tools-webentwickler-391026/" target="_blank">50 nützliche Tools für Webentwickler bei t3n</a></li>
<li><a href="http://speckyboy.com/2012/05/29/50-new-resources-and-tools-for-web-developers/" target="_blank">50 New Resources and Tools for Web Developers bei Speckyboy</a></li>
<li><a href="http://www.tripwiremagazine.com/2012/04/responsive-web-design-tools.html" target="_blank">40 Useful Responsive Web Design Tools bei Tripwire</a></li>
<li><a href="http://www.drweb.de/magazin/25-nuetzliche-tools-fur-webdesigner/" target="_blank">25 nützliche Tools für Webdesigner bei Dr. Web</a></li>
<li><a href="http://www.designtrax.de/webdesign/nuetzliche-online-tools-fur-webdesigner.html" target="_blank">Nützliche Online-Tools für Webdesigner bei Designtrax</a></li>
<li><a href="http://t3n.de/news/10-zeitsparende-kostenlose-tools-webdesigner-352997/" target="_blank">10 zeitsparende und kostenlose Tools für Webdesigner bei t3n</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://stetix.de/15-nuetzliche-tools-und-kostenlose-online-dienste-fuer-webdesigner-und-webentwickler.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Frischer Wind.</title>
		<link>http://stetix.de/frischer-wind.html</link>
		<comments>http://stetix.de/frischer-wind.html#comments</comments>
		<pubDate>Wed, 24 Oct 2012 22:22:46 +0000</pubDate>
		<dc:creator>Nico</dc:creator>
				<category><![CDATA[Allgemein]]></category>

		<guid isPermaLink="false">http://stetix.de/?p=1892</guid>
		<description><![CDATA[Juhu! Lange hab ich hier nichts mehr von mir hören lassen. Heute musste jedoch das alte Layout dran glauben und durch ein neues ersetzt werden. HTML5, CSS3 und zu 90% Responsive. Ich habe versucht, den Focus mehr auf den Inhalt zu legen und die Schrift wirklich für jeden lesbar zu machen. Ja, ich liebe große [...]]]></description>
				<content:encoded><![CDATA[<div style="height: 400px; overflow: hidden; margin-bottom: 30px; -webkit-border-radius: 12px; -moz-border-radius: 12px; border-radius: 12px;">
  <img src="http://stetix.de/wp-content/uploads/2012/10/wind_ocean.jpg" alt="wind ocean Frischer Wind." title="Frischer Wind!" width="1024" height="691" class="alignnone size-full wp-image-1893" />
</div>
<p><big>Juhu!</big> Lange hab ich hier nichts mehr von mir hören lassen. Heute musste jedoch das alte Layout dran glauben und durch ein neues ersetzt werden. </p>
<p>HTML5, CSS3 und zu 90% Responsive. Ich habe versucht, den Focus mehr auf den Inhalt zu legen und die Schrift wirklich für jeden lesbar zu machen. Ja, ich liebe große Schrift und Nein, ich brauch keine Brille (hoffentlich:). </p>
<p>Das neue Layout gibt mir auch die Freiheit, für einzelne Artikel mehr mit dem Design zu spielen und den normalen Rahmen zu sprengen. Aber lassen wir uns überraschen &#8211; in Zukunft werde ich nämlich auch versuchen, hier wieder mehr zu bloggen. Prost!</p>
<p><small>Foto von <a href="http://www.flickr.com/photos/11199582@N03/7923063996/in/photostream/" target="_blank">c.harnish</a></small></p>
]]></content:encoded>
			<wfw:commentRss>http://stetix.de/frischer-wind.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>WordPress langsam? PHP und WordPress schneller machen mit Nginx und Fast-CGI!</title>
		<link>http://stetix.de/wordpress-langsam-php-und-wordpress-schneller-machen-mit-nginx-und-fast-cgi.html</link>
		<comments>http://stetix.de/wordpress-langsam-php-und-wordpress-schneller-machen-mit-nginx-und-fast-cgi.html#comments</comments>
		<pubDate>Mon, 07 Mar 2011 23:27:05 +0000</pubDate>
		<dc:creator>Nico</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Webentwicklung]]></category>
		<category><![CDATA[installation]]></category>
		<category><![CDATA[nginx]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[webserver]]></category>
		<category><![CDATA[Wordpress]]></category>

		<guid isPermaLink="false">http://stetix.de/?p=932</guid>
		<description><![CDATA[Das der nginx-Webserver schneller und performanter als z.B. der Apache ist, hatte ich in meinem letzten Blogbeitrag zur Installation und Konfiguration von nginx bereits geschrieben. Wenn WordPress oder PHP auf dem Apache mit mod_php generell zu langsam werden, macht auch hier die Überlegung Sinn, auf einen anderen Webserver umzusteigen. In Sachen Performance und Performance-Optimierung nicht [...]]]></description>
				<content:encoded><![CDATA[<p>Das der <a href="http://nginx.org/" target="_blank">nginx-Webserver</a> schneller und performanter als z.B. der Apache ist, hatte ich in meinem letzten Blogbeitrag zur <a href="/nginx-eine-echte-apache-alternative.html">Installation und Konfiguration von nginx</a> bereits geschrieben. Wenn WordPress oder PHP auf dem <a href="http://httpd.apache.org/">Apache</a> mit <a href="http://php.net/manual/de/security.apache.php">mod_php</a> generell zu langsam werden, macht auch hier die Überlegung Sinn, auf einen anderen Webserver umzusteigen. In Sachen Performance und Performance-Optimierung nicht nur für WordPress und PHP ist nginx aktuell die erste Wahl. </p>
<p><img src="http://stetix.de/wp-content/uploads/2011/03/nginx-php-rocket.jpg" alt="nginx php rocket Wordpress langsam? PHP und Wordpress schneller machen mit Nginx und Fast CGI!" title="nginx-php-rocket" width="494" height="442" class="size-full wp-image-1795" /></p>
<p>Bei den meisten Installationen unter Apache läuft PHP als Modul. Das heisst, für das Ausführen von PHP muß kein neuer Prozess gestartet werden, sondern die Verarbeitung bzw. Parsen der PHP-Dateien übernimmt das beim Start des Apachen geladene PHP-Modul. Für nginx gibt es solch ein Modul nicht, weshalb wir auf die CGI-Version von PHP zurückgreifen müssen. Dies ist nicht weiter tragisch, da die Performance &#8211; eine halbwegs schnelle CPU vorausgesetzt &#8211; aus Erfahrung nicht darunter leidet. Doch wie konfiguriert man nginx, um ihn für das Ausliefern von dynamischen PHP-Scripts vorzubereiten? </p>
<p><span id="more-932"></span></p>
<h4>Installation von PHP5-CGI</h4>
<p>Zuallererst benötigen wir nun die CGI-Version von PHP. Falls sie noch nicht installiert ist, können wir sie entweder selbst kompilieren oder verwenden von der Linux-Distribution bestehende Pakete. Für Ubuntu ist die Installation hier mit einer Zeile erledigt:</p>
<p><code># apt-get install php5-cgi</code></p>
<p>Sofern man für WordPress zum Beispiel noch mehr Module wie MySQL oder GD benötigt, könnte die Zeile auch so aussehen:</p>
<p><code># apt-get install php5-cgi php5-dev php5-gd php5-mysql</code></p>
<h4>Die Verbindung zu nginx: Sockets für PHP</h4>
<p>Damit wir PHP mit nginx nutzen können, benötigen wir sogenannte <a href="http://de.wikipedia.org/wiki/Socket_%28Software%29">Sockets</a> unter denen das PHP auf Anfragen von nginx wartet, wahlweisse als TCP- oder UNIX-Domain-Socket. Da ein Socket ständig auf neue Verbindungen wartet, muß ein neuer Prozess erzeugt werden, der diese Arbeit übernimmt. Dieser Prozess erzeugt weitere Unterprozesse und leitet die PHP-Anfragen dann an diese weiter.</p>
<p>Es gibt nun mehrere Möglichkeiten die PHP-Prozesse zu starten. Die Aufgabe ist hier, die Prozesse als Daemon und unter einem anderen User laufen zu lassen, sowie die Standard- und Fehler-Ausgaben umzuleiten.<br />
Zwei Möglichkeiten möchte ich hier aufzeigen: Zum einen kann man die Prozesse ganz normal per Startscript starten, auf Ubuntu zum Beispiel mit dem start-stop-daemon. Zum anderen gibt es Tools wie spawn-fcgi, mit dem ich jedoch nicht so gute Erfahrungen gemacht habe, da es bei mir öfters, teilweisse sogar mit <a href="http://de.wikipedia.org/wiki/Schutzverletzung" target="_blank">Segfaults</a>, unter Last abstürzte. Da ich aber keine Zeit hatte, dem Grund auf die Spur zu gehen und PHP mit dem start-stop-daemon bei mir ziemlich gut läuft, möchte ich euch spawn-fcgi der Vollständigkeithalber nicht vorenthalten. Sicher auch hilfreich für andere Linux-Distributionen.</p>
<h4>PHP im FASTCGI-Modus mit Startscript</h4>
<p>Die in PHP mitgelieferte CGI-Version php5-cgi erledigt im <a href="http://de.wikipedia.org/wiki/FastCGI" target="_blank">FastCGI</a>-Modus die Socketbindung und das Erzeugen von neuen Prozessen selbstständig und sehr zuverlässig.  Zum Starten benötigen wir ein Startscript, welches wir unter /etc/init.d/fastcgi anlegen:</p>
<p><code># vi /etc/init.d/fastcgi</code></p>
<p>Inhalt:</p>
<p><code>#!/bin/bash<br />
BIND=127.0.0.1:8088<br />
USER=www<br />
PHP_FCGI_CHILDREN=15<br />
PHP_FCGI_MAX_REQUESTS=1000<br />
PHP_CGI=/usr/bin/php5-cgi<br />
<br />
PHP_CGI_NAME=`basename $PHP_CGI`<br />
PHP_CGI_ARGS="- USER=$USER PATH=/usr/bin PHP_FCGI_CHILDREN=$PHP_FCGI_CHILDREN PHP_FCGI_MAX_REQUESTS=$PHP_FCGI_MAX_REQUESTS $PHP_CGI -b $BIND"<br />
RETVAL=0<br />
<br />
start() {<br />
&nbsp;&nbsp;&nbsp;  echo -n "Starting PHP FastCGI: "<br />
&nbsp;&nbsp;&nbsp;  start-stop-daemon --quiet --start --background --chuid "$USER" --exec /usr/bin/env -- $PHP_CGI_ARGS<br />
&nbsp;&nbsp;&nbsp;  RETVAL=$?<br />
&nbsp;&nbsp;&nbsp;  echo "$PHP_CGI_NAME."<br />
}<br />
stop() {<br />
&nbsp;&nbsp;&nbsp;  echo -n "Stopping PHP FastCGI: "<br />
&nbsp;&nbsp;&nbsp;  killall -q -w -u $USER $PHP_CGI<br />
&nbsp;&nbsp;&nbsp;  RETVAL=$?<br />
&nbsp;&nbsp;&nbsp;  echo "$PHP_CGI_NAME."<br />
}<br />
<br />
case "$1" in<br />
&nbsp;&nbsp;&nbsp;start)<br />
&nbsp;&nbsp;&nbsp;  start<br />
  ;;<br />
&nbsp;&nbsp;&nbsp;stop)<br />
&nbsp;&nbsp;&nbsp;  stop<br />
  ;;<br />
&nbsp;&nbsp;&nbsp;restart)<br />
&nbsp;&nbsp;&nbsp;  stop<br />
&nbsp;&nbsp;&nbsp;  start<br />
  ;;<br />
&nbsp;&nbsp;&nbsp;*)<br />
&nbsp;&nbsp;&nbsp;  echo "Usage: php-fastcgi {start|stop|restart}"<br />
&nbsp;&nbsp;&nbsp;  exit 1<br />
  ;;<br />
esac<br />
exit $RETVAL<br />
</code></p>
<p>Die ersten fünf Variablen werden zur Konfiguration benötigt und bedeuten folgendes:</p>
<p>BIND:  IP-Adresse und Port,  unter denen auf Verbindungen gewartet wird<br />
USER: Benutzer, unter dem die Prozesse laufen<br />
PHP_FCGI_CHILDREN: Anzahl der zu forkenden bzw. erstellenden Prozesse<br />
PHP_FCGI_MAX_REQUESTS: Anzahl von Requests, nach denen der Prozess stirbt (neue werden automatisch erstellt)<br />
PHP_CGI: Pfad zu php5-cgi</p>
<p>Evtl. muß nun noch der Pfad zu php5-cgi und der Benutzer angepasst werden und wir können das Script nach einem chmod ausführen:</p>
<p><code># chmod 700 /etc/init.d/fastcgi<br />
# /etc/init.d/fastcgi start<br />
</code></p>
<p>Mit dem Befehl &#8220;ps ax&#8221; sollten wir nun in der Prozessliste unsere PHP-Prozesse laufen sehen und gehen jetzt  zur <a href="#nginx-config">nginx-Konfiguration</a> über.</p>
<h4>Fast-CGI mit spawn-fcgi</h4>
<p><a href="http://redmine.lighttpd.net/projects/spawn-fcgi" target="_blank">spawn-fcgi</a> macht eigentlich auch nichts anderes als das Startscript unter Ubuntu. Es erstellt einen TCP/Unix-Domain-Socket und die gewünschte Anzahl von Prozessen unter einem bestimmten Benutzer und leitet die Ausgaben ensprechend um. Zur Installation benötigen wir natürlich die aktuellen Sourcen von spawn-fcgi, deren Link wir auf der <a href="http://redmine.lighttpd.net/projects/spawn-fcgi/news" target="_blank">News-Seite des Projektes</a> erhalten. Download, Entpacken und ins Verzeichnis wechseln:</p>
<p><code># wget http://www.lighttpd.net/download/spawn-fcgi-1.6.3.tar.gz<br />
# tar -xvzf spawn-fcgi-1.6.3.tar.gz<br />
# cd spawn-fcgi-1.6.3<br />
</code></p>
<p>Nun folgt das bekannte Zweiergespann zum Kompilieren. spawn-fcgi besitzt keine Install-Routine, weshalb wir dies selbst vornehmen müssen:</p>
<p><code># ./configure<br />
# make<br />
# cp ./src/spawn-fcgi /usr/bin/spawn-fcgi<br />
</code></p>
<p>Nun können wir das Tool das erste mal starten.</p>
<p><code>/usr/bin/spawn-fcgi -a 127.0.0.1 -p 8088 -F 3 -u www -f /usr/bin/php5-cgi</code></p>
<p>Die Bedeutung der Optionen:</p>
<pre>
-a    IP-Adresse, an der auf Verbindungen gewartet wird
-p    Port, an dem auf Verbindungen gewartet wird
-w    User unter dem die Prozesse laufen sollen
-f    Pfad zum PHP-CGI
-F    Anzahl der Prozesse, die geforkt werden sollen
</pre>
<p style="margin-top: 10px;">
<p><a name="nginx-config"></a></p>
<h3>Konfiguration des nginx für PHP mit Fast-CGI</h3>
<p>Wenn wir bereits einen fertigen nginx am Laufen haben, sind nur wenige Zeilen in der Konfiguration zu ergänzen. Ansonsten lies bitte zuerst meine <a href="/nginx-eine-echte-apache-alternative.html">Anleitung zur Installation und Konfiguration des nginx</a>.</p>
<p>Innerhalb des Vhosts, also innerhalb von server {} fügen wir eine neue Location-Direktive für PHP-Files hinzu:</p>
<p><code>&nbsp;&nbsp;&nbsp;location ~ .*\.php$ {<br />
&nbsp;&nbsp;&nbsp;  root /var/www/meinedomain.de/htdocs;<br />
&nbsp;&nbsp;&nbsp;  fastcgi_pass  127.0.0.1:8088;<br />
&nbsp;&nbsp;&nbsp;  fastcgi_index index.php;<br />
&nbsp;&nbsp;&nbsp;  fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;<br />
&nbsp;&nbsp;&nbsp;  include fastcgi_params;<br />
&nbsp;&nbsp;&nbsp;}<br />
</code></p>
<p>Hier darauf achten, das die Angaben in fastcgi_pass mit denen der vorhin konfigurierten übereinstimmen. include fastcgi_params inkludiert eine Datei, die bei der nginx-Installation enthalten ist, möchte Sie hier jedoch abbilden für den Fall das&#8230;</p>
<p><code>fastcgi_param  QUERY_STRING       $query_string;<br />
fastcgi_param  REQUEST_METHOD     $request_method;<br />
fastcgi_param  CONTENT_TYPE       $content_type;<br />
fastcgi_param  CONTENT_LENGTH     $content_length;<br />
<br />
fastcgi_param  SCRIPT_NAME        $fastcgi_script_name;<br />
fastcgi_param  REQUEST_URI        $request_uri;<br />
fastcgi_param  DOCUMENT_URI       $document_uri;<br />
fastcgi_param  DOCUMENT_ROOT      $document_root;<br />
fastcgi_param  SERVER_PROTOCOL    $server_protocol;<br />
<br />
fastcgi_param  GATEWAY_INTERFACE  CGI/1.1;<br />
fastcgi_param  SERVER_SOFTWARE    nginx/$nginx_version;<br />
<br />
fastcgi_param  REMOTE_ADDR        $remote_addr;<br />
fastcgi_param  REMOTE_PORT        $remote_port;<br />
fastcgi_param  SERVER_ADDR        $server_addr;<br />
fastcgi_param  SERVER_PORT        $server_port;<br />
fastcgi_param  SERVER_NAME        $server_name;<br />
<br />
# PHP only, required if PHP was built with --enable-force-cgi-redirect<br />
fastcgi_param  REDIRECT_STATUS    200;<br />
</code></p>
<p>Damit nginx auch beim Aufruf der Domain ohne Dateiname in der <a href="http://de.wikipedia.org/wiki/Uniform_Resource_Locator" target="_blank">URL</a> die Startseite als PHP ausführt, müssen wir zwei Parts in der bestehenden Konfiguration unter server {} anpassen bzw neu einsetzen:</p>
<p>Als erstes machen wir die Datei index.php zur ersten Wahl beim Aufruf ohne Dateiname:</p>
<p><code>index   index.php index.html index.htm;<br />
</code></p>
<p>Alles andere was nicht gefunden wird, leiten wir ebenfalls auf index.php weiter:</p>
<p><code>        # this sends all non-existing file or directory requests to index.php<br />
        if (!-e $request_filename) {<br />
            rewrite . /index.php last;<br />
        }<br />
</code></p>
<p>Das komplett Konfigfile könnte nun so aussehen:</p>
<p><code>server {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# IP-Adresse und Port, an denen für Web-Zugriffe gelauscht wird<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;listen&nbsp;&nbsp;&nbsp;&nbsp;   1.2.3.4:80;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# Domains, auf die dieser Server hören soll<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;server_name  www.meinedomain.de meinedomain.de;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# Hauptverzeichnis für Dokumente<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;root&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /var/www/meinedomain.de/htdocs;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# Ort des Access-Logfiles<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;access_log /var/www/meinedomain.de/logs/access_log vhosts;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# Definition des Index-Files (Startseite, für Anfragen ohne Dateiname)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;index index.php index.html index.htm;;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# Wenn Zugriff auf andere als Standarddomain,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# auf diese per 301 permanent weiterleiten<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if ($host != 'www.meinedomain.de' ) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rewrite  ^/(.*)$  http://www.meinedomain.de/$1  permanent;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# Für Bilder und einige andere Dateitypen Access-Log ausschalten und<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# Expire-Zeit  auf 7 Tage erhöhen (sendet den entspr. Expire-Header)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;location ~* ^.+\.(js|css|jpg|jpeg|gif|png|pdf|zip|rar)$ {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  access_log   off;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  expires&nbsp;&nbsp;&nbsp;&nbsp;  7d;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;location / {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  # Nützlich für SSL und evtl. später hinzukommende Scriptsprachen<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  proxy_set_header  X-Real-IP  $remote_addr;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  proxy_set_header Host $http_host;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  proxy_redirect off;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  # Wenn die angeforderete statische Datei existiert, diese ausliefern<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  # ohne die anderen Regeln weiter unten zu beachten<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  if (-f $request_filename) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  }<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  # this sends all non-existing file or directory requests to index.php<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  if (!-e $request_filename) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rewrite . /index.php last;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;location ~ .*.php$ {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  root /var/www/meinedomain.de/htdocs;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  fastcgi_pass 127.0.0.1:8088;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  fastcgi_index index.php;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  include fastcgi_params;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
}<br />
</code></p>
<p>Jetzt heißt es den nginx mit <code>/etc/init.d/nginx restart</code> neu starten und PHP ist einsatzbereit.</p>
<p>WordPress kann nun ganz normal installiert und verwendet werden.</p>
<p>Insofern man ein Cache-Modul wie <a href="http://wordpress.org/extend/plugins/wp-super-cache/">WP-Super-Cache</a> nutzt, sollte man noch die entsprechenden RewriteRules für die statischen HTML-Dateien setzen. Für WP-Super-Cache beispielsweisse einfach folgende Zeilen innerhalb location / {} und vor der Einstellung für die .php-Dateien kopieren:</p>
<p><code>      if (-f $document_root/cache$fastcgi_script_name) {<br />
        rewrite (.*) /cache$1 break;<br />
      }<br />
      if (-f $document_root/cache/$fastcgi_script_name/index.html) {<br />
        rewrite (.*) /cache/$1/index.html break;<br />
      }<br />
      if (-f $document_root/cache$fastcgi_script_name.html) {<br />
        rewrite (.*) /cache$1.html break;<br />
      }<br />
</code></p>
<p>Geschafft! Jetzt haben wir nginx mit PHP laufen und können uns über die bessere Performance freuen. Wenn du noch weitere Beispiele für Konfigurationen, auch für andere Sprachen und Einsatzmöglichkeiten suchst, empfiehlt sich ein Blick auf die <a href="http://wiki.nginx.org/Configuration" target="_blank">Configuration-Seite von nginx</a>.</p>
<p>Sicher folgen noch einige Artikel mehr über den nginx, um meine Begeisterung kund zu tun ;-) Solltest Du also Fragen, Wünsche, Vorschläge oder sonstiges haben, ab damit in die Kommentare, ich freue mich!</p>
<p style="margin-top: 40px;">
<strong>Credits:</strong></p>
<p>Original-Foto <a href="http://www.flickr.com/photos/jurvetson/2261734491/" target="_blank">Strap-On Video Rocket</a> unter Creative Commons von <a href="http://www.flickr.com/photos/jurvetson" target="_blank">jurvetson auf Flickr</a>. Danke!</p>
]]></content:encoded>
			<wfw:commentRss>http://stetix.de/wordpress-langsam-php-und-wordpress-schneller-machen-mit-nginx-und-fast-cgi.html/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Nginx: Eine echte Apache Alternative! Vorteile, Installation und Konfiguration des Webservers unter Linux erklärt.</title>
		<link>http://stetix.de/nginx-eine-echte-apache-alternative.html</link>
		<comments>http://stetix.de/nginx-eine-echte-apache-alternative.html#comments</comments>
		<pubDate>Tue, 01 Mar 2011 16:25:22 +0000</pubDate>
		<dc:creator>Nico</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Webentwicklung]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[installation]]></category>
		<category><![CDATA[lighttpd]]></category>
		<category><![CDATA[nginx]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[webserver]]></category>

		<guid isPermaLink="false">http://stetix.de/?p=1087</guid>
		<description><![CDATA[Der Apache-Webserver ist das Non Plus Ultra in Sachen Webserver-Software. Seit mehr als 15 Jahren führt der Platzhirsch die Liste der meist genutzen Webserver an. Aktuell, im Februar 2011, werden bei Netcraft 171,195,554 Hostnamen mit Installationen des Apachen gemessen. Das sind 60.10% aller Webserver-Installationen weltweit. Marktanteile Top-Server über alle Domains Aug. 1995 &#8211; Feb. 2011. [...]]]></description>
				<content:encoded><![CDATA[<p>Der <a href="http://httpd.apache.org/" target="_blank">Apache-Webserver</a> ist das Non Plus Ultra in Sachen Webserver-Software. Seit mehr als 15 Jahren führt der Platzhirsch die Liste der meist genutzen Webserver an. Aktuell, im Februar 2011, werden bei <a href="http://news.netcraft.com/" target="_blank">Netcraft</a> 171,195,554 <a href="http://de.wikipedia.org/wiki/Hostname" target="_blank">Hostnamen</a> mit Installationen des Apachen gemessen. Das sind 60.10% aller Webserver-Installationen weltweit.</p>
<p><img src="http://stetix.de/wp-content/uploads/2011/03/webserver-usage-1995-2011.png" alt="webserver usage 1995 2011 Nginx: Eine echte Apache Alternative! Vorteile, Installation und Konfiguration des Webservers unter Linux erklärt." title="webserver-usage-1995-2011" width="550" height="300" class="alignnone size-full wp-image-1743" /><br />
<small style="color: #888;">Marktanteile Top-Server über alle Domains Aug. 1995 &#8211; Feb. 2011. Quelle: <a href="http://news.netcraft.com/archives/2011/02/15/february-2011-web-server-survey.html" target="_blank">netcraft.com</a></small></p>
<p>Seine weite Verbreitung, immerhin ist der Apache fast bei jedem Betriebssystem außer Windows dabei, die Anzahl der erhältlichen Erweiterungen und Module und die relativ leichte Konfiguration, auch in Massenhosting-Umgebungen, machen den Apache auch für Einsteiger zu einem Webserver der ersten Wahl. Wer jedoch mit viel Traffic zu tun hat und dabei eine <a href="http://de.wikipedia.org/wiki/Skriptsprache#Beispiele:_serverseitig" target="_blank">serverseitige Skriptsprache</a> wie PHP, Perl, Ruby oder ähnliches einsetzt, wird mit dem Apachen früher oder später an seine Grenzen stossen. Es ist mit Hilfe von Reduzierung auf wesentliche Module, <a href="http://httpd.apache.org/docs/2.0/misc/perf-tuning.html" target="_blank">Performance-Tuning</a> und Tuning des Linux Systems natürlich sehr viel raus zu holen, doch irgendwann steht die Frage nach einer Alternative im Raum.</p>
<p><span id="more-1087"></span></p>
<p><img src="http://stetix.de/wp-content/uploads/2011/03/nginx-logo.jpg" alt="nginx logo Nginx: Eine echte Apache Alternative! Vorteile, Installation und Konfiguration des Webservers unter Linux erklärt." title="nginx-logo" width="640" height="139" class="alignnone size-full wp-image-1732" /></p>
<h3>Der Webserver nginx</h3>
<p>Hier war bis vor wenigen Jahren gerade im Linux-Bereich der Webserver <a href="http://www.lighttpd.net/" target="_blank">lighttpd</a> auf dem Weg eine echte Alternative zu werden, wurde jedoch im Jahr 2008 sehr schnell von einem Webserver Namens <a href="http://nginx.org/" target="_blank">nginx</a> überholt. nginx hat aktuell eine Verbreitung von 7.57% auf 21,570,463 Hosts. Tendenz stark steigend.<br />
Der von Igor Sysoev ursprünglich für die russische Suchmaschine <a href="http://www.rambler.ru/" target="_blank">Rambler</a> entwickelte nginx-Webserver, der auch als Reverse Proxy und E-Mail-Proxy verwendet werden kann, zeichnet sich durch seine hohe Performance und leichte Konfiguration aus. Gerade in Sachen Performance hat er den Apache schon einige Male <a href="http://www.joeandmotorboat.com/2008/02/28/apache-vs-nginx-web-server-performance-deathmatch/" target="_blank">in</a> <a href="http://www.pcdoctor-community.com/blog/posts/2008/05/15/Nginx-vs.-Apache2-in-Rails-Running-Death-Match/" target="_blank">die</a> <a href="http://turnkeye.com/blog/2010/05/nginx-vs-litespeed-magento-benchmark-tests/" target="_blank">Ecke</a> <a href="http://www.elbcoast.net/?p=77" target="_blank">verwiesen</a>. nginx wird auch bereits von vielen High-Traffic-Seiten wie beispielsweise <a href="http://www.golem.de/" target="_blank">Golem.de</a>, <a href="http://wordpress.com/" target="_blank">WordPress.com</a>, <a href="http://t3n.de/" target="_blank">t3n.de</a>, <a href="https://github.com/" target="_blank">GitHub</a> und vielen weiteren mehr eingesetzt. Auch als zusätzliche Software zum Beispiel als Load-Balancer, Proxy, SSL-Proxy oder für das Ausliefern von reinen statischen Inhalten wie Grafiken, Stylesheets oder Videos eignet sich nginx durch seine kurzen Responce-Zeiten sehr gut.</p>
<h3>nginx: Die Installation</h3>
<p>Die Software zu installieren ist im Prinzip nicht weiter schwierig, sofern man Linux-Grundkenntnisse mitbringt. Download, Configure, Make, Install, Konfigurationsfiles anpassen und fertig ist die nginx-Installation. Doch eins nach dem anderen und auch für Einsteiger etwas langsamer erklärt. Ich möchte hier an einem Beispiel aufzeigen, wie man den nginx-Webserver installiert, konfiguriert und für das Ausliefern von statischen Webseiten vorbereitet.</p>
<h4>Download des nginx</h4>
<p>Die aktuelle stabile Version erhalten wir auf der <a href="http://nginx.org/" target="_blank">Webseite des nginx</a>. Aktuell ist die Version 0.8.54 vom 14.12.2010, die man unter folgenden URL downloaden kann:<br />
<a href="http://nginx.org/download/nginx-0.8.54.tar.gz">http://nginx.org/download/nginx-0.8.54.tar.gz</a><br />
Mit Linux macht man das am besten mit <a href="http://www.gnu.org/software/wget/" target="_blank">wget</a>:</p>
<p><code># wget http://nginx.org/download/nginx-0.8.54.tar.gz<br />
</code></p>
<p>Jetzt muß man den Tarball nur noch entpacken und es kann zur Installation übergehen.</p>
<p><code># tar -xvzf nginx-0.8.54.tar.gz<br />
</code></p>
<h4>Installation des nginx</h4>
<p>Jetzt wechseln wir in das entpackte Verzeichnis. Um den nginx mit Standard-Modulen zu installieren reicht ein einfaches configure aus.</p>
<p><code># cd nginx-0.8.54<br />
# ./configure<br />
</code></p>
<p>Dies bereitet die Kompilierung des nginx in das Verzeichnis /usr/local/nginx mit Standard-Modulen wie dem HTTP-Kernmodul, HTTP-Upstreammodul, HTTP-Zugriffsmodul, HTTP-Authentifizierungsmodul und Fastcgi-Modul vor. Die Ausgabe der Zusammenfassung sollte so oder so ähnlich aussehen:</p>
<p><code>Configuration summary<br />
  + using system PCRE library<br />
  + OpenSSL library is not used<br />
  + md5: using system crypto library<br />
  + sha1 library is not used<br />
  + using system zlib library<br />
<br />
  nginx path prefix: "/usr/local/nginx"<br />
  nginx binary file: "/usr/local/nginx/sbin/nginx"<br />
  nginx configuration prefix: "/usr/local/nginx/conf"<br />
  nginx configuration file: "/usr/local/nginx/conf/nginx.conf"<br />
  nginx pid file: "/usr/local/nginx/logs/nginx.pid"<br />
  nginx error log file: "/usr/local/nginx/logs/error.log"<br />
  nginx http access log file: "/usr/local/nginx/logs/access.log"<br />
  nginx http client request body temporary files: "client_body_temp"<br />
  nginx http proxy temporary files: "proxy_temp"<br />
  nginx http fastcgi temporary files: "fastcgi_temp"<br />
  nginx http uwsgi temporary files: "uwsgi_temp"<br />
  nginx http scgi temporary files: "scgi_temp"<br />
</code></p>
<p>Im nächsten Schritt heisst es kompilieren und installieren:</p>
<p><code># make<br />
# make install<br />
</code></p>
<p>Sollten diese beiden Make-Befehle ohne Fehler ausgeführt werden ist nginx nun unter dem Verzeichnis /usr/local/nginx installiert.</p>
<h3>nginx: Die Konfiguration</h3>
<p>Beginnen wir nun mit der Konfiguration. Im Prinzip können die Standard-Einstellungen übernommen werden, da sie für das Ausliefern von statischen Webseiten völlig ausreichend sind. Dennoch möchten wir hier einige Einstellungen variieren und jeweils noch die gewünschten Server bzw. Domains anlegen. Die Konfiguration befindet sich in der Datei /usr/local/nginx/conf/nginx.conf, die wir mit dem Editor unserer Wahl, in meine Fall der <a href="http://de.wikipedia.org/wiki/Vi">vi-Editor</a>, öffnen:</p>
<p><code># vi /usr/local/nginx/conf/nginx.conf</code></p>
<h4>Globale Server-Einstellungen</h4>
<p>An erster Stelle finden wir die globalen Einstellungen. Hier können Werte definiert werden, die für den gesamten Server gelten. Dazu gehören der User und die Gruppe unter der die Server-Prozesse laufen, Logfiles, Pidfile und Angaben zu Prozessen und MaxClients.</p>
<p><code># User und Gruppe unter der der nginx läuft<br />
user www www;<br />
<br />
# Anzahl der Worker-Prozesse<br />
worker_processes  2;<br />
<br />
# Anzahl der maximalen Worker-Connections<br />
events {<br />
    worker_connections  512;<br />
}<br />
<br />
# Ort und LogLevel der ErrorLog-Datei<br />
error_log  logs/error.log notice;<br />
<br />
# Ort des Pidfiles<br />
pid        logs/nginx.pid;<br />
</code></p>
<p>Standardmässig läuft der nginx unter dem <a href="http://wiki.nginx.org/CoreModule#user" target="_blank"><strong>User</strong></a> nobody, was wir je nach Belieben anpassen können. Allerdings sollte man einen Werbserver niemals unter dem Benutzer root laufen lassen, um eventuellen Sicherheitslücken vorzubeugen.</p>
<p>Die Anzahl der <a href="http://wiki.nginx.org/CoreModule#worker_processes" target="_blank"><strong>Worker-Prozesse</strong></a> gibt an, wieviele Prozesse gestartet werden sollen. Der nginx startet einen Master-Prozess, der die Verwaltung übernimmt und die in der Konfiguration angegebene Anzahl von Worker-Prozessen. Diese Worker-Prozesse sind für die Verbindungen zum Benutzer und das Ausliefern der Webseite zuständig. 2 Worker-Prozesse sollten für den Anfang ausreichend sein.</p>
<p>Die Anzahl der <a href="http://wiki.nginx.org/EventsModule#worker_connections" target="_blank"><strong>Worker-Connections</strong></a> bestimmt die maximale Anzahl von gleichzeitigen Verbindungen, die ein Worker-Prozess verarbeiten kann. Aus beiden Werten von worker_processes und worker_connections ergibt sich hier also die maximale Anzahl von gleichzeitigen Verbindungen für den gesamten Webserver, der so genannten auch aus der Apache-Konfiguration bekannten Variable <strong>MaxClients</strong>. Die Formel hierfür ist </p>
<p><strong><em>max_clients = worker_processes * worker_connections</em></strong></p>
<p>In unserem Fall 2 * 512 = 1024. 1024 Verbindungen sollten für den Anfang mehr als ausreichend sein und können bei Ressourcenmangel ruhig auch bis 250 minimiert werden.</p>
<p>Den Ort und LogLevel der ErrorLog-Datei, sowie den Ort des Pidfiles können wir getrost so übernehmen. </p>
<h4>HTTP Server-Einstellungen</h4>
<p>Jetzt kommen wir zur Konfiguration des HTTP-Services und der einzelnen Server. Die Standard-Einstellungen sollten angepasst werden und wurden von mir für optimale und performante Auslieferung mit Hilfe von Gzip, Cache-Einstellungen usw. optimiert. Nehmen wir als Beispiel die IP 1.2.3.4 und eine Domain Namens www.meinedomain.de mit statischen HTML-Seiten, Bildern, Stylesheets und einigen Download-Dateien im Verzeichnis /var/www/meinedomain.de/htdocs, welches natürlich vorhanden sein sollte. Auch an SEO sollten wir gleich denken, die Domain wirklich nur unter einer Domain erreichbar machen und alles andere auf diese per <a href="http://stetix.de/301-weiterleitung-einer-website-per-mod-rewrite.html">301-Weiterleitung</a> weiterleiten.</p>
<p><code>http {<br />
&nbsp;&nbsp;&nbsp;&nbsp;# die Konfiguration der Content-Typen aus conf/mime.types inkludieren<br />
&nbsp;&nbsp;&nbsp;&nbsp;include&nbsp;&nbsp;&nbsp;&nbsp;   mime.types;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;# Der Standard-Content-Typ<br />
&nbsp;&nbsp;&nbsp;&nbsp;default_type  application/octet-stream;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;# Support für größere Dateien<br />
&nbsp;&nbsp;&nbsp;&nbsp;sendfile&nbsp;&nbsp;&nbsp;&nbsp;   on;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;# HTTP Response-Header in einem Paket senden<br />
&nbsp;&nbsp;&nbsp;&nbsp;tcp_nopush&nbsp;&nbsp;&nbsp;&nbsp; on;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;# Sekunden, in denen auf eine erneute Verbindung vom<br />
&nbsp;&nbsp;&nbsp;&nbsp;# gleichen Client gewartet wird<br />
&nbsp;&nbsp;&nbsp;&nbsp;keepalive_timeout  65;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;# Disable Nagle's buffer algorithm<br />
&nbsp;&nbsp;&nbsp;&nbsp;tcp_nodelay&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;on;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;# Gzip aktivieren, sendet komprimierte Daten zum Client<br />
&nbsp;&nbsp;&nbsp;&nbsp;gzip  on;<br />
&nbsp;&nbsp;&nbsp;&nbsp;gzip_comp_level 2;<br />
&nbsp;&nbsp;&nbsp;&nbsp;gzip_proxied any;<br />
&nbsp;&nbsp;&nbsp;&nbsp;gzip_types&nbsp;&nbsp;&nbsp;&nbsp;  text/plain text/css application/x-javascript text/xml application/xml application/xml+rss text/javascript;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;# Definition des Logfile-Formats<br />
&nbsp;&nbsp;&nbsp;&nbsp;log_format vhosts '$http_host $remote_addr - $remote_user [$time_local]  '<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; '"$request" $status $body_bytes_sent '<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; '"$http_referer" "$http_user_agent"';<br />
<br />
# VHost-Konfiguration<br />
server {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# IP-Adresse und Port, an denen für Web-Zugriffe gelauscht wird<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;listen&nbsp;&nbsp;&nbsp;&nbsp;   1.2.3.4:80;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# Domains, auf die dieser Server hören soll<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;server_name  www.meinedomain.de meinedomain.de;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# Hauptverzeichnis für Dokumente<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;root&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /var/www/meinedomain.de/htdocs;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# Ort des Access-Logfiles<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;access_log /var/www/meinedomain.de/logs/access_log vhosts;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# Definition des Index-Files (Startseite, für Anfragen ohne Dateiname)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;index   index.html;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# Wenn Zugriff auf andere als Standarddomain,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# auf diese per 301 permanent weiterleiten<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if ($host != 'www.meinedomain.de' ) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rewrite  ^/(.*)$  http://www.meinedomain.de/$1  permanent;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# Für Bilder und einige andere Dateitypen Access-Log ausschalten und<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# Expire-Zeit  auf 7 Tage erhöhen (sendet den entspr. Expire-Header)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;location ~* ^.+\.(js|css|jpg|jpeg|gif|png|pdf|zip|rar)$ {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  access_log   off;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  expires&nbsp;&nbsp;&nbsp;&nbsp;  7d;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;location / {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  # Nützlich für SSL und evtl. später hinzukommende Scriptsprachen<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  proxy_set_header  X-Real-IP  $remote_addr;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  proxy_set_header Host $http_host;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  proxy_redirect off;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  # Wenn die angeforderete statische Datei existiert, diese ausliefern<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  # ohne die anderen Regeln weiter unten zu beachten<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  if (-f $request_filename) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  }<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  # index.html für Unterverzeichnisse<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  if (-f $request_filename/index.html) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rewrite (.*) $1/index.html break;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
}<br />
}<br />
</code></p>
<p>Die Konfiguration besteht aus dem Part http mit Definitionen für diesen Service. Hier wird zuerst die Mime-Konfiuration geladen, Einstellungen zum Connection-Verhalten gesetzt, das Gzip-Modul zum komprimieren der Daten aktiviert und die Definition des Logfile-Formates vorgenommen. Weiter finden wir innerhalb des http-Parts den server-Part, die Konfiguration der einzelnen Websites, auch genannt VHosts. Ich habe auch hier die einzelnen Direktiven oben kommentiert, weshalb ich auf weitere detailiertere Beschreibung verzichte. Im Prinzip ist alles selbsterklärend. Will man weitere Domains bzw. Server hinzufügen muß man lediglich den Part server {} kopieren. Dabei ist darauf zu achten, daß jede Konfiguration nacheinander innerhalb von http {} steht. Ab zwei Servern lohnt es sich schon, für jeden Server ein eigenes Konfigurationsfile anzulegen. Hierfür erstellt man innerhalb des conf-Verzeichnisses ein Unterverzeichnis, zum Beispiel &#8220;sites&#8221; und inkludiert die darin enthaltenen Files einfach innerhalb des http-Parts:</p>
<p><code>include /usr/local/nginx/conf/sites/*;<br />
</code></p>
<p>Jetzt kann man sich für jede Domain ein eigenes Konfigurationsfile anlegen, was wesentlich übersichtlicher ist.</p>
<h3>Das nginx Startscript</h3>
<p>Was uns jetzt noch fehlt ist, den nginx das erste Mal zu starten. Hierfür benötigen wir ein sogenanntes Startskript, welches wir z.B. <a href="https://gist.github.com/33062#file_nginx.sh" target="_blank">hier für Ubuntu</a> bekommen und unter /etc/init.d/nginx ablegen. Alternativ kann es hier kopiert und für evtl. andere Distributionen angepasst werden:</p>
<p><code>#!/bin/sh<br />
<br />
#This is a start script for nginx. Tested on Unbuntu Edge.<br />
#Should work on Ubuntu, Debian and probably a few other Linux distros.<br />
#Change DAEMON and CONFIG_FILE  if neccessary<br />
<br />
PATH=/sbin:/bin:/usr/sbin:/usr/bin<br />
<br />
#Location of nginx binary. Change path as neccessary<br />
DAEMON=/usr/local/nginx/sbin/nginx<br />
#Location of configuration file. Change path as neccessary<br />
CONFIG_FILE=/usr/local/nginx/conf/nginx.conf<br />
<br />
DAEMON_OPTS="-c $CONFIG_FILE"<br />
NAME=nginx<br />
DESC="web server"<br />
PIDFILE=/var/run/$NAME.pid<br />
SCRIPTNAME=/etc/init.d/$NAME<br />
<br />
#only run if binary can be found<br />
test -x $DAEMON || exit 0<br />
<br />
set -e<br />
<br />
#import init-functions<br />
. /lib/lsb/init-functions<br />
<br />
case "$1" in<br />
start)<br />
log_daemon_msg "Starting $DESC" $NAME<br />
if ! start-stop-daemon --start --quiet\<br />
	--pidfile $PIDFILE --exec $DAEMON -- $DAEMON_OPTS ; then<br />
	log_end_msg 1<br />
	else<br />
	log_end_msg 0<br />
fi<br />
;;<br />
stop)<br />
log_daemon_msg "Stopping $DESC" $NAME<br />
if start-stop-daemon --quiet --stop --oknodo --retry 30\<br />
	--pidfile $PIDFILE --exec $DAEMON; then<br />
	rm -f $PIDFILE<br />
	log_end_msg 0<br />
	else<br />
	log_end_msg 1<br />
fi<br />
;;<br />
reload)<br />
log_daemon_msg "Reloading $DESC configuration" $NAME<br />
if start-stop-daemon --stop --signal 2 --oknodo --retry 30\<br />
	--quiet --pidfile $PIDFILE --exec $DAEMON; then<br />
	if start-stop-daemon --start --quiet  \<br />
		--pidfile $PIDFILE --exec $DAEMON -- $DAEMON_OPTS ; then<br />
		log_end_msg 0<br />
		else<br />
		log_end_msg 1<br />
	fi<br />
	else<br />
	log_end_msg 1<br />
fi<br />
;;<br />
restart|force-reload)<br />
$0 stop<br />
sleep 1<br />
$0 start<br />
;;<br />
*)<br />
echo "Usage: $SCRIPTNAME {start|stop|restart|reload|force-reload}" >&#038;2<br />
exit 1<br />
;;<br />
esac<br />
<br />
exit 0<br />
</code></p>
<p>Jetzt noch mit <a href="http://de.wikipedia.org/wiki/Chmod" target="_blank">chmod</a> das Ausführen der Datei erlauben:</p>
<p><code># chmod 700 /etc/init.d/nginx</code></p>
<p>Nun können wir uns freuen und den nginx das erste Mal starten:</p>
<p><code># /etc/init.d/nginx start</code></p>
<p>Ist alles korrekt und das Konfigurationsfile ohne Fehler, sollte der nginx starten und die Webseite unter der konfigurierten Domain erreichbar sein.</p>
<h4>nginx Autostart</h4>
<p>Damit der nginx auch beim nächsten Server-Neustart automatisch startet, benötigen wir einen Eintrag bzw. einen <a href="http://de.wikipedia.org/wiki/Symbolische_Verkn%C3%BCpfung" target="_blank">symbolischen Link</a> im Runlevel-Startverzeichnis, hier als Beispiel für <a href="http://www.ubuntu.com/" target="_blank">Ubuntu</a>:</p>
<p><code>ln -s /etc/init.d/nginx /etc/rc2.d/S99nginx</code></p>
<p>Somit startet nginx beim nächsten Neustart des Servers im Runlevel 2 automatisch. Falls ein anderes Runlevel läuft (ersichtlich mit dem Befehl &#8220;runlevel&#8221;), einfach den Link im jeweiligen Verzeichnis erstellen.</p>
<h3>Und nun: Viel Spaß mit nginx!</h3>
<p>Das wars! Ich hoffe ich konnte Dir hier einen kleinen Einstieg in nginx vermitteln. Ein Artikel zur Verwendung von PHP und Installation von WordPress folgt demnächst. Bei Fragen, Verbesserungen oder Angregungen freue ich mich über Kommentare. </p>
<h4>Weiterführende Links</h4>
<p>- <a href="http://nginx.org/">nginx-Webseite</a><br />
- <a href="http://wiki.nginx.org/Main">nginx-Wiki</a><br />
- <a href="http://de.wikipedia.org/wiki/Nginx">nginx bei Wikipedia</a><br />
- <a href="http://wiki.ubuntuusers.de/nginx">nginx bei Ubuntu</a></p>
]]></content:encoded>
			<wfw:commentRss>http://stetix.de/nginx-eine-echte-apache-alternative.html/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Ubuntu auf einem Netbook Samsung N210 Plus installieren</title>
		<link>http://stetix.de/ubuntu-auf-einem-netbook-samsung-n210-installieren.html</link>
		<comments>http://stetix.de/ubuntu-auf-einem-netbook-samsung-n210-installieren.html#comments</comments>
		<pubDate>Wed, 16 Feb 2011 14:25:18 +0000</pubDate>
		<dc:creator>Nico</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[installation]]></category>
		<category><![CDATA[n210]]></category>
		<category><![CDATA[netbook]]></category>
		<category><![CDATA[samsung]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://stetix.de/?p=1673</guid>
		<description><![CDATA[Für alle, die auf einem Samsung Netbook die Linux Distribution Ubuntu, genauer die Ubuntu Netbook Edition, installieren möchten, hier eine Kurzübersicht mit den einzelnen Installationsschritten. Die Schwierigkeit ist bei Netbooks, das kein CD-ROM Laufwerk vorhanden ist. Durch bootfähige USB-Sticks allerdings kein Thema. Bei meinem Samsung N210 Plus hat dies wunderbar und gleich beim ersten Versuch [...]]]></description>
				<content:encoded><![CDATA[<p><img src="http://stetix.de/wp-content/uploads/2011/02/ubuntu.jpg" alt="ubuntu Ubuntu auf einem Netbook Samsung N210 Plus installieren" title="ubuntu" width="250" height="263" class="alignright size-full wp-image-1680" />Für alle, die auf einem Samsung Netbook die Linux Distribution <a href="http://www.ubuntu.com/">Ubuntu</a>, genauer die Ubuntu Netbook Edition, installieren möchten, hier eine Kurzübersicht mit den einzelnen Installationsschritten. Die Schwierigkeit ist bei Netbooks, das kein CD-ROM Laufwerk vorhanden ist. Durch bootfähige USB-Sticks allerdings kein Thema. Bei meinem <a href="http://www.samsung.de/de/Privatkunden/Mobil/Notebooks/Mobil/n210maviplus/NP-N210-JP02DE/detail.aspx">Samsung N210 Plus</a> hat  dies wunderbar und gleich beim ersten Versuch geklappt. Ich muß sagen, Windows 7 durch Ubuntu zu ersetzen, war eine sehr gute Entscheidung. Auch wenn es bei mir aktuell noch das ein oder andere Problem mit der Bedienung von Ubuntu gibt, da ich Windows und Mac OS gewohnt bin, ist Ubuntu sehr viel performanter als das vorinstallierte Windows 7. Für Web-Entwickler lohnt es sich noch mehr, da man hier natürlich alle Tools und Dienste die man so benötigt (Apache, Svn, PHP, Ruby usw.) wie unter Linux gewohnt easy installieren kann. Falls du also noch an einer Entscheidung nagst: Go for it!</p>
<p><big><br />
<strong>1. Ubuntu Netbook Edition downloaden</strong><br />
<a href="http://www.ubuntu.com/netbook/get-ubuntu/download" target="_blank">http://www.ubuntu.com/netbook/get-ubuntu/download</a></p>
<p>&nbsp;<br />
<strong>2. USB-Stick mit mindestens 800 MB besorgen</strong></p>
<p>&nbsp;<br />
<strong>3. Universal USB Installer für Windows downloaden</strong><br />
<a href="http://www.pendrivelinux.com/downloads/Universal-USB-Installer/Universal-USB-Installer.exe" target="_blank">http://www.pendrivelinux.com/downloads/Universal-USB-Installer/Universal-USB-Installer.exe</a></p>
<p>
Alternative für Mac: <a href="http://unetbootin.sourceforge.net/">UNetbootin</a>.
</p>
<p>&nbsp;<br />
<strong>4. .iso mit dem Universal USB Installer auf den USB-Stick installieren</strong></p>
<p>&nbsp;<br />
<strong>5. Das Netbook von USB booten: Escape gedrückt halten, USB als Boot-Device auswählen</strong></p>
<p>&nbsp;<br />
<strong>6. Ubuntu installieren</strong></p>
<p>&nbsp;<br />
</big></p>
<p>Das war&#8217;s schon. Ansich wirklich kein Thema, wenn man sowas noch nie gemacht hat, ist so eine Kurzanleitung sicher ganz hilfreich.</p>
<p>Da die Funktions-Tasten (Screen-Beleuchtung, Lautstärke etc.) von Anfang an bei Ubuntu nicht funktionieren, hat mir <a href="http://www.absurde-zeiten.de/ubuntu-samung-p210-backlight-problem/">diese Anleitung</a> geholfen sie in Gang zu bekommen.</p>
<p>Viel Spaß!</p>
]]></content:encoded>
			<wfw:commentRss>http://stetix.de/ubuntu-auf-einem-netbook-samsung-n210-installieren.html/feed</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>PHP-Einzeiler</title>
		<link>http://stetix.de/php-einzeiler.html</link>
		<comments>http://stetix.de/php-einzeiler.html#comments</comments>
		<pubDate>Wed, 22 Dec 2010 13:05:39 +0000</pubDate>
		<dc:creator>Nico</dc:creator>
				<category><![CDATA[Webentwicklung]]></category>
		<category><![CDATA[einzeiler]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://stetix.de/?p=1666</guid>
		<description><![CDATA[Ich liebe Einzeiler und in einer Zeile Code das zu machen, wofür andere oder man selbst vorher ganze 20 Zeilen oder mehr benötigte. Um sich diese Einzeiler zu merken, fange ich hier einfach mal eine Liste an, die ich ständig erweitern werde. Auch wenn die Zeichen aufgrund mangelnder Breite in meinem Layout umbrechen, sind dies [...]]]></description>
				<content:encoded><![CDATA[<p>Ich liebe Einzeiler und in einer Zeile Code das zu machen, wofür andere oder man selbst vorher ganze 20 Zeilen oder mehr benötigte. Um sich diese Einzeiler zu merken, fange ich hier einfach mal eine Liste an, die ich ständig erweitern werde.</p>
<p>Auch wenn die Zeichen aufgrund mangelnder Breite in meinem Layout umbrechen, sind dies alles Einzeiler ;-)</p>
<h3>Zufallsstring mit PHP &#8211; Einzeiler</h3>
<h4>Variante 1</h4>
<p><code>echo substr(str_shuffle("23456789abcdefghjkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ"), 0, 8);<br />
</code><br />
Ja, ich kann zählen und das Alphabet auch. Unnötige und für Passwörter ungeeignete Zeichen habe ich hier weg gelassen.</p>
<h4>Variante 2</h4>
<p>Wer es noch kürzer braucht, kann auch md5 nehmen. Danke an Jonathan für den Hinweis. Aber Achtung, hier sind nur die Zeichen 0-9 und a-f enthalten.<br />
<code>echo substr(md5(time()),0,8);</code><br />
Du hast auch schöne Einzeiler, die richtig Sinn und das PHP-Entwickler-Leben leichter machen? Bitte ab damit in die Kommentare oder per E-Mail an mich. Danke!</p>
]]></content:encoded>
			<wfw:commentRss>http://stetix.de/php-einzeiler.html/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>WordPress-Plugins: Welche sind Pflicht und Must Have?!</title>
		<link>http://stetix.de/wordpress-plugins-welche-sind-pflicht-und-must-have.html</link>
		<comments>http://stetix.de/wordpress-plugins-welche-sind-pflicht-und-must-have.html#comments</comments>
		<pubDate>Fri, 17 Dec 2010 15:02:49 +0000</pubDate>
		<dc:creator>Nico</dc:creator>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[Webentwicklung]]></category>
		<category><![CDATA[plugins]]></category>
		<category><![CDATA[Wordpress]]></category>

		<guid isPermaLink="false">http://stetix.de/?p=1640</guid>
		<description><![CDATA[Da drüben macht sich Robert gerade nackig und erzählt uns, welche WordPress-Plugins er als Must Have&#8217;s erachtet und man unbedingt in seinem WordPress-Blog installiert haben sollte. Natürlich gibt es solche Listen schon wie Sand am Meer, ist mir aber egal, ich finde solche Listen nämlich super interessant, da man hier das ein oder andere Plugin [...]]]></description>
				<content:encoded><![CDATA[<p><img src="http://stetix.de/wp-content/uploads/2010/12/wordpress-plugins.gif" alt="wordpress plugins Wordpress Plugins: Welche sind Pflicht und Must Have?!" title="wordpress-plugins" width="412" height="166" class="alignright size-full wp-image-1647" />Da drüben <a href="http://www.robertbasic.de/2010/12/wordpress-plugins-must-have/">macht sich Robert gerade nackig</a> und erzählt uns, welche <a href="http://wordpress.org/extend/plugins/">WordPress-Plugins</a> er als Must Have&#8217;s erachtet und man unbedingt in seinem WordPress-Blog installiert haben sollte. Natürlich gibt es solche Listen schon <a href="http://www.google.de/search?hl=de&#038;lr=lang_de&#038;tbs=lr%3Alang_1de&#038;q=wichtigste+wordpress+plugins">wie Sand am Meer</a>, ist mir aber egal, ich finde solche Listen nämlich super interessant, da man hier das ein oder andere Plugin entdeckt, welches man selbst noch nicht installiert oder entdeckt hat. Zum anderen ist bei Roberts Erfahrung natürlich interessant zu sehen was er so bevorzugt. Das Plugin <a href="http://wordpress.org/extend/plugins/gurken-subscribe-to-comments/">Gurken Subscribe to Comments</a> hab ich mir zum Beispiel schon mal installiert, danke! Deshalb zieh ich hier auch mal blank und schreib euch mal meine Liste der 10+1 Must Have WordPress-Plugins nieder. Das Ganze in alphabetischer Reihenfolge, damit sich kein Plugin benachteiligt vorkommt und nachher Amok läuft ;-) (Das Redirection-Plugin hat das gestern übrigens getan und die Startseite beim Posten eines neuen Artikels immer auf diesen Artikel weitergeleitet. Nett, sowas kann bei Plugins auch passieren!) Auf die Liste los:</p>
<p><strong>1. <a href="http://www.introsites.co.uk/33~html-wordpress-permalink-on-pages-plugin.html">.html on PAGES</a></strong></p>
<p>Ich finde wichtig, das man alle Dateiendungen &#8211; sofern man welche nutzt &#8211; auf einer Webseite einheitlich hat. Da ich bei Posts die Endung .html bevorzuge, sollten auch die Seiten diese Endung haben dürfen. Man sagt es sei auch wichtig für Google.</p>
<p><strong>2. <a href="http://semperfiwebdesign.com/">All in One SEO Pack</a></strong></p>
<p>Das ultimative SEO-Plugin. Hier kann man eigentlich alles einstellen, was man an SEO benötigt. Es gibt sicher einige andere oder bessere, hab mich aber auf dieses eingeschossen.</p>
<p><strong>3. <a href="http://antispambee.de/">Antispam Bee</a></strong></p>
<p>Verhindert Spam in Kommentaren und Pings sehr zuverlässig. Ziehe ich Askimet unbedingt vor, da es dem deutsche Datenschutz gerecht wird (falls das möglich ist:) und man hier keinen API-Key benötigt und es genauso gut wenn nicht besser läuft als Askimett.</p>
<p><strong>4. <a href="http://blog.gohsy.com/topics/tag/delete-revision">Delete-Revision</a></strong></p>
<p>WordPress legt bei jedem Speichern eine Version das Posts an, d.h. pro Speichern ein Datensatz in der Datenbank. Das wird natürlich bei vielen Artikeln auch ohne akutem Zucken auf den Speichern-Button eine Menge an Daten, die später so nicht mehr benötigt werden. Das Löschen der nicht benötigten Versionen bzw. Revisionen erledigt dieses Müllschlucker-Plugin &#8220;Delete-Revision&#8221; zuverlässig. Yamyam!</p>
<p><strong>5. <a href="http://yoast.com/wordpress/permalink-redirect/">Permalink Redirect</a></strong></p>
<p>Noch ein SEO-Plugin. Entfernt alle unnötigen GET-Parameter bzw. Attribute und URL-Parts (the whole Crap!) von der URL und leitet auf die eigentliche URL weiter. Verhindert Duplicate Content. Wichtig für Google und SEO, also ein Muss.</p>
<p><strong>6. <a href="http://www.microkid.net/wordpress/permalinks-moved-permanently/">Permalinks Moved Permanently</a></strong></p>
<p>Ändert man mal den Permalink, also die URL eines Posts, muß die alte natürlich auf die neue weitergelietet werden. Das erledigt dieses nette Plugin.</p>
<p><strong>7. <a href="http://yoast.com/wordpress/robots-meta/">Robots Meta</a></strong></p>
<p>Ermöglicht pro Artikel oder Seite die Einstellung des Robots-Meta-Tag&#8217;s. Hiermit lässt sich bestimmen, welche Seiten oder Artikel im Google-Index indexiert werden sollen und wo Links verfolgt werden dürfen. Sehr nützlich für den SEO-Steuermann.</p>
<p><strong>8. <a href="http://www.prelovac.com/vladimir/wordpress-plugins/seo-friendly-images">SEO Friendly Images</a></strong></p>
<p>Fügt automatische Alt- und Title-Attribute zu Bildern hinzu. Genial, wenn man mit Bildern in Google gefunden werden will. Spart &#8216;ne Menge Arbeit.</p>
<p><strong>9. <a href="http://www.ilfilosofo.com/blog/wp-db-backup">WordPress Database Backup</a></strong></p>
<p>Hier kann man sich das Backup der WP-Datenbank in einem bestimmten Interval, beispielsweisse täglich, per Mail zusenden lassen, auf einem Rechner oder in einem Verzeichnis speichern lassen. Security first!</p>
<p><strong>10. <a href="http://ocaoimh.ie/wp-super-cache/">WP Super Cache</a></strong></p>
<p>Cached alle Inhalte als statische HTML-Seiten, was die Ladezeit um einiges veringert. Dauer und Regeln lassen sich beliebig anpassen.</p>
<p><strong>11. <a href="http://mitcho.com/code/yarpp/">Yet Another Related Posts Plugin</a></strong></p>
<p>Verlinkt passende Artikel untereinander. Klasse Plugin und Algorithmus! Bringt nicht nur dem benutzer viel Komfort, sondern auch Google und SEO.</p>
<p>Das ist sie also, meine Liste der Plugins die ich aktuell und aus den letzten 6 Jahren Erfahrung am wichtigsten erachte. </p>
<p>Nein, ein Plugin zur Integration von Twitter oder Facebook hab ich nicht, das hab ich bisher lieber selbst gemacht, da die meissten das Design zerschossen haben und das Fixing zu aufwendig gewesen wäre oder mir eben benötigte Features fehlten. Vielleicht findet sich aber noch ein brauchbares.</p>
<p>Wie sieht es bei euch aus, was habt Ihr unter der Haube? Oder haltet Ihr das ein oder andere Plugin für Käse? </p>
]]></content:encoded>
			<wfw:commentRss>http://stetix.de/wordpress-plugins-welche-sind-pflicht-und-must-have.html/feed</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Auf WordPress entwickeln oder lieber eigene Anwendungen z.B. in Ruby on Rails schreiben?</title>
		<link>http://stetix.de/auf-wordpress-entwickeln-oder-lieber-eigene-anwendungen-z-b-in-ruby-on-rails-schreiben.html</link>
		<comments>http://stetix.de/auf-wordpress-entwickeln-oder-lieber-eigene-anwendungen-z-b-in-ruby-on-rails-schreiben.html#comments</comments>
		<pubDate>Thu, 16 Dec 2010 15:48:13 +0000</pubDate>
		<dc:creator>Nico</dc:creator>
				<category><![CDATA[Webentwicklung]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[rails]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[Wordpress]]></category>

		<guid isPermaLink="false">http://stetix.de/?p=1613</guid>
		<description><![CDATA[Aktuell stelle ich mir oft die Frage, ob ich Software für WordPress entwickle oder eine eigene Anwendung in Ruby on Rails schreibe. Beides hat seine Vor- und Nachteile. Ich entwickle seit 10 Jahren Software in PHP, seit etwa 5 Jahren auch in Ruby on Rails, was ich aufgrund seiner vielen bekannten positiven Eigenschaften bei komplett [...]]]></description>
				<content:encoded><![CDATA[<p><img src="http://stetix.de/wp-content/uploads/2010/12/wordpress-oder-rails.jpg" alt="wordpress oder rails Auf Wordpress entwickeln oder lieber eigene Anwendungen z.B. in Ruby on Rails schreiben?" title="wordpress-oder-rails" width="351" height="186" class="alignright size-full wp-image-1622" />Aktuell stelle ich mir oft die Frage, ob ich Software für WordPress entwickle oder eine eigene Anwendung in Ruby on Rails schreibe. Beides hat seine Vor- und Nachteile. Ich entwickle seit 10 Jahren Software in PHP, seit etwa 5 Jahren auch in Ruby on Rails, was ich aufgrund seiner vielen bekannten positiven Eigenschaften bei komplett neuen Anwendungen auf jeden Fall vorziehen würde. Aus diesem Grund stellt sich mir diese Frage, obwohl Rails und WordPress auf den ersten Blick ja nicht unbedingt in der gleichen Kategorie von Tools anzusiedeln sind, auf den zweiten aber beides Frameworks mit ähnlichen Voraussetzungen sind.</p>
<p><a href="http://wordpress.org/">WordPress</a> hat eine riesige Community, viele Nutzer und einen hohen Bekanntheitsgrad. Wenn man beispielsweisse ein <a href="http://codex.wordpress.org/Plugins">WordPress-Plugin</a> schreiben möchte, kann man sich <a href="http://wordpress.org/extend/plugins/">durch schon vorhandene Plugins</a> wuseln und von bestehendem Code Anregungen holen und evtl. sogar Teile verwenden &#8211; natürlich nur unter Einhaltung des Copyrights. Möchte man dieses Plugin verkaufen, hat man mit WordPress eine sehr große und täglich wachsende Menge an potenziellen Kunden. Ein weiterer Vorteil ist die große Menge an Einsatzgebieten von WordPress. WordPress kann als Blog verwendet werden, als normale Webseite mit oder ohne CMS, als Forum, als Gallery, als Community und und und. Das meiste natürlich mit fertigen Plugins. Warum also etwas eigenes entwickeln, wenn es alles schon gibt? Zumal ja fast jede Webseite sowieso einen Blog und somit auch WordPress hat und benötigt. Die Nachteile bei WordPress liegen ganz klar bei der mangelnden Performance und &#8211; für mich persönlich &#8211; an der  etwas veralteten Scriptsprache <a href="http://de.php.net/">PHP</a>. Logisch kann man die Performance mit ein paar Tricks, passenden Plugins und besserer Server-Hardware tunen, dennoch ist WordPress den eigenen Lösungen in PHP oder Ruby On Rails klar unterlegen. Gerade wenn der Content in der Datenbank wächst &#8211; und ich meine hiermit eine Menge von 1000+ Artikeln &#8211; wird WordPress zur Slow-Motion-Bremse.</p>
<p><a href="http://rubyonrails.org/">Ruby on Rails</a> ist hingegen, wenn man es richtig anstellt, ein richtiger Turbo und Spaßfaktor. Das Coden in Ruby macht einfach einen Riesenspaß, was die Produktivität um einiges steigert. Das <a href="http://de.wikipedia.org/wiki/Don%E2%80%99t_repeat_yourself">DRY-Prinzip</a> richtig angewendet, muß hier bei gleicher Funktionalität auch weniger Code geschrieben werden. Man kann also sagen, das mit Rails einfacher in hoher Qualität Software entwickelt werden kann. Ebenso gibt es für fast alle Belange fertige Plugins und Librarys, die man beliebig erweitern und verwenden kann. Die Menge der Entwickler ist zwar hoch und wird immer höher, aber es gibt lange noch nicht so viele wie für WordPress. Ruby On Rails wird eher von Profis eingesetzt, Hobby-Entwickler hingegen greifen schnell zu PHP und WordPress. Desweiteren benötigt man für Rails immer eine gesonderte Server-Konfiguration, weshalb die meisten bekannten Webhoster hier ausscheiden. Noch ein negativer Punkt ist, das es für Rails keine gute Blog-Software gibt. Zwar sind <a href="https://github.com/fdv/typo/wiki/">einige</a> <a href="http://radiantcms.org/">wenige</a> <a href="https://github.com/halorgium/mephisto">Versuche</a> <a href="https://github.com/xaviershay/enki">vorhanden</a>, die an WordPress jedoch bei weitem nicht heranreichen. Schade eigentlich, eine gute Blog-Software in Ruby wär was feines und sicher ein schönes Projekt.</p>
<p>Also bleibt ganz klar eines zu sagen. Möchte man Software vielen Millionen Menschen verfügbar machen oder womöglich verkaufen, empfiehlt sich der Einsatz von WordPress. Legt man jedoch Wert auf Performance,  Spaß beim Coden und hat Profis zur Hand, ist Rails eine gute Wahl. Also ist meine erste Überlegung in der Richtung ab jetzt: &#8220;Möchte ich die Software nur für mich oder auserwählte Kunden nutzen oder an tausende Kunden verkaufen?&#8221;.</p>
<p><strong>Was meint Ihr dazu?</strong> Lieber WordPress oder Rails bzw. anderen Sprachen oder Frameworks? Freu mich über Kommentare!</p>
]]></content:encoded>
			<wfw:commentRss>http://stetix.de/auf-wordpress-entwickeln-oder-lieber-eigene-anwendungen-z-b-in-ruby-on-rails-schreiben.html/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Tequila suicide</title>
		<link>http://stetix.de/tequila-suicide.html</link>
		<comments>http://stetix.de/tequila-suicide.html#comments</comments>
		<pubDate>Thu, 23 Sep 2010 21:25:21 +0000</pubDate>
		<dc:creator>Nico</dc:creator>
				<category><![CDATA[Fun]]></category>
		<category><![CDATA[tequila]]></category>

		<guid isPermaLink="false">http://stetix.de/?p=1601</guid>
		<description><![CDATA[Weil ich&#8217;s so lustig finde hier auch noch mal im Blog. Der &#8220;Tequila suicide from Sweden&#8221;: Darauf schnell einen Tequila. Yihaa!]]></description>
				<content:encoded><![CDATA[<p>Weil ich&#8217;s so lustig finde hier auch noch mal im Blog. Der &#8220;Tequila suicide from Sweden&#8221;:</p>
<p><object width="480" height="385"><param name="movie" value="http://www.youtube.com/v/qq6iEKVLzWY?fs=1&amp;hl=de_DE"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/qq6iEKVLzWY?fs=1&amp;hl=de_DE" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="480" height="385"></embed></object></p>
<p>Darauf schnell einen Tequila. Yihaa!</p>
<p><img src="http://stetix.de/wp-content/uploads/2010/09/tequila_poster_01.jpg" alt="tequila poster 01 Tequila suicide" title="tequila_poster_01" width="354" height="450" class="alignnone size-full wp-image-1602" /></p>
]]></content:encoded>
			<wfw:commentRss>http://stetix.de/tequila-suicide.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Höhe von HTML-Elementen automatisch anpassen &#8211; mit jQuery und Javascript</title>
		<link>http://stetix.de/hoehe-von-html-elementen-automatisch-anpassen-jquery-und-javascript.html</link>
		<comments>http://stetix.de/hoehe-von-html-elementen-automatisch-anpassen-jquery-und-javascript.html#comments</comments>
		<pubDate>Wed, 22 Sep 2010 20:09:40 +0000</pubDate>
		<dc:creator>Nico</dc:creator>
				<category><![CDATA[Webdesign]]></category>
		<category><![CDATA[Webentwicklung]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[jquery]]></category>

		<guid isPermaLink="false">http://stetix.de/?p=1550</guid>
		<description><![CDATA[Oft kommt es vor, das man zwei oder mehr Elemente, sei es nun ein Layer, Bild oder was auch immer, mit gleicher Höhe darstellen will. Das stellt bei statischen Inhalten überhaupt kein Problem dar, gibt es doch die schöne CSS-Eigenschaft height. Was aber, wenn wir dynamische Inhalte darstellen wollen und gar nicht wissen wieviel Inhalt [...]]]></description>
				<content:encoded><![CDATA[<p><img src="http://stetix.de/wp-content/uploads/2010/09/boxes1.gif" alt="boxes1 Höhe von HTML Elementen automatisch anpassen   mit jQuery und Javascript" title="boxes" width="150" height="82" class="alignright size-full wp-image-1581" />Oft kommt es vor, das man zwei oder mehr Elemente, sei es nun ein Layer, Bild oder was auch immer, mit gleicher Höhe darstellen will. Das stellt bei statischen Inhalten überhaupt kein Problem dar, gibt es doch die schöne <a href="http://de.wikipedia.org/wiki/Cascading_Style_Sheets">CSS</a>-Eigenschaft <a href="http://www.css4you.de/height.html">height</a>. </p>
<p>Was aber, wenn wir dynamische Inhalte darstellen wollen und gar nicht wissen wieviel Inhalt wir pro Element bekommen. Bei Texten, längeren Namen or whatever aus einer Datenbank ist dies oft der Fall. Durch den unterschiedlich langen Inhalt werden die Elemente nun dementsprechend anders hoch dargestellt. Das sieht bei Elementen die wir nebeneinander zeigen möchten meistens ziemlich doof aus.  </p>
<p>Hier kann das <a href="http://de.wikipedia.org/wiki/JavaScript">Javascript</a>-Framework <a href="http://jquery.com/">jQuery</a> helfen. jQuery bietet eine Funktion mit dem Namen <a href="http://api.jquery.com/height/">.height()</a>, die uns die Höhe eines Elements setzen oder auslesen kann. Hier wird nicht einfach die CSS-Eigenschaft height ausgelesen, sondern die fertig gerenderte Höhe des Elements. So braucht man mit jQuery nicht viel Mühe, um alle gewünschten Elemente zu durchlaufen, das höchste zu bestimmen und alle Elemente auf eben diese Höhe anzupassen.</p>
<p><span id="more-1550"></span></p>
<h3>Der HTML-Code</h3>
<p>Gehen wir von folgendem HTML-Code aus. CSS habe ich zu besseren Ansicht inline definiert:</p>
<pre name="code" class="html">&lt;div class="autoheight" style="float: left; width: 200px; background-color: lightgreen;"&gt;
Hier steht Inhalt, der in der Länge bzw. Höhe variabel sein kann. Zum testen schreib ich hier irgendwas rein.
&lt;/div&gt;
&lt;div class="autoheight" style="float: left; width: 200px; background-color: orange;"&gt;
Hier steht Inhalt, der in der Länge bzw. Höhe variabel sein kann. Zum testen schreib ich hier irgendwas rein.
Hier steht Inhalt, der in der Länge bzw. Höhe variabel sein kann. Zum testen schreib ich hier irgendwas rein.
Hier steht Inhalt, der in der Länge bzw. Höhe variabel sein kann. Zum testen schreib ich hier irgendwas rein.
&lt;/div&gt;
&lt;div class="autoheight" style="float: left; width: 200px; background-color: mediumblue;"&gt;
Hier steht Inhalt, der in der Länge bzw. Höhe variabel sein kann. Zum testen schreib ich hier irgendwas rein.
Hier steht Inhalt, der in der Länge bzw. Höhe variabel sein kann. Zum testen schreib ich hier irgendwas rein.
&lt;/div&gt;
</pre>
<h3>Das Javascript mit jQuery</h3>
<p>Zuerst müssen wir die Höhe des höchsten Div&#8217;s ausfindig machen. Wir gehen am besten alle Elemente durch und bestimmen so das höchste von allen. Dazu müssen wir uns den höchsten Wert einfach nur merken und immer vergleichen:</p>
<pre name="code" class="javascript">
/* Variable zum Merken der maximalen Höhe */
var max_height = 0;

/* alle Elemente mit der CSS-Klasse "autoheight" durchlaufen */
$('.autoheight').each(function(e) {

  /* Höhe des aktuellen Elements */
  h = $(this).height();

  /* Wenn Höhe erfolgreich bestimmt werden konnte */
  if(typeof(h) != "undefined") {

        /* Wenn aktuelle Höhe gösser unserer maximalen, Höhe merken */
        if(h > max_height) {
                max_height = h;
        }
  }
});
</pre>
<p>Nun müssen wir alle anderen Elemente höher bekommen. Wenn wir die maximale Höhe bestimmen konnten, wenden wir diese jetzt einfach auf alle Elemente an:</p>
<pre name="code" class="javascript">
if(max_height > 0) {
 $('.autoheight').height(max_height);
}
</pre>
<p>Das ganze Javascript sieht dann so aus:</p>
<pre name="code" class="javascript">
var max_height = 0;
$('.autoheight').each(function(e) {
  h = $(this).height();
  if(typeof(h) != "undefined") {
        if(h > max_height) {
                max_height = h;
        }
  }
});
if(max_height > 0) {
 $('.autoheight').height(max_height);
}
</pre>
<h3>Das fertige Ergebnis als Beispiel</h3>
<p>Das oben beschriebene Beispiel sollte dann in etwa so aussehen:</p>
<p><strong>Boxen original</strong></p>
<div style="float: left; width: 200px; background-color: lightgreen;">
Hier steht Inhalt, der in der Länge bzw. Höhe variabel sein kann. Zum testen schreib ich hier irgendwas rein.
</div>
<div style="float: left; width: 200px; background-color: orange;">
Hier steht Inhalt, der in der Länge bzw. Höhe variabel sein kann. Zum testen schreib ich hier irgendwas rein.<br />
Hier steht Inhalt, der in der Länge bzw. Höhe variabel sein kann. Zum testen schreib ich hier irgendwas rein.<br />
Hier steht Inhalt, der in der Länge bzw. Höhe variabel sein kann. Zum testen schreib ich hier irgendwas rein.
</div>
<div style="float: left; width: 200px; background-color: mediumblue;">
Hier steht Inhalt, der in der Länge bzw. Höhe variabel sein kann. Zum testen schreib ich hier irgendwas rein.<br />
Hier steht Inhalt, der in der Länge bzw. Höhe variabel sein kann. Zum testen schreib ich hier irgendwas rein.
</div>
<div style="clear: left; padding: 20px 0 10px 0;">
<p><strong>Boxen mit jQuery angepasst</strong>
</div>
<div class="autoheight" style="float: left; width: 200px; background-color: lightgreen;">
Hier steht Inhalt, der in der Länge bzw. Höhe variabel sein kann. Zum testen schreib ich hier irgendwas rein.
</div>
<div class="autoheight" style="float: left; width: 200px; background-color: orange;">
Hier steht Inhalt, der in der Länge bzw. Höhe variabel sein kann. Zum testen schreib ich hier irgendwas rein.<br />
Hier steht Inhalt, der in der Länge bzw. Höhe variabel sein kann. Zum testen schreib ich hier irgendwas rein.<br />
Hier steht Inhalt, der in der Länge bzw. Höhe variabel sein kann. Zum testen schreib ich hier irgendwas rein.
</div>
<div class="autoheight" style="float: left; width: 200px; background-color: mediumblue;">
Hier steht Inhalt, der in der Länge bzw. Höhe variabel sein kann. Zum testen schreib ich hier irgendwas rein.<br />
Hier steht Inhalt, der in der Länge bzw. Höhe variabel sein kann. Zum testen schreib ich hier irgendwas rein.
</div>
<p><script type="text/javascript" src="/jquery.autoheight.js"></script></p>
<div style="clear: both; padding: 40px 0 30px 0;">
Sieht doch gleich viel besser aus. Jetzt können wir das natürlich auf alle gewünschten Elemente anwenden. Optimal für tabellarische Darstellung mit Layern.
</div>
]]></content:encoded>
			<wfw:commentRss>http://stetix.de/hoehe-von-html-elementen-automatisch-anpassen-jquery-und-javascript.html/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
	</channel>
</rss>

<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Page Caching using apc
Database Caching using apc
Object Caching 1444/1456 objects using apc

 Served from: stetix.de @ 2013-05-24 03:18:33 by W3 Total Cache -->