Kinopyo Blog

プログラマとしてRuby, Rails, iPhone, iPad,Macなどなどと向き合う日々のログポース

Archive for the ‘Apache’ Category

さくらVPSのパフォーマンスチューニング

2011年11月11日

さくらVPSでWordpressブログをやってます。そんなにアクセスがないはずなのに、さくらVPSに移行した当時は結構サーバが落ちました。topコマンドで見るとスワップが結構70%まで上がったりして、手動でapache再起動とかもやりました。。ネットでいろいろググッてそれなりにパフォーマンスチューニングした結果やっと安定して、同じサーバに2つのWordpressブログと一つのRailsアプリケーションを実行しています。

参考までにさくらVPSは一番安いの512MB、月1000円のプランで、平日だとこのブログの一日PVは大体500〜600です。

チューニングしてから結構時間が経ったのでだいぶ忘れました。Evernoteでのメモを貼ります。

効果が高い順で。

WordPress

W3 Total Cache プラグインが一押しです。インストールも設定も簡単ですし、一番効果があります。

ページのキャッシュ、cssやjavascriptのマージと圧縮など、結構やってくれます。実際これだけ入れても感じるほど早くなるはずです。

Apache

httpd.confを編集します。いろいろ修正してみましたが、結果下記の設定にしました。この辺はググったら結構出ますが、それぞれの環境に合わせて試行錯誤したほうがオススメです。


<IfModule prefork.c>

StartServers       5

MinSpareServers    5

MaxSpareServers   10

ServerLimit      64

MaxClients       64

MaxRequestsPerChild  50

MaxMemFree 2000

</IfModule>

PHP

/etc/php.ini

zlib.output_compression = On

APC

pecl install APC

Windowsにmemcacheをインストール、PHPの設定

2010年11月26日

My環境

XAMPP1.7.3 + WinXP

ダウンロードはこちら

memcache側の設定

memcacheのインストール手順
  1. http://code.jellycan.com/memcached/よりmemcached 1.2.6 => win32 binaryバージョンのファイルをダウンロード
  2. zipファイルを適当な場所(例えばc:\memcached)に解凍
  3. コマンドプロンプトから下記コマンドを叩く、Windowsサービスとしてインストール。これで今度Windowsが起動すると自動でmemcacheサーバが起動してくれる。

c:\memcached.exe -d install
memcacheの起動(初回のみ)

コマンドプロンプト


c:\memcached\memcached.exe -d start

php側

php.iniの設定

XAMPPのパス/php/php.iniを編集:下記コードを追加


extension = php_memcache.dll

ここはLinux環境と違い拡張子が.soではなく.dll。

php_memcache.dllのダウンロード

http://downloads.php.net/pierre/から’memcache’を検索して正しいバージョンのファイルをダウンロード。

そしてxampp/php/extに入れる。


ここで問題!正しいバージョンはなんなのか?間違ってダウンロードすると後でApacheサーバを立ち上がるときエラーが出るよ。私の環境だとphp_memcache-cvs-20090703-5.3-VC6-x86.zipのファイルが正しいけど、今時点で上記URLには載せていない。結構ググって見ても結局古い結果で、しょうがなく友人からそのファイル貰った。。。ここにアップしたので、必要な方はダウンロードしてください。ウイルススキャンしてね。。

php_memcache-cvs-20090703-5.3-VC6-x86

動作確認

xamppでapacheサーバを起動、下記内容をphpファイルと保存してサーバのDocumentパス(デフォルトではXAMPP/htdocs)に置く。


connect("localhost",11211); // try 127.0.0.1 instead of localhost

                                           // if it is not working 

    echo "Server's version: " . $memcache->getVersion() . "\n";

    // we will create an array which will be stored in cache serialized

    $testArray = array('horse', 'cow', 'pig');

    $tmp       = serialize($testArray);

    $memcache->add("key", $tmp, 30);

    echo "Data from the cache:\n";

    print_r(unserialize($memcache->get("key")));

?>

おまけ:memcacheメモリの調整

Memcached, by default, loads with 64mb of memory for it’s use which is low for most applications. To change this to something else, navigate to HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\memcached Server in your registry, find the ImagePath entry and change it to look something like this:

“C:\memcached\memcached.exe” -d runservice -m 512

参考

http://www.codeforest.net/how-to-install-memcached-on-windows-machine

http://pureform.wordpress.com/2008/01/10/installing-memcache-on-windows-for-php/

ApacheサーバRedirectメモ、別のサイトに転送

2009年11月29日

サイトの引越しなどであるURLから別のURLへ転送する場合の話です。例えば JavaScript を利用して転送したり、HTMLの機能で転送させたりするかもしれません。


しかしトップページでリダイレクトしてみても、別のページに直リンクしていた場合は旧ページが表示されることになります。そのような時に、Apache では httpd.conf に下記の1行を追加することで、別のURLへ転送させる事が可能です。

Redirect / http://www.yahoo.co.jp/

この例では Yahoo Japan へリダイレクトされますが、例えば http://www.example.com/base/ にアクセスした場合でも http://www.yahoo.co.jp/base/ へのリダイレクトが行われます。

Mac(UNIX)でApache2.2サーバをインストール

一番デフォルトでのインストール手順です。

インストール

1. Download – The Apache HTTP Server ProjectでUNIX Sourceをダウンロード

2. 解凍し、ターミナルを開いてそのディレクトリに移動

3. 次のコマンドを実行、–prefix=”インストール先”を指定。省略された場合は/usr/local/apache2になる。他にモジュールとかの設定も可能。

./configure --prefix=/users/kinopyo/develop/apache

4. ビルド、インストール

次のコマンドを実行、それぞれ時間がすこしかかる

make
make install

これでインストールは完了です。

カスタマイズ:httpd.confを編集

ここからはプラットフォームとは関係なく単純なApacheの世界です。

前回の記事を参照してください:

PHP5とApache2.2をWindowsにインストール – kinopyoの日記

補足

Windowsはインストールウィザードでインストール時

ServerAdminとServerNameの編集ダイアログがあります。

一方MacはGUIのインストールではないため、

手動でhttpd.confに上記二つのプロパティを設定する必要があります。

テスト

サーバの起動:

$ インストール先のディレクトリ/bin/apachectl -k start

サーバの停止:

$ インストール先のディレクトリ/bin/apachectl -k stop

これでブラウザでhttp://localhost:80にアクセスすればページが表示されるはずです。

トラブルにあった!

上記コマンドを打つディレクトリはApacheサーバがインストールされたディレクトリです。

例えば/users/kinopyo/develop/apacheにインストールされたとして、

  1. まずはcd /users/kinopyo/develop/apacheに移動
  2. 次に/bin/apachectl -k startで実行

もし第一歩でbinディレクトリまで移動し、直接apachectl -k startを実行したら、

下記のようなエラーメッセージが出て、起動失敗になります。

(13)Permission denied: make_sock: could not bind to address [::]:80
(13)Permission denied: make_sock: could not bind to address 0.0.0.0:80
no listening sockets available, shutting down
Unable to open logs


ちなみにこのメッセージが出るもう一つのパターンはポート番号が既に使われている場合です。

その時は下記コマンドで検出するし、使っているアプリを停止するか

netstat -na | grep 8082

httpd.confのListenとServerNameのポート番号を新たに設定する必要があります。


参考サイト:

Compiling and Installing – Apache HTTP Server

apache install problem

PHP5とApache2.2をWindowsにインストール

2009年11月24日

Apache

ダウンロード&インストール
  • Welcome! – The Apache HTTP Server Projectから最新版を入手
  • インストールファイルを実行、下記2点注意すればOK
  • [Network Domain]と[Server Name]のところはlocalhostと記入
  • [Custom]インストールでインストール先が指定できる
設定

[Apache Home]\conf\httpd.confを開いて下記のパスを自分の環境にあわせて

設定してください。このパスはサーバが立ち上がった際のrootとして使います。

  • DocumentRoot “D:/www”
  • <Directory “D:/www”>

PHP

  • PHP: Downloadsから入手
    • Windows BinariesからPHP 5.2.11 zip packageをダウンロード

拡張子がMSIのinstaller版もあるが、マニュアルでのインストールがすすめられる

  • zipファイルを適当な場所に解凍。今回はd:\phpに。
  • Windowsの環境変数pathに設定
  • コマンドプロンプトで下記コマンドでインストール成功かを確認

php -v

php.ini

  • php.ini-recommendedをphp.iniにリネーム
  • doc_rootを検索し内容を編集

doc_root = d:\www

Apacheサーバと同じルート(httpd.confの DocumentRoot)

ApacheサーバとPHPの連携

httpd.confの修正

LoadModule php5_module d:/php/php5apache2_2.dll

AddType application/x-httpd-php .php

PHPIniDir “d:/php”

ディレクトリは自分の環境に合わせて修正してください。


動作確認

d:/phpにtest.phpというファイルを作ります。内容は下記になります。

注意!!は動かない!

Apacheサーバを再起動し、http://localhost/test.phpを叩いてPHPのページが表示されればOKです。

参考サイト

Apache2 + PHP5をWindowsXPにインストール

php.iniの配置場所の指定(PHPIniDir) – PHP利用のための設定 – Apache入門