<?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>Lazy webdeveloper &#38; admin &#187; Apache</title>
	<atom:link href="http://www.chyl.org/category/linux/apache/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.chyl.org</link>
	<description></description>
	<lastBuildDate>Tue, 30 Aug 2011 08:52:05 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Moduł dla apache2 mod_pagespeed od Google</title>
		<link>http://www.chyl.org/2010/11/modul-dla-apache2-mod_pagespeed-od-google/</link>
		<comments>http://www.chyl.org/2010/11/modul-dla-apache2-mod_pagespeed-od-google/#comments</comments>
		<pubDate>Thu, 11 Nov 2010 19:21:10 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Apache]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[apache2]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[mod_pagespeed]]></category>
		<category><![CDATA[optymalizacja]]></category>

		<guid isPermaLink="false">http://www.chyl.org/?p=2388</guid>
		<description><![CDATA[Page Speed to zestaw narzędzi OpenSource od Google, które mają pomóc webmasterom w optymalizacji ich witryn. Ostatnio upubliczniony został moduł dla Apache2 o nazwie mod_pagespeed, który za pomocą szeregu filtrów modyfikuje odpowiedź mającą trafić do klienta. 1. Instalacja Na maszynie z już zainstalowanym apache2 instalacja mod_pagespeed z paczek d﻿ostępnych na stronie projektu jest banalnie prosta. [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://goo.gl/kln47">Page Speed</a> to zestaw narzędzi OpenSource od Google, które mają pomóc webmasterom w optymalizacji ich witryn. Ostatnio upubliczniony został moduł dla Apache2 o nazwie mod_pagespeed, który za pomocą szeregu filtrów modyfikuje odpowiedź mającą trafić do klienta.</p>
<h2>1. Instalacja</h2>
<p>Na maszynie z już zainstalowanym apache2 instalacja mod_pagespeed z paczek <a href="http://goo.gl/KXSlE">d﻿ostępnych na stronie projektu</a> jest banalnie prosta. W sekcji mod_pagespeed odnajdujemy naszą platformę, w moim przypadku jest to Debian 64-bit, <a href="http://goo.gl/ZWkcU">pobieramy paczkę z modułem</a>, następnie otwieramy konsolę i z poziomu super-użytkownika przechodzimy do lokalizacji, gdzie zapisaliśmy pakiet. Instalujemy paczkę:</p>
<pre>socjopata# dpkg -i mod-pagespeed-beta_current_amd64.deb
Zaznaczenie poprzednio niezaznaczonego pakietu mod-pagespeed-beta.
(Odczytywanie bazy danych ... 212669 files and directories currently installed.)
Rozpakowanie mod-pagespeed-beta (z mod-pagespeed-beta_current_amd64.deb) ...
Konfigurowanie mod-pagespeed-beta (0.9.1.1-r171) ...
Enabling module pagespeed.
Run '/etc/init.d/apache2 restart' to activate new configuration!</pre>
<p>Jak widać w powyższym raporcie moduł został poprawnie zainstalowany i można go aktywować przez ponowne uruchomienie serwera apache. Można tego dokonać również przez jego przeładowanie:</p>
<pre>/etc/init.d/apache2 reload</pre>
<p>Gdyby wystąpiły problemy z niespełnionymi zależnościami dla modułu należy je uzupełnić:</p>
<pre>apt-get -f install</pre>
<h2>2. Konfiguracja</h2>
<p>Jednak przed przeładowaniem serwera zerknijmy do konfiguracji modułu, znajduje się ona w pliku ﻿<strong>/etc/apache2/mods-available/pagespeed.conf</strong>. Każda dyrektywa konfiguracyjna jest szczegółowo opisana w pliku konfiguracyjnym, więc nie ma sensu rozwodzić się nad nimi, aczkolwiek kilka z nich jest bardzo istotnych i należy im się przyjrzeć. Pierwszą jest</p>
<pre>ModPagespeedDisableFilters</pre>
<p>Ta dyrektywa globalnie wyłącza pewne filtry. Zdarzyć się może sytuacja, gdzie pewien filtr jest filtrem wysokiego ryzyka i psuje odpowiedź wysyłaną do klienta w takim stopniu, że nie jest możliwe poprawne wyświetlenie zawartości strony przez przeglądarkę, w takim wypadku należy globalnie wyłączyć filtr i spokojnie czekać na poprawki do niego.</p>
<p>Drugą z bardzo istotnych instrukcji konfiguracyjnych jest:</p>
<pre>ModPagespeedEnableFilters</pre>
<p>Jak w przypadku wyżej po dyrektywie podajemy po przecinkach filtry, które w tym wypadku mają zostać włączone. Dla przykładu, aktywacja filtra collapse_whitespace będzie wyglądała następująco:</p>
<pre>ModPagespeedEnableFilters collapse_whitespace</pre>
<p>Aktywacja kilku filtrów wygląda następująco:</p>
<pre>ModPagespeedEnableFilters collapse_whitespace,elide_attributes</pre>
<p>Resztę ustawień spokojnie można pozostawić w domyślnej formie.</p>
<h2>3. Wnioski</h2>
<p>Przy włączonych filtrach collapse_whitespace, elide_attributes, remove_comments, combine_css, rewrite_javascript, move_css_to_head, remove_quotes znacząco spada ilość danych transferowanych z serwera do przeglądarki co na przykładzie kilku wywołań prezentuje tabela:</p>
<table cellspacing="0" cellpadding="4" width="100%">
<colgroup>
<col width="128*"></col>
<col width="128*"></col>
</colgroup>
<tbody>
<tr valign="TOP">
<td width="50%">Bez mod_pagespeed</td>
<td width="50%">Włączony mod_pagespeed</td>
</tr>
<tr valign="TOP">
<td width="50%">15,73</td>
<td width="50%">12,06</td>
</tr>
<tr valign="TOP">
<td width="50%">14,52</td>
<td width="50%">12,05</td>
</tr>
<tr valign="TOP">
<td width="50%">14,35</td>
<td width="50%">11,56</td>
</tr>
<tr valign="TOP">
<td width="50%">14,36</td>
<td width="50%">11,72</td>
</tr>
<tr valign="TOP">
<td width="50%">22,83</td>
<td width="50%">17,21</td>
</tr>
<tr valign="TOP">
<td width="50%">23,00</td>
<td width="50%">17,03</td>
</tr>
</tbody>
</table>
<p>Oczywiście wszystko zależy od tego w jaki sposób jest generowany HTML przez aplikację. W moim przypadku jest to ładnie sformatowany kod, także zysk na ilości danych jest spory.</p>
<p>Mod_pagespeed posiada również kilka filtrów do zmniejszenia zapytań o pliki css, js i grafiki. Są nimi odpowiednio <a href="http://goo.gl/99JZG">Combine CSS</a>, <a href="http://goo.gl/yD4Ep">Inline JavaScript</a> i <a href="http://goo.gl/i5U4y">Optimize Images</a>. Na końcu każdej podstrony dokumentacji filtra znajduje się informacja o ryzyku stosowania, przy czym większość filtrów wykazuje małe ryzyko.</p>
<p>Na końcu pliku konfiguracyjnego znajduje się sekcja Location /mod_pagespeed_statistics, gdzie znajdują się statystyki modułu. W tym miejscu możemy podejrzeć statystyki skuteczności modułu w naszym przypadku.</p>
<p>Na zakończenie kilka słów o tym jak bardzo moduł spowalnia obsługę żądań. Kilka poglądowych wyników bez włączonego modułu:</p>
<pre>127.0.0.1 [11/Nov/2010:19:54:44 +0100] 119305 GET / HTTP/1.1 4076
127.0.0.1 [11/Nov/2010:19:54:48 +0100] 92647 GET /oferta-uslugowa/obsluga-techniczna-konferencji HTTP/1.1 4441
127.0.0.1 [11/Nov/2010:19:54:49 +0100] 77898 GET /oferta-uslugowa/obsluga-techniczna-eventow HTTP/1.1 4286
127.0.0.1 [11/Nov/2010:19:54:51 +0100] 93597 GET /oferta-uslugowa/wypozyczenia-sprzetu-multimedialnego HTTP/1.1 4237
127.0.0.1 [11/Nov/2010:19:54:53 +0100] 73639 GET /oferta-uslugowa/projektowanie-sal HTTP/1.1 3631
127.0.0.1 [11/Nov/2010:19:54:57 +0100] 101097 GET /oferta-handlowa/samsung HTTP/1.1 4560
127.0.0.1 [11/Nov/2010:19:54:59 +0100] 78023 GET /produkt/monitor-p42h-2 HTTP/1.1 4411
127.0.0.1 [11/Nov/2010:19:55:03 +0100] 381492 GET /firma/kontakt HTTP/1.1 4469</pre>
<div>i dla włączonego modułu pagespeed:</div>
<div>
<pre>127.0.0.1 [11/Nov/2010:19:57:10 +0100] 100126 GET / HTTP/1.1 3526
127.0.0.1 [11/Nov/2010:19:57:15 +0100] 87732 GET /oferta-uslugowa/obsluga-techniczna-konferencji HTTP/1.1 4192
127.0.0.1 [11/Nov/2010:19:57:18 +0100] 82464 GET /oferta-uslugowa/obsluga-techniczna-eventow HTTP/1.1 3996
127.0.0.1 [11/Nov/2010:19:57:19 +0100] 80766 GET /oferta-uslugowa/wypozyczenia-sprzetu-multimedialnego HTTP/1.1 4038
127.0.0.1 [11/Nov/2010:19:57:21 +0100] 87320 GET /oferta-uslugowa/projektowanie-sal HTTP/1.1 3515
127.0.0.1 [11/Nov/2010:19:57:26 +0100] 97538 GET /oferta-handlowa/samsung HTTP/1.1 4351
127.0.0.1 [11/Nov/2010:19:57:29 +0100] 83227 GET /produkt/monitor-p42h-2 HTTP/1.1 4278
127.0.0.1 [11/Nov/2010:19:57:34 +0100] 112691 GET /firma/kontakt HTTP/1.1 4277</pre>
</div>
<p>Istotna jest kolumna przed metodą wywołania(GET). Podane czasy są w milisekundach. Testy nie były prowadzone na maszynie produkcyjnej.</p>
<div>
<p>Wniosek z moich pomiarów, powyżej tylko część wyników, jest taki, że moduł nie wpływa w znaczący sposób na czas generowania odpowiedzi na żądanie. Mogę pokusić się nawet o stwierdzenie, że nie ma żadnego wpływu, przy znaczącej redukcji ilości danych, które są wysyłane z serwera.</p>
<p>Przy optymalizacji witryny jeśli weźmiemy wiele drobnych szczegółów i zyskując na każdym kilka kilobajtów lub milisekund szybko będziemy mogli się przekonać, że prostymi krokami zredukowaliśmy ruch oraz zmniejszyliśmy zauważalne opóźnienie przy wczytywaniu się stron w naszej aplikacji. 100 ms jest zauważalnym dla człowieka opóźnieniem, każde kolejne milisekundy coraz bardziej irytują, moim zdaniem trzeba dążyć do tego, aby mieć jak najmniej wzburzonych użytkowników <img src='http://www.chyl.org/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
</div>
Number of Views :1936]]></content:encoded>
			<wfw:commentRss>http://www.chyl.org/2010/11/modul-dla-apache2-mod_pagespeed-od-google/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>IMagick &#8211; ImageMagick API for PHP</title>
		<link>http://www.chyl.org/2008/10/imagick-imagemagick-api-for-php/</link>
		<comments>http://www.chyl.org/2008/10/imagick-imagemagick-api-for-php/#comments</comments>
		<pubDate>Sat, 11 Oct 2008 17:37:29 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Apache]]></category>
		<category><![CDATA[apache2]]></category>
		<category><![CDATA[imagemagick]]></category>
		<category><![CDATA[imagick]]></category>
		<category><![CDATA[laska]]></category>
		<category><![CDATA[php5]]></category>

		<guid isPermaLink="false">http://www.chyl.org/?p=15</guid>
		<description><![CDATA[Tak się złożyło, że dzisiaj potrzebny był mi ten moduł. Niewiele się zastanawiając wstukałem pecl -v install imagick Oczywiście coś jest nie tak. Przemiły komunikat poinformował mnie o braku nagłówków checking for magick-wand.h header file &#8230;&#8230; not found Opisuję tutaj rozwiązanie dla Debiana etch 4.0 (prawdopodobnie na innych systemach pewnie też zadziała), aby wszyscy leniwi [...]]]></description>
			<content:encoded><![CDATA[<p>Tak się złożyło, że dzisiaj potrzebny był mi ten moduł. Niewiele się zastanawiając wstukałem</p>
<blockquote><p>pecl -v install imagick</p></blockquote>
<p>Oczywiście coś jest nie tak. Przemiły komunikat poinformował mnie o braku nagłówków</p>
<blockquote><p>checking for magick-wand.h header file &#8230;&#8230; not found</p></blockquote>
<p>Opisuję tutaj rozwiązanie dla Debiana etch 4.0 (prawdopodobnie na innych systemach pewnie też zadziała), aby wszyscy leniwi ludzie mogli bez problemu pójść na kawę zamiast siedzieć i myśleć dlaczego to nie działa a powinno.</p>
<p>Rozwiązaniem okazało się doinstalowanie oczywistego pakietu libimagick9-dev</p>
<blockquote><p>aptitude install libimagick9-dev</p></blockquote>
<p>Następnie normalna procedura instalacji IMagick:</p>
<blockquote><p>pecl -v install imagick</p></blockquote>
<p>i niby wszystko gra. Dopisanie jeszcze extension=imagick.so do mojego php.ini, reload apacha i niby wszystko gra. Ostatni test to stworzenie prostego skryptu php do testów:<br />
[sourcecode language='php']<br />
<?<br />
header('Content-type: image/jpeg');<br />
$image = new Imagick('jakis_obrazek.png');<br />
$image->thumbnailImage(88, 0);<br />
echo $image;<br />
?><br />
[/sourcecode]</p>
<p>Po wpisaniu w przeglądarce odpowiedniego adresu moim oczom ukazała się piękna miniaturka mojego obrazka, więc wszystko wskazuje na to że IMagick znalazł się u mnie na serwerze i nawet został ciepło przyjęty przez resztę załogi <img src='http://www.chyl.org/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
Number of Views :458]]></content:encoded>
			<wfw:commentRss>http://www.chyl.org/2008/10/imagick-imagemagick-api-for-php/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>auth_mysql i Apache2.2</title>
		<link>http://www.chyl.org/2008/09/auth_mysql-i-apache22/</link>
		<comments>http://www.chyl.org/2008/09/auth_mysql-i-apache22/#comments</comments>
		<pubDate>Sat, 20 Sep 2008 23:38:39 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Apache]]></category>
		<category><![CDATA[apache auth_mysql]]></category>

		<guid isPermaLink="false">http://chyl.org/?p=12</guid>
		<description><![CDATA[Ostatnio był mi potrzebny ten moduł w Apache&#8217;u, ale za chorobę nie mogłem doszukać się paczki z nim( kilka for sugerowało libapache2-mod-auth-mysql, ale nie jest ona dostępna, jest jakaś referencja do niej, ale nie znalazłem ), rozwiązaniem była ręczna kompilacja modułu, więc zaczynamy. Do budowy modułu auth_mysql potrzebne są nagłówki apache2 i mysql aptitude install [...]]]></description>
			<content:encoded><![CDATA[<p><span class="postbody">Ostatnio był mi potrzebny ten moduł w Apache&#8217;u, ale za chorobę nie mogłem doszukać się paczki z nim( kilka for sugerowało libapache2-mod-auth-mysql, ale nie jest ona dostępna, jest jakaś referencja do niej, ale nie znalazłem ), rozwiązaniem była ręczna kompilacja modułu, więc zaczynamy.</span></p>
<p>Do budowy modułu auth_mysql potrzebne są nagłówki apache2 i mysql</p>
<pre><span style="color: #008000;"><span class="postbody">aptitude install apache2-prefork-dev libmysqlclient15-dev</span></span></pre>
<p><span class="postbody">Teraz potrzebny sam moduł <a class="postlink" rel="nofollow" href="http://mesh.dl.sourceforge.net/sourceforge/modauthmysql/mod_auth_mysql-3.0.0.tar.gz" target="_blank">ściągamy go stąd</a>. Potrzebny będzie także plik różnicowy <a class="postlink" rel="nofollow" href="http://edin.no-ip.com/html/files/apache22.diff" target="_blank"> który znajduje się tutaj</a></span></p>
<p>Rozpakowujemy moduł i nakładamy patch.</p>
<pre><span style="color: #008000;"><span class="postbody">tar -zxvf mod_auth_mysql-3.0.0.tar.gz
mv apache22.diff mod_auth_mysql-3.0.0
cd mod_auth_mysql-3.0.0
patch -p0 &lt;apache22.diff</span></span></pre>
<p><span class="postbody">tutaj podajemy moduł mod_auth_mysql.c. Następnie kompiluje interesujący nas moduł i instalujemy go: </span></p>
<pre><span style="color: #008000;"><span class="postbody">apxs2 -c -L/usr/lib/mysql -I/usr/include/mysql -lmysqlclient -lm -lz mod_auth_mysql.c
</span><span class="postbody">apxs2 -i mod_auth_mysql.la</span></span></pre>
<p><span class="postbody">Dodajemy informację o nowym module i uaktywniamy go: </span></p>
<pre><span style="color: #008000;"><span class="postbody">echo "LoadModule mysql_auth_module /usr/lib/apache2/modules/mod_auth_mysql.so" &gt; /etc/apache2/mods-available/auth_mysql.load
ln -s /etc/apache2/mods-available/auth_mysql.load /etc/apache2/mods-enabled/auth_mysql.load
/etc/init.d/apache2 restart</span></span></pre>
<p><span class="postbody">Udajemy się teraz do <a class="postlink" rel="nofollow" href="http://modauthmysql.sourceforge.net/CONFIGURE" target="_blank">http://modauthmysql.sourceforge.net/CONFIGURE</a> i przechodzimy przez proces przygotowania bazy danych do indentyfikacji przy pomocy mysql&#8217;a.</span></p>
Number of Views :378]]></content:encoded>
			<wfw:commentRss>http://www.chyl.org/2008/09/auth_mysql-i-apache22/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

