<?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>vaduz.tk blog &#187; Apache</title>
	<atom:link href="http://blog.vaduz.tk/tag/apache/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.vaduz.tk</link>
	<description>Google 大好き</description>
	<lastBuildDate>Thu, 03 Dec 2009 14:12:31 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>CS1.6 のカスタムマップをサーバから高速にダウンロードさせる</title>
		<link>http://blog.vaduz.tk/2009/03/08/cs16-%e3%81%ae%e3%82%ab%e3%82%b9%e3%82%bf%e3%83%a0%e3%83%9e%e3%83%83%e3%83%97%e3%82%92%e3%82%b5%e3%83%bc%e3%83%90%e3%81%8b%e3%82%89%e9%ab%98%e9%80%9f%e3%81%ab%e3%83%80%e3%82%a6%e3%83%b3%e3%83%ad/</link>
		<comments>http://blog.vaduz.tk/2009/03/08/cs16-%e3%81%ae%e3%82%ab%e3%82%b9%e3%82%bf%e3%83%a0%e3%83%9e%e3%83%83%e3%83%97%e3%82%92%e3%82%b5%e3%83%bc%e3%83%90%e3%81%8b%e3%82%89%e9%ab%98%e9%80%9f%e3%81%ab%e3%83%80%e3%82%a6%e3%83%b3%e3%83%ad/#comments</comments>
		<pubDate>Sun, 08 Mar 2009 14:27:55 +0000</pubDate>
		<dc:creator>Vaduz</dc:creator>
				<category><![CDATA[blog]]></category>
		<category><![CDATA[Apache]]></category>
		<category><![CDATA[CS1.6]]></category>
		<category><![CDATA[de_russka]]></category>
		<category><![CDATA[server]]></category>
		<category><![CDATA[sv_allowdownload]]></category>
		<category><![CDATA[sv_downloadurl]]></category>

		<guid isPermaLink="false">http://blog.vaduz.tk/?p=51</guid>
		<description><![CDATA[CS1.6 のカスタムマップをサーバから高速にダウンロードさせる設定をしてみました。
CS1.6 では、デフォルトで sv_allowdownload という CVAR があり、クライアントが持っていないファイルをサーバ [...]]]></description>
			<content:encoded><![CDATA[<p>CS1.6 のカスタムマップをサーバから高速にダウンロードさせる設定をしてみました。<br />
CS1.6 では、デフォルトで sv_allowdownload という CVAR があり、クライアントが持っていないファイルをサーバからゲームサーバ経由でダウンロードする機能がついていますが、帯域が非常に狭く、ダウンロードするのに非常に時間がかかってしまいます。目安としては先ほどテストしたところ、8MB のファイルのダウンロードに 5 分以上かかっていました。<br />
ところが、ウェブサーバ経由でファイルをダウンロードさせると、帯域の制限なしにファイルを送信できるので、高速にダウンロードできるようになります。ウェブサーバ経由でのダウンロードには、sv_downloadurl という CVAR を使い、その値に cstrike ディレクトリを設定します。</p>
<p>ゲームサーバで使うカスタムマップファイルは、ゲームサーバとは別にホスティングして利用することを考えましたが、新たなマップを追加したり削除したりする際に、ファイルホスティングしている方も同期させるのが運用上手間になるため、今回はサブドメインに hlds という VirtualHost を立てて、そこに cstrike 以下が見られるように設定しました。cstrike 以下には server.cfg があるため、ゲームサーバのパスワードや rcon パスワードが見られてしまうため、隠蔽する必要があります。そこで、空の document root を作り、そこからの alias で必要なディレクトリが見られるようにしました。Apache の設定は以下のとおりです。</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
</pre></td><td class="code"><pre class="ini" style="font-family:monospace;">&lt;VirtualHost *:<span style="">80</span>&gt;
    ServerName hlds.vaduz.tk
    DocumentRoot /var/www/hlds
    Alias /maps /usr/games/hlds/cstrike/maps
    Alias /models /usr/games/hlds/cstrike/models
    Alias /gfx /usr/games/hlds/cstrike/gfx
    Alias /overviews /usr/games/hlds/cstrike/overviews
    Alias /sound /usr/games/hlds/cstrike/sound
    &lt;Directory /var/www/hlds/&gt;
        AllowOverride All
        order deny,allow
        deny from all
        allow from all
    &lt;/Directory&gt;
&lt;/VirtualHost&gt;</pre></td></tr></table></div>

<p>Apache からでもアクセスできるように該当のディレクトリのオーナーを確認してください。<br />
また、ファイルの中にはパーミッションが正しく設定されていない場合があるので、注意してください。<br />
今回は一括で以下のコマンドで変更しました。</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
</pre></td><td class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">find</span> <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>games<span style="color: #000000; font-weight: bold;">/</span>hlds <span style="color: #660033;">-type</span> f <span style="color: #660033;">-print0</span> <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">xargs</span> <span style="color: #660033;">-0</span> <span style="color: #c20cb9; font-weight: bold;">chmod</span> <span style="color: #000000;">644</span>
<span style="color: #c20cb9; font-weight: bold;">find</span> <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>games<span style="color: #000000; font-weight: bold;">/</span>hlds <span style="color: #660033;">-type</span> d <span style="color: #660033;">-print0</span> <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">xargs</span> <span style="color: #660033;">-0</span> <span style="color: #c20cb9; font-weight: bold;">chmod</span> <span style="color: #000000;">755</span></pre></td></tr></table></div>

<p>ウェブサーバからカスタムマップをダウンロードする設定が整いました。<br />
ゲームサーバの設定を変更して、ウェブサーバ経由でファイルをダウンロードするように変更します。<br />
server.cfg を以下のように変更します。</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
</pre></td><td class="code"><pre class="ini" style="font-family:monospace;">sv_allowdownload <span style="">0</span>
sv_downloadurl <span style="color: #933;">&quot;http://hlds.vaduz.tk/&quot;</span></pre></td></tr></table></div>

<p>sv_allowdownload が有効のままだとウェブサーバ経由にならないので、オフにします。<br />
sv_downloadurl は &#8221; でクオートして、127 バイト以内に収めます。</p>
<p>設定後、試しにサーバに入ってみると、ほぼ一瞬でダウンロードが終了しました。<br />
通常ファイルがない場合はサーバに入ることができないため、ないマップをダウンロードして、Steam フォルダに展開して・・・という手間が要らずに直接入ることができます。クライアントにとってもサーバに入る際の敷居が低くなるでしょう。</p>
<p>これは個別の問題ですが、de_russka を使用する際に、</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="ini" style="font-family:monospace;">cannnot continue without models/de_russka_tree_noleaves.mdl</pre></td></tr></table></div>

<p>というエラーがでてしまうことがあります。<br />
ファイル自体は</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="ini" style="font-family:monospace;">models/de_russka/russka_tree_noleaves.mdl</pre></td></tr></table></div>

<p>にありますが、見ているディレクトリが違うようで、正しくダウンロードできません。<br />
結構利用されているマップなので、透過的にダウンロードできるようにシンボリックリンクを貼っておきました。</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
</pre></td><td class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #7a0874; font-weight: bold;">cd</span> <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>games<span style="color: #000000; font-weight: bold;">/</span>hlds<span style="color: #000000; font-weight: bold;">/</span>cstrike<span style="color: #000000; font-weight: bold;">/</span>models
<span style="color: #c20cb9; font-weight: bold;">ln</span> <span style="color: #660033;">-s</span> de_russka<span style="color: #000000; font-weight: bold;">/</span>russka_tree_noleaves.mdl de_russka_tree_noleaves.mdl</pre></td></tr></table></div>

]]></content:encoded>
			<wfw:commentRss>http://blog.vaduz.tk/2009/03/08/cs16-%e3%81%ae%e3%82%ab%e3%82%b9%e3%82%bf%e3%83%a0%e3%83%9e%e3%83%83%e3%83%97%e3%82%92%e3%82%b5%e3%83%bc%e3%83%90%e3%81%8b%e3%82%89%e9%ab%98%e9%80%9f%e3%81%ab%e3%83%80%e3%82%a6%e3%83%b3%e3%83%ad/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>YSlow 対策</title>
		<link>http://blog.vaduz.tk/2008/11/16/yslow-%e5%af%be%e7%ad%96/</link>
		<comments>http://blog.vaduz.tk/2008/11/16/yslow-%e5%af%be%e7%ad%96/#comments</comments>
		<pubDate>Sun, 16 Nov 2008 10:41:10 +0000</pubDate>
		<dc:creator>Vaduz</dc:creator>
				<category><![CDATA[blog]]></category>
		<category><![CDATA[add-on]]></category>
		<category><![CDATA[Apache]]></category>
		<category><![CDATA[CDN]]></category>
		<category><![CDATA[ETags]]></category>
		<category><![CDATA[Expires header]]></category>
		<category><![CDATA[Firebug]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[Gzip]]></category>
		<category><![CDATA[mod_deflate]]></category>
		<category><![CDATA[YSlow]]></category>

		<guid isPermaLink="false">http://blog.vaduz.tk/?p=10</guid>
		<description><![CDATA[ウェブサイトのパフォーマンスを測定するツール YSlow を使ってこのブログのパフォーマンスチューニングをしてみました。
必要なツールは

Firefox
Firebug
YSlow

の 3 つをインストールします。
 [...]]]></description>
			<content:encoded><![CDATA[<p>ウェブサイトのパフォーマンスを測定するツール <a href="http://developer.yahoo.com/yslow/">YSlow</a> を使ってこのブログのパフォーマンスチューニングをしてみました。<br />
必要なツールは</p>
<ul>
<li><a href="http://mozilla.jp/firefox/">Firefox</a></li>
<li><a href="https://addons.mozilla.org/ja/firefox/addon/1843">Firebug</a></li>
<li><a href="http://developer.yahoo.com/yslow/">YSlow</a></li>
</ul>
<p>の 3 つをインストールします。<br />
何も対策していない状態での Performance Grade は D でした。<br />
対策したのは評価 F だった以下の 4 つ</p>
<ul>
<li>2. Use a CDN</li>
<li>3. Add an Expires header</li>
<li>4. Gzip components</li>
<li>13. Configure ETags</li>
</ul>
<h3>2. Use a CDN</h3>
<p>根本的な対策になってませんが、Firefox の設定でこのドメインを CDN として設定してしまいます。</p>
<ol>
<li>Firefox のアドレスバーに about:config を入れて開きます</li>
<li>右クリックして新規作成から新しい文字列を選択します</li>
<li>設定名を extensions.firebug.yslow.cdnHostnames とします</li>
<li>CDN のホスト名をカンマ区切りで入力します。vaduz.tk など</li>
</ol>
<p>これで評価が A になります。</p>
<h3>3. Add an Expires header, 13. Configure ETags</h3>
<p>この二つは同じなので一緒に解説します。<br />
httpd.conf に ETags を利用する設定を追加します。</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
</pre></td><td class="code"><pre class="ini" style="font-family:monospace;">LoadModule expires_module modules/mod_expires.so
ExpiresActive On
FileETag None
ExpiresByType text/css <span style="color: #933;">&quot;access plus 1 month&quot;</span>
ExpiresByType application/x-javascript <span style="color: #933;">&quot;access plus 1 month&quot;</span>
ExpiresByType image/jpeg <span style="color: #933;">&quot;access plus 1 month&quot;</span>
ExpiresByType image/gif <span style="color: #933;">&quot;access plus 1 month&quot;</span>
ExpiresByType image/png <span style="color: #933;">&quot;access plus 1 month&quot;</span></pre></td></tr></table></div>

<p>適切な場所に追加したら設定を再読込します。</p>

<div class="wp_syntax"><div class="code"><pre class="ini" style="font-family:monospace;">$ /etc/init.d/httpd reload</pre></div></div>

<p>これで両方とも評価は A になります。</p>
<h3>4. Gzip components</h3>
<p>Apache の mod_deflate モジュールを使って HTTP 通信を圧縮します。<br />
/etc/httpd/conf.d/deflate.conf を下記のように設定しました。</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
</pre></td><td class="code"><pre class="ini" style="font-family:monospace;">&nbsp;
# DEFLATEの有効化
AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css text/javascript application/x-javascript
&nbsp;
# 送信先ブラウザがNetscape 4.xの場合はtext/htmlのみ圧縮
BrowserMatch ^Mozilla/<span style="">4</span> gzip-only-text/html
&nbsp;
# 送信先ブラウザがNetscape <span style="">4.06</span>-<span style="">4.08</span>の場合は圧縮しない
BrowserMatch ^Mozilla/<span style="">4</span>\.0<span style="color: #000066; font-weight:bold;"><span style="">&#91;</span><span style="">678</span><span style="">&#93;</span></span> no-gzip
&nbsp;
# 送信先ブラウザがMSIEの場合は全て圧縮する
BrowserMatch \bMSI<span style="color: #000066; font-weight:bold;"><span style="">&#91;</span>E<span style="">&#93;</span></span> !no-gzip !gzip-only-text/html
&nbsp;
# プロキシサーバーが圧縮未対応ブラウザへ圧縮ファイルを送信しないようにする
Header append Vary User-Agent env<span style="color: #000066; font-weight:bold;">=</span><span style="color: #660066;">!dont-vary</span></pre></td></tr></table></div>

<p>これで評価 A になりました。</p>
<p>総合で A(97) になりました。</p>
<p><a href="http://blog.vaduz.tk/wp-content/uploads/2008/11/yslow.png"><img class="alignnone size-medium wp-image-11" title="yslow" src="http://blog.vaduz.tk/wp-content/uploads/2008/11/yslow.png" alt="" width="300" height="284" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.vaduz.tk/2008/11/16/yslow-%e5%af%be%e7%ad%96/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
