ホーム > タグ > apache

apache

mod_proxyとmod_ext_filterで画像圧縮プロキシを作る試み

ということで,apacheのmod_proxyを使ったフォワードプロキシを構成しているんですが,ただ単にプロキシとして使っても面白くないので,貧弱回線用に通信負荷を減らす圧縮プロキシにしちゃいました.要件は以下の通り.

  1. mod_deflateによるgzip圧縮転送
  2. mod_ext_filterを駆使した画像圧縮

ということで,mod_proxyを以下のように設定しました.動いているのであっていると思います.ただ,書き方が良いかどうかは微妙すぎるので,よりよい書き方がありましたら,ご指摘下さい.

<IfModule mod_deflate.c>
  DeflateCompressionLevel 9
  DeflateFilterNote Ratio ratio
  LogFormat "%h %l %u %t \"%r\" %>s %b (%{ratio}n%%)" common_deflate
</IfModule>

<IfModule mod_proxy.c>
  Listen xxxxx
  <VirtualHost _default_:xxxxx>
    CustomLog /var/log/apache2/proxy.log common_deflate
    ErrorLog /var/log/apache2/proxy_error.log

    ProxyRequests On
    ProxyVia Block

    <Proxy *>
      Order deny,allow
      Deny from all
      AuthType Digest
      AuthName "ProxyAuth"
      AuthUserFile /etc/apache2/.prxpswd
      Require valid-user
      Satisfy any

      AddDefaultCharset Off
      SetOutputFilter DEFLATE
    </Proxy>

    <IfModule mod_ext_filter.c>
      ExtFilterDefine jpeg-filter mode=output cmd="/usr/bin/convert -quality 15 jpeg:- jpeg:-"
      ExtFilterDefine png-filter mode=output cmd="/usr/bin/convert -colors 16 -colorspace Transparent -quality 90? +dither +profile \"*\" png:- png:-"
      <ProxyMatch \.(jpe?g|JPE?G)$>
        SetOutputFilter jpeg-filter
      </ProxyMatch>
      <ProxyMatch \.(png|PNG)$>
        SetOutputFilter png-filter
      </ProxyMatch>
    </IfModule>
  </VirtualHost>
</IfModule>

参考

誘いやすくなる画期的なWebサービスfixerを作りました!

ということで,予定や行きたい場所,やりたいことを簡単に確認できて,誘いやすくなる画期的なWebサービスfixerを作りました.

嘘です.

以前,こんなことをつぶやきました.

その実装が,fixerです.具体的には,.htaccessに次のような暗号を書き込みます.

RewriteEngine On
RewriteRule .* - [R=503]

これでアクセス過多を装えます.実体はありません.世の中そんなものです.ですので,「あ!これはすごい争奪戦!まずい!すぐに誘わなきゃ!」ってなることを期待します.

WordPressの高速化いろいろ

以前はMovableTypeでブログをやっていたのですが,今はWordPressに乗り換えました.MTはスタティックHTMLを発行する(ダイナミックパブリッシングもあるけど)ので,記事数が増えてくると再構築に時間がかかるのがネックでした.対して,WPはPHPを駆使したダイナミック出力であり,再構築が不要です.まぁ,乗り換えの理由にはそれ以外にも色々とあったんですが,それはそれで.

閑話休題.Wordpressは動的出力になっているので,オーバーヘッドが気になります.MTはスタティックHTMLだったので,この差はかなり気になるところです.ですので,WPを如何に高速化させるかが重要なポイントになってきます.というわけで,このブログに適用している高速化手法を紹介したいと思います.このような手法で高速化させていますが,レスポンスはいかがですか?

WPプラグイン

まずはWP側でできることからやっていきましょう.高速化を目的として導入しているプラグインは以下の通りです.

ほとんど定番ですね.簡単に説明します.jQuery lazy loadは画像の読み込みを遅延させます.具体的には,画像が表示される位置までスクロールされると読み込みを行います.そのため,イニシャルトラフィックを減らすことができるので,体感的な高速化が図れます.WP CSSはgzipとかしてるらしいです.後述するmod_pagespeedと効果が重複している気もするので,いらないかもしれません.先にWP Super Cacheを説明します.というか,定番過ぎるので説明の必要はないと思いますが,基本的な高速化プラグインです.色々とコンテンツをキャッシュしてくれます.基本的に,このWP Super Cacheによる高速化効果が1番高いです.手っ取り早く高速化したい人はこれを導入すればいいと思います.

で,残ったWP Memcached Managerはmemcachedを用いてキャッシングするプラグインです.導入方法はここら辺を参考にすると良いと思います.利用には,memcachedをインストールして,起動させておく必要があります.特に考えなくても利用できます.ただ,機能してはいるんですが,memcachedがかなり暇なようなので,割当メモリは16MBに減らしています.これでも多いぐらい見たいです.記事数がまだ少ないですからね.

APC

PHPの高速化といえば,APCが主力です.これはpeclから簡単にインストールできます.これもインストールしてしまえば,特に何も考えることなく利用できます.デフォルトの設定でも良いのですが,サーバ側のメモリを余らせていても仕方がないので,48MB割り当てるように変更しています.それだけです.APCはWPに限らず,あらゆるPHPアプリに効果を発揮しますので,WebプログラミングにはPHPを好んで使うボクには嬉しい限りです.

mod_pagespeed

導入方法などは以前のエントリで紹介しました.ただし,不具合があったので,いくつかの設定を変更しました.現在は以下の設定で動かしています.

ModPagespeedEnableFilters remove_comments
ModPagespeedEnableFilters collapse_whitespace,elide_attributes
ModPagespeedEnableFilters move_css_to_head
ModPagespeedEnableFilters extend_cache

rewrite系を無効にしました.変更があってもキャッシュが効いていて,反映されなかったり,いくつかのjQueryが機能しなくなったりしたので,外しました.カスタマイズが終わって,安定運用期になったら,また有効にしてみようかなと思っています.

mod_pagespeedを導入してみた

一時前に話題になったmod_pagespeedを導入してみた.導入環境はUbuntu10.04amd64です.

$ wget https://dl-ssl.google.com/dl/linux/direct/mod-pagespeed-beta_current_amd64.deb
$ sudo dpkg -i mod-pagespeed-beta_current_amd64.deb
$ sudo service apache2 restart

設定ファイルも万全なので,簡単ね!色々な設定項目があるみたいですが,こんな感じに設定してみました.

ModPagespeedEnableFilters remove_comments
ModPagespeedEnableFilters collapse_whitespace,elide_attributes
ModPagespeedEnableFilters rewrite_javascript
ModPagespeedEnableFilters move_css_to_head
ModPagespeedEnableFilters combine_css,rewrite_css
ModPagespeedEnableFilters extend_cache

劇的に速くなったという感じはないですが,いい感じです.CPUが暇しているので,このぐらい使ってあげないとね.

さくらVPSに移設しました

こんにちは,4403 is writtenのなれの果てです.いやなことがあったので,4403 is writtenは閉鎖して,新しく4403 is not primeを始めました.「いやなこと」というのは言うにはばからず,Movable TypeからWordpressへの移行が上手くいかなかったことです.色々な方法を試しましたが,記事インポートは上手くいくものの,パーマリンクを維持することができませんでした.何故か番号が飛ぶ・・・.まぁ,それだけが理由かどうかはしりませんけど.

というわけで,XREAの更新が12月に迫っていて,しかも度々高負荷になってイラッ☆としていたので,これを機にさくらVPSに移行しました.XREA程度のレンタルサーバに比べれば,圧倒的に快適です.さくらのレンサバに比べても,自由度が高くて遊び心がくすぐられます.まぁ,移設の理由がそれだけかどうかはしりませんけど.

さくらVPSを使うに当たって,OSは使い慣れたUbuntu10.04amd64を選択しました.カスタムOSを選択すると,イメージから初期状態が復元されるのかと思ったら,普通にテキストインストーラが起動しましたよ!ちょっと驚いた.で.基本的に「さくらVPSだから」という特殊な設定は何もないので,Ubuntuがインストールされてしまえば,あとは普通のUbuntuと変わりません.そのため,別段に何か特殊なことはしていません.

一応,やったような気がすることを箇条書き.

  • SSHをインストールして基本的な設定をする.
  • LAMP環境の構築.
  • ufwでSSHとApache Fullを許可にする.
  • Subversionを入れる.
  • awstatsを入れてログを可視化してみる.
  • virtualhostを駆使して複数ドメインを運用する.
  • apcとmemcachedを入れてみる.
  • muninを入れてサーバ監視してみる.

そんなもんです.唯一激しく躓いたのは,apacheの部分で,デフォではmod_rewriteが有効になっていないので,a2enmod rewriteしたくらいかな.このサーバではWordpressを中心に,PHPをメインとして活用していく予定なので,apcに64MB割り当ててます.余ってますけど.さくらVPSはメモリが512MBですが,apcに64MB割り当てても,今のところ余裕で動いています.MySQLのチューニングはまだしてません.というか,Wordpressの記事数が少なすぎて,実用レベルでのチューニングがまだできません.頑張って記事を書いて,頑張って訪問者を増やさないとね!

Home > タグ > apache

アフィリエイト

Return to page top