Archive

Posts Tagged ‘apache’

さくらのVPS契約&wordpress周りの再設定

January 30th, 2011 No comments

先日、さくらのVPSを契約し、yusukezzz.netのコンテンツ全てを移行しました

その際、wordpress周りの設定を大分弄ったので備忘録として残しておきます
パフォーマンスの指標として今回はYSlowを使って測定しました
変更前は記録していないのですが、確かGrade Dで50台だったと思います…

設定内容はググって出てきたものをほとんどコピペしてるだけです

まずはhttpd.conf

<VirtualHost *>
~略
    <Directory /your-htdocs-root>
        AllowOverride All
        Options FollowSymLinks -MultiViews

        # gzip compress setting
        SetOutputFilter DEFLATE
        # Netscape 4.x has some problems...
        BrowserMatch ^Mozilla/4 gzip-only-text/html

        # Netscape 4.06-4.08 have some more problems
        BrowserMatch ^Mozilla/4\.0[678] no-gzip

        # MSIE masquerades as Netscape, but it is fine
        BrowserMatch \bMSIE !no-gzip !gzip-only-text/html

        # ここからフィルター設定
        FilterDeclare Compression CONTENT_SET
        FilterProvider Compression DEFLATE Content-Type $text/plain
        FilterProvider Compression DEFLATE Content-Type $text/css
        FilterProvider Compression DEFLATE Content-Type $application/xhtml
        FilterProvider Compression DEFLATE Content-Type $application/xml
        FilterProvider Compression DEFLATE Content-Type $application/xhtml+xml
        FilterProvider Compression DEFLATE Content-Type $application/rss+xml
        FilterProvider Compression DEFLATE Content-Type $application/atom+xml
        FilterProvider Compression DEFLATE Content-Type $application/x-javascript
        FilterProvider Compression DEFLATE Content-Type $image/svg+xml
        FilterProvider Compression DEFLATE Content-Type $text/html
        FilterProvider Compression DEFLATE Content-Type $application/javascript
        FilterChain Compression
        # ここまでフィルター設定

        # Don't append Vary heder for specific files
        SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png|zip|lzh|exe)$ dont-vary

        # Make sure proxies don't deliver the wrong content
        Header append Vary User-Agent env=!dont-vary
        Header append Vary Accept-Encoding env=!dont-vary
        # expires headers
        <FilesMatch "\.(ico|jpg|jpeg|png|gif|js|css|swf)$">
            ExpiresActive On
            ExpiresDefault "access plus 3 days"
        </FilesMatch>
    </Directory>
~略
</VirtualHost>

次にmysqlのクエリキャッシュ設定

[mysqld]
# query cache
query_cache_limit=1M
query_cache_min_res_unit=4k
query_cache_size=24M
query_cache_type=1

最後に、wp-minify の導入
wp-minify はwordpress内で使用されているjavascript, cssを1ファイルにまとめてくれるプラグインです
インストール後、wp-minify/cache に書き込み権限を与えておきます

APCや eAcceralatorなどもある程度効果ありますね
yusukezzz.netはAPCを導入しています

以上の設定を施したところ、YSlowのスコアは以下のようになりました
Grade A
Overall performance score 90
後はhttpリクエスト数を減らせ(CSSスプライトが未実施)&CDN使え(パフォーマンスと無関係)の2点が評価悪いだけなので、今回はこの辺までで十分だと思います
#CDNについては about:config からYSlowの設定を弄ることで強制的にオレオレCDNを登録出来るそうですが、スコアが上がるだけなのでやってないです
CSSスプライトはテーマによっては対応してそうなので、もう少しいい評価になるかもしれません

#2011/02/19 追記
そもそも YSlow の RuleSet を Small site or Blog にするべきでした
その状態で計測するとスコアは94まで行きました
あと、下記チューニングの通りにデーモンを停止してみました
CentOSをサーバーとして活用するための基本的な設定 (さくらインターネット創業日記)
#追記終了

以下参考サイト一覧(順不同)
DSAS開発者の部屋:負荷分散環境でブラウザキャッシュが効かないときは – ETagの解説 -
Webサイトの高速化 ルール13 ETagを正しく設定する! (Yahoo! developer netoworkより翻訳) | 株式会社インターオフィス
クラウド環境でのApacheの設定 | cloudrop
ゆっくりと… » WP MinifyでCSS/JavaScriptをまとめて軽量化、ページの応答速度を向上させる
mod_expires – Apache HTTP サーバ
YSlow対策でmod_expireを利用してHTTPレスポンスヘッダにExpiresを追加する – blog.katsuma.tv
Apacheで圧縮してコンテンツ配信しよう – takami_hirokiの日記
Apache 2.2 mod_filterを使いこなす – AddOutputFilterByType DEFLATE text/htmlを書き換えてみる « cyano

php-cgiをFastCGIで動かす

August 22nd, 2009 No comments

先日からPHPをCGIとして動かしていますが、せっかくなのでFastCGIの設定までやることにしました
FastCGIとは、CGIのプロセスをメモリ上に残しておくことで起動の遅いCGIプロセスを高速に実行出来るようにするCGIの動作仕様の1つです
FastCGI – Wikipedia

今回は解説サイトに従って簡単に設定出来ました
参考にしたのはこちら
Apache/FastCGI – Linux Tips
なんとなくfastcgiよりfcgidのほうが良さそうだったのでfcgidを入れました

必要なかった手順もあるので簡単にまとめておきます
Debian lennyの場合

# aptitude install libapache2-mod-fcgid
# a2enmod fcgid
# vim /etc/apache2/sites-available/your-profile
-------------------------------------------------------------
PHPを使用するVirtualHostの設定ごとに以下を追記
<IfModule mod_fcgid.c>
    AddHandler fcgid-script .php
    <Directory "/path-to-your-php-script-dir">
        FCGIWrapper /usr/bin/php-cgi .php

        Options +ExecCGI
        AllowOverride All
        Order allow,deny
        Allow from all
    </Directory>
</IfModule>
-------------------------------------------------------------
# /etc/init.d/apache2 restart

ps ax | grep php-cgi
としてプロセスが存在すれば多分有効になっているんじゃなかろうか
#fcgid入れる前に試してないので良くわからない;

Tags: ,

PHPをCGIモードで動かす

August 22nd, 2009 No comments

何でこんなことになったのか…

ふとML115のApache2を見ると、それはpreforkだった
preforkはシングルスレッドで動作するモードだ
マルチスレッドの方がパフォーマンスいいんだからそっちを入れよう!
マルチスレッドに対応しているのはworkerなのだが、これにmod-phpが対応していないらしく、
workerを入れたらpreforkと一緒にmod-phpが消されてPHPが動かなくなった
かくして、仕方なくphp-cgiの設定をする羽目になったのである
ネットを彷徨っても断片的な設定しかなく、本当に辛かった
とりあえず自分が設定した内容をまとめておく

更新中は500エラーを返すなど、酷いことになっていたかと思います
申し訳ございませんでした

Debian lennyの場合

# aptitude install php5-cgi apache2-mpm-worker
# a2enmod cgid
# a2enmod actions
# vim /etc/apache2/conf.d/php-cgi.conf
--------------------------------------------------------
下記内容で保存
<IfModule modactions.c>
  Action application/x-httpd-php /cgi-bin/php5
</IfModule>
--------------------------------------------------------

ここまでの作業は
# gunzip /usr/share/doc/php5-cgi/README.Debian.gz
# less /usr/share/doc/php5-cgi/README.Debian
の内容を参照されたし

# vim /etc/apache2/sites-available/your-profile
--------------------------------------------------------
<VirtualHost *80>
~省略~
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
  AllowOverride None
  Options ExecCGI -MultiViews +FollowSymLinks
  Order allow,deny
  Allow from all
</Directory>
</VirtualHost>
--------------------------------------------------------
# /etc/init.d/apache2 restart

疲れた

Tags: ,

macportsでapache2を入れたらDocumentRootが分からなくて困った

July 22nd, 2009 No comments

てっきり
/Library/WebServer/Documents
だと思ったら全然違った;
そもそも設定ファイルが/etcになかった
macportsで入れたものは全て/opt以下に入るということを先輩に教えてもらっていたのに、すっかり忘れていた…
macportsだとデフォルトで
ServerRoot “/opt/local/apache2″
DocumentRoot “/opt/local/apache2/htdocs”
設定ファイルは/opt/local/apache2/conf以下に入ってます

というかLeopardなら最初からapache2入ってたし、そっち使えばよかったかな…

Tags: ,

mod_deflateを用いたApacheパフォーマンスチューニング

July 1st, 2009 No comments

@IT:mod_deflateによるコンテンツの圧縮転送(1/3)

こちらを参考に夜な夜な設定してみました
まずはmod_deflateを有効にする
#CentOS5.3でyumから入れたらデフォルトで有効でした

そして<Directory>ディレクティブなんかで
# deflate enable
SetOutputFilter DEFLATE
# deflate level 1-9
DeflateCompressionLevel 5

の2行を最低書けば有効になります

チェックはAnalysis Tools for Your Siteから
上段のhttpzipにURLを入れるとチェックできます

圧縮はある程度CPUを消費するので、アクセスの非常に多いサイトで導入すると逆効果になる可能性もあるようです
#その場合はネットワーク負荷とのトレードオフ

Tags: