<?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>blog.matthias-balke.de &#187; apache2</title>
	<atom:link href="http://blog.matthias-balke.de/tag/apache2/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.matthias-balke.de</link>
	<description>infos von und rund um matthias-balke.de</description>
	<lastBuildDate>Fri, 02 Jul 2010 08:21:16 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Apache2 + PHP + MySQL + memcached unter Mac OS 10.5</title>
		<link>http://blog.matthias-balke.de/2009/02/07/apache2-php-mysql-memcached-unter-mac-os-105/</link>
		<comments>http://blog.matthias-balke.de/2009/02/07/apache2-php-mysql-memcached-unter-mac-os-105/#comments</comments>
		<pubDate>Sat, 07 Feb 2009 16:15:03 +0000</pubDate>
		<dc:creator>matthias</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[Mac]]></category>
		<category><![CDATA[OpenSource]]></category>
		<category><![CDATA[Server]]></category>
		<category><![CDATA[apache2]]></category>
		<category><![CDATA[memcached]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://blog.matthias-balke.de/?p=194</guid>
		<description><![CDATA[Nachdem ich lange Zeit zum Entwickeln von PHP Anwendungen MAMP benutzt habe, gefiel mir doch irgendwan das ganze nicht mehr! Warum sollte ich denn MAMP installieren, wenn doch das meiste schon mit Mac OS 10.5 (Leopard) installiert wird? Was nicht jeder weiß: Bei Mac OS 10.5 ist standardmäßig schon Apache2 und PHP5 installiert. Manchem mag [...]]]></description>
			<content:encoded><![CDATA[<p>Nachdem ich lange Zeit zum Entwickeln von PHP Anwendungen MAMP benutzt habe, gefiel mir doch irgendwan das ganze nicht mehr! Warum sollte ich denn MAMP installieren, wenn doch das meiste schon mit Mac OS 10.5 (Leopard) installiert wird?</p>
<p>Was nicht jeder weiß: Bei Mac OS 10.5 ist <span style="text-decoration: underline;">standardmäßig</span> schon Apache2 und PHP5 installiert. Manchem mag das schon reichen, aber früher oder später braucht man doch meist eine Datenbank. Häufig kommt MySQL zum einsatz, die es auch als fertiges Build für Mac OS gibt.</p>
<p>Mir fehlte nun noch memcached und die passende PHP Erweiterung memcache, welche sich aber auch beide leicht einrichten lassen, wenn man über mache Stolpersteine bescheid weiß!<span id="more-194"></span></p>
<p>Ich werde in meinen Beispielen immer den Editor vim benutzen. Natürlich kann man genau so gut jeden anderen Editor benutzen!</p>
<h3><span style="text-decoration: underline;">Apache2</span></h3>
<p>Der Apache2 Webserver muss nicht weiter konfiguriert werden, die Websites liegen standardmäßig unter:</p>
<blockquote><p><strong>/Library/WebServer/Documents</strong> bzw. <strong>/Users/&lt;username&gt;/Sites</strong></p></blockquote>
<p>zugreifen kann man dann über:</p>
<blockquote><p><strong>http://localhost/</strong> bzw. <strong>http://localhost/~&lt;username&gt;/</strong></p></blockquote>
<h3><span style="text-decoration: underline;">PHP5</span></h3>
<p>Als erstes aktiviert man nun PHP5 in der Apache2 Konfiguration:</p>
<blockquote><p>$ sudo vim /etc/apache2/httpd.conf</p></blockquote>
<p>Nun sucht man nach dieser Zeile</p>
<blockquote><p><span style="color: #ff0000;">#LoadModule php5_module        libexec/apache2/libphp5.so</span></p></blockquote>
<p>und entfernt das Kommentarzeichen am Anfang</p>
<blockquote><p><span style="color: #008000;">LoadModule php5_module        libexec/apache2/libphp5.so</span></p></blockquote>
<p>speichert die Datei wieder ab und beendet den Edtitor (unter vim :wq).<br />
Nun starten wir den Apache2 neu, damit PHP5 geladen wird. Neustarten kann man den Server mit dem Befehl:</p>
<blockquote><p>$ sudo apachectl restart</p></blockquote>
<p>Um zu testen ob PHP wie gewünscht arbeitet, legt man eine Datei in seinem Webverzeichnis mit folgendem Inhalt an:</p>
<blockquote><p>&lt;?php phpinfo(); ?&gt;</p></blockquote>
<p>Diese speichert man z.B. als info.php. Ruft man diese nun über den Webserver auf (z.B. http://localhost/info.php) sollten Informationen über die PHP Installation angezeigt werden.</p>
<h3><span style="text-decoration: underline;">MySQL</span></h3>
<p>Die Installation von MySQL verläuft sehr reibungslos. Dafür läd man einfach das passende Disc Image (dmg) runter <a title="MySQL Download" href="http://dev.mysql.com/downloads/mysql/5.1.html#macosx-dmg" target="_blank">http://dev.mysql.com/downloads/mysql/5.1.html#macosx-dmg<br />
</a>Danach muss ma nur noch den Installer durchlaufen lassen.</p>
<p>Da die Pfade für mysqld unter Mac etwas anders sind als üblich sollte man noch einen Symlink einrichten, damit Anwendungen wie phpMyAdmin usw. auch auf MySQL zugreifen können:</p>
<blockquote><p>$ sudo mkdir /var/mysql/<br />
$ sudo chown _mysql /var/mysql<br />
$ sudo ln -s /tmp/mysql.sock /var/mysql/mysql.sock</p></blockquote>
<p>Um den MySQL Server zu starten, kann man einfach in die Systemsteuerung gehen und unter MySQL den Server starten. Alternativ kann man den Server auch aus dem Terminal mit dem folgenden Befehl steuern (wobei start <strong>oder</strong> stop zu wählen ist):</p>
<blockquote><p>$ sudo /Library/StartupItems/MySQLCOM/MySQLCOM start|stop</p></blockquote>
<h3><span style="text-decoration: underline;">phpMyAdmin</span></h3>
<p>Wer gerne phpMyAdmin nutzen möchte läd dies einfach von der Autorenseite nach: <a title="phpMyAdmin Download" href="http://www.phpmyadmin.net/home_page/downloads.php" target="_blank">http://www.phpmyadmin.net/home_page/downloads.php</a> und entpackt es ins Webverzeichnis.</p>
<p><span style="text-decoration: underline;"><span style="color: #ff0000;">Man sollte nun nur noch das root Passwort ändern, da dieses standardmäßig nicht gesetzt ist!</span></span></p>
<h3><span style="text-decoration: underline;">memcached</span></h3>
<p>Auch wenn man nach einigem Suchen ein Installationsscript findet, was verspricht alles notwendige runterzuladen und zu installieren, sollte man von diesem Abstand nehmen. Das hört sich zwar sehr gut an, doch werden <span style="text-decoration: underline;"><em>meist veraltete</em></span> Versionen der Programme installiert.</p>
<p>Die aktuellen Sourcen von <a title="memcached" href="http://www.danga.com/memcached" target="_blank">memcached</a> und <a title="libevent" href="http://www.monkey.org/~provos/libevent/" target="_blank">libevent</a> (welches von memcached benötigt wird) lassen sich einwandfrei unter Mac OS X kompilieren und installieren!</p>
<p>In meinem Beispiel verwende ich die zur Zeit aktuellen Sourcen. Man sollte aber <strong><span style="text-decoration: underline;">immer die aktuellste stable build</span></strong> benutzen!</p>
<p>Die aktuellen Sourcen von libevent ( <a title="libevent" href="http://www.monkey.org/~provos/libevent/" target="_blank">http://www.monkey.org/~provos/libevent/</a> ) runterladen<a title="libevent" href="http://www.monkey.org/~provos/libevent/" target="_blank"><br />
</a></p>
<p>Danach müssen die Sourcen noch wie folgt entpackt und compiliert werden:</p>
<blockquote><p>$ tar xzf libevent-1.4.9-stable.tar.gz<br />
$ cd libevent-1.4.9-stable<br />
$ ./configure<br />
$ make<br />
$ sudo make install</p></blockquote>
<p>Für memcached die Sourcen hier ( <a title="memcached" href="http://www.danga.com/memcached/download.bml" target="_blank">http://www.danga.com/memcached/download.bml </a>) runterladen</p>
<p>Wieder entpacken und compilieren</p>
<blockquote><p>$ tar xzf memcached-1.2.6.tar.gz<br />
$ cd memcached-1.2.6<br />
$ ./configure<br />
$  make<br />
$ sudo make install</p></blockquote>
<p>Danach ist memcached einsatzbereit!<br />
Starten kann man den Dienst z.B. mit:</p>
<blockquote><p>$ sudo /usr/local/bin/memcached -d -l 127.0.0.1 -m 32 -p 11211 -u nobody</p></blockquote>
<h3><span style="text-decoration: underline;">PHP Extension memcache</span></h3>
<p>Um memcached auch in PHP nutzen zu können braucht man die PHP Extension <a title="PHP Extension memcache" href="http://de.php.net/memcache" target="_blank">memache</a>. Diese kann man ganz einfach kompilieren, wenn man weiß, dass der Apache2 und PHP5 unter Mac OS 10.5 standardmäßig als 64bit binaries kompiliert wurden. Denn dementsprechend muss man auch 64bit extensions kompilieren.</p>
<p>Hierfür läd man sich als erstes die Sourcen von memcache ( <a title="PHP Extension memcache download" href="http://pecl.php.net/package/memcache" target="_blank">http://pecl.php.net/package/memcache</a> ) herrunter.<br />
Danach werden die Sourcen wie folgt entpackt und kompiliert:</p>
<blockquote><p>$ gunzip -c memcache-2.2.4.tgz | tar -xvf -<br />
$ cd memcache-2.2.4</p></blockquote>
<p>Nun erstellt muss man dem Compiler sagen, dass man eine 64bit Version benötigt:</p>
<blockquote><p>$ export CCFLAGS=&#8221;-arch x86_64&#8243;</p></blockquote>
<p>Nun wie üblich kompilieren:</p>
<blockquote><p>$ ./configure<br />
$  make<br />
$ sudo make install</p></blockquote>
<p>Zur Sicherheit kann man noch testen, ob das erstellen der 64bit Version erfolgreich war, indem man folgenden Befehl ausführt:</p>
<blockquote><p>$ file modules/memcache.so</p></blockquote>
<p>Dabei sollte eine Ausgabe wie diese erscheinen (wichtig ist das 64bit!):</p>
<blockquote><p><span style="color: #008000;">modules/memcache.so: Mach-O 64-bit bundle x86_64</span></p></blockquote>
<p><span style="color: #000000;">Nun muss der Apache noch einmal neugestartet werden, damit das Modul geladen wird. Ob das ganze geklappt hat kann man nun sehen, indem man wieder die info.php vom Anfang aufruft und auf der Seite nach &#8220;memcache&#8221; sucht. Es sollte nun eine eigene Sekti</span>on geben, die über die Einstellungen für memcache informiert.<span style="color: #ff0000;"><em> Falls diese Sektion nicht vorhanden ist bitte unten bei den Tipps zum Fehler beheben schauen!</em></span></p>
<p>Nun sollte die PHP Erweiterung memcache verfügbar sein. Man kann nun eine php Testdatei mit folgendem Inhalt erzeugen:</p>
<blockquote><p>&lt;?php<br />
$memcache = new Memcache;<br />
$memcache-&gt;connect(&#8216;localhost&#8217;, 11211) or die (&#8220;Could not connect&#8221;);</p>
<p>$version = $memcache-&gt;getVersion();<br />
echo &#8220;Server&#8217;s version: &#8220;.$version.&#8221;&lt;br/&gt;\n&#8221;;</p>
<p>$tmp_object = new stdClass;<br />
$tmp_object-&gt;str_attr = &#8216;test&#8217;;<br />
$tmp_object-&gt;int_attr = 123;</p>
<p>$memcache-&gt;set(&#8216;key&#8217;, $tmp_object, false, 10) or die (&#8220;Failed to save data at the server&#8221;);<br />
echo &#8220;Store data in the cache (data will expire in 10 seconds)&lt;br/&gt;\n&#8221;;</p>
<p>$get_result = $memcache-&gt;get(&#8216;key&#8217;);<br />
echo &#8220;Data from the cache:&lt;br/&gt;\n&#8221;;</p>
<p>var_dump($get_result);<br />
?&gt;</p></blockquote>
<p><strong>Herzlichen Glückwunsch alles ist fertig eingerichtet!</strong></p>
<p><strong><br />
</strong></p>
<h3><span style="text-decoration: underline;">Fehlerbehebung</span></h3>
<p>Falls die memcache Sektion in der info.php nicht vorhanden ist kann es sein, dass das PHP Modul nicht richtig geladen werden konnte. Um dies genauer zu untersuchen hilft ein Blick in das Apache log:</p>
<blockquote><p>$ tail -f /var/log/apache2/error_log</p></blockquote>
<p>Mit diesem Befehl wird die Logdatei kontinuierlich angezeigt. Man kann also beobachten welche Einträge wärend des Startens des Apache erzeugt werden!</p>
<p><strong>Typische Fehlermeldung:<br />
</strong><em>PHP Warning:  PHP Startup: Unable to load dynamic library &#8216;/usr/lib/php/extensions/no-debug-non-zts-20060613/memcache.so&#8217; &#8211; (null) in Unknown on line 0</em></p>
<p><strong>Lösungsansätze:</strong></p>
<ul>
<li> Das Modul ist nicht passend für den Apache Server (evtl. keine 64bit Version kompiliert?).</li>
<li>Die Datei existiert nicht / ist nicht lesbar?</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.matthias-balke.de/2009/02/07/apache2-php-mysql-memcached-unter-mac-os-105/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
