タグ: Apache を抽出しています。
Total: 10

GlobalSign apacheへの設定

ブログ | 2012/7/12 21:29
[インストール] Apache 2.x + mod_ssl + OpenSSL(新規・更新)
https://jp.globalsign.com/support/server/03.html

「証明書が信用ならん」という状況でハマっていたのだけれど、下記ページを参考に情報を確認したら、どうも.crtの文字列が違うんじゃないかというのを発見して、メールの文字列に直したらいけた。

opensslコマンドで証明書情報を確認したい。
https://jp.globalsign.com/support/faq/07.html

apache umaskの設定

ブログ | 2011/11/29 21:24
apacheのグループに作業ユーザーを入れる。
/etc/sysconfig/httpd

umask 002
を追記。

これで、ディレクトリは775、ファイルを664になる。

mod_proxy_balancerを使う時は、

ブログ | 2011/10/31 13:56
MaxRequestsPerChild をがっつり増やす必要があるのかもしれない。3台だったらx3とか。
様子見。

で、apacheの設定

ブログ | 2011/9/5 13:28
アクセスログを見る限りでは、急激なアクセスとかが原因ではなさそう。
ログに、%Pなんかを追加して、どうなってるのか調べたりする。なるほど、preforkってこういう感じかということで、MaxRequestsPerChild を 50にしてみた。こうすると同じ子プロセスでのアクセスが50までになる。たぶんそういうことだ。下記ページに書かれているように、PHPを使っていてかなりメモリを使っていそうなので、真似するのがきっといい筈。メモリを多く使うページにアクセスが集中するとプロセスが溜まってメモリが足りなくなるという現象に違いない。

http://labs.unoh.net/2008/03/apache_mpm.html

しばらく様子見。

・・・
で、togoを30mapsにすることにした。

safariでファイルアップロードに失敗する問題

ブログ | 2011/6/7 15:10
これじゃないか。
http://memo.yomukaku.net/entries/28

BrowserMatch "Safari" nokeepalive
とのこと。近々テストして変更する。
▼追記 2011/6/7 15:42
全部、修正したった。
▼追記 2011/6/9 14:55
ついでに、KeepAliveTimeout を見直してみたら(10->2)、ずいぶんプロセスが減ったようだ。とてもいい感じ。

当面、これでいってみる。
KeepAlive On
MaxKeepAliveRequests 50
KeepAliveTimeout 2
BrowserMatch "Safari" nokeepalive

access_logの検索

ブログ | 2010/1/18 18:15
ある日、あるファイル、apacheのアクセスログ数
grep '18/Jan/2010.*test/dayo/mo/abc.jpg' access_log | wc -l
で、いけた。

ログファイルは、
/var/log/ とか /var/log/apache/ とか /var/log/httpd/ とかにある筈。

mod_proxy_balancerメモ2 (mod_rewrite編)

ブログ | 2009/12/5 18:34
mod_proxy_balancerメモ
http://www.rottel.net/kuwa/55971
の続編です。

前回は、mod_rewriteは挫折して、ProxyPassだけでやったのだけれど、時間置いて順を追って考えたらできたみたい。

とにかく、僕の場合は、mod_rewriteでこういうことをするのをベースにしているので、
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]
この時のmod_proxy_balancer

<VirtualHost *:80>
 DocumentRoot "/Users/xxxxx/xxxxx/xxxxx/xxxxx"
 ServerName www.rottel.net
 ServerAlias rottel.net
 ErrorLog "/var/log/apache2/rottel_error_log"
 LogLevel emerg
 CustomLog "/var/log/apache2/rottel_access_log" combined
 
 # ----- balancer-managerで分散状況を確認したいなら ------
 ProxyPass /balancer-manager !
 <Location /balancer-manager>
   SetHandler balancer-manager
   order deny,allow
   deny from all
   allow from xxx.xxx.x
 </Location>
 
 # ----- balancerの設定 ------
 ProxyRequests Off
 ProxyPreserveHost On
 <Proxy balancer://cluster/>
   BalancerMember http://127.0.0.1:8001 loadfactor=10 route=11
   BalancerMember http://xxx.xxx.x.8 loadfactor=20 route=8 redirect=11
   BalancerMember http://xxx.xxx.x.7 loadfactor=20 route=7 redirect=11
   BalancerMember http://xxx.xxx.x.6 loadfactor=20 route=6 redirect=11
   ProxySet lbmethod=byrequests
   ProxySet stickysession=BALSESSID|balsessid
   ProxySet nofailover=On
   ProxySet timeout=1
   ProxySet maxattempts=1
 </Proxy>

 <Directory "/Users/xxxxx/xxxxx/xxxxx/xxxxx">
   AllowOverride None
   RewriteEngine on
   RewriteBase /
   
   # ----- wwwなしをwwwつきに ------
   RewriteCond %{HTTP_HOST} ^rottel.net$ [NC]
   RewriteRule ^(.*) http://www.rottel.net/$1 [L,R=301]
   
   # -----------
   #ファイル・ディレクトリとして存在する、balancer-managerなら何もしない
   # -----------
   RewriteCond %{REQUEST_FILENAME} -f [OR]
   RewriteCond %{REQUEST_FILENAME} -d [OR]
   RewriteCond %{REQUEST_URI} ^/balancer-manager
   RewriteRule ^(.*) - [L]
   
   # ----- /ならbalancerへ(DirectoryIndex index.htmlなので) -----
   RewriteCond %{REQUEST_URI} ^/index.html
   RewriteRule ^(.*)$ balancer://cluster/index.php [P,L,QSA]
   
   # ----- /imgやuploaderなど以外をbalancerへ ------
   RewriteCond %{REQUEST_URI} !^/(img$|uploader$|swfupload$|ajax_m$|setting$|setting/.*)
   RewriteRule ^(.*)$ balancer://cluster/index.php?q=$1 [P,L,QSA]
   RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]
 </Directory>
</VirtualHost>

Pは、ProxyのPらしい。
Lは、そこで処理が止まるらしい。
QSAは、クエリーをそのまま引き渡すらしい。
[OR]をつけないと[AND]らしい。

mod_proxy_balancerメモ

ブログ | 2009/8/26 01:16
まず知っておきたいことはコレ。
「mod_proxy_balancerの設定反映はrestartで」
http://syo.cocolog-nifty.com/freely/2008/10/mod_...

graceful, graceful, graceful, graceful, gracefulしても、stickysessionが反映されず、昨晩は挫折した。

Apache モジュール mod_proxy
http://httpd.apache.org/docs/2.2/ja/mod/mod_prox...
Apache モジュール mod_proxy_balancer
http://httpd.apache.org/docs/2.2/ja/mod/mod_prox...

さて、実践メモ。
VirtualHost単位で、ロードバランスする。
<VirtualHost *:80>
 DocumentRoot "/Users/****/****/public_html"
 ServerName www.*****.com
 ServerAlias *****.com
 ScriptAlias /cgi-bin/ "/Users/****/***/cgi-bin"
 ErrorLog "/var/log/apache2/****_error_log"
 LogLevel emerg
 CustomLog "/var/log/apache2/****_access_log" combined
 
 ProxyPass /balancer-manager !
 <Location /balancer-manager>
   SetHandler balancer-manager
   order deny,allow
   deny from all
   allow from ***.***.*
 </Location>
 
 ProxyRequests Off
 ProxyPreserveHost On
 
 ProxyPass /files !
 ProxyPass /uploader.php !
 ProxyPass /img.php !
 ProxyPass / balancer://cluster/ lbmethod=byrequests stickysession=BALSESSID nofailover=On timeout=1 maxattempts=1
 ProxyPassReverse / balancer://cluster/
 <Proxy balancer://cluster/>
   BalancerMember http://127.0.0.1:8001 loadfactor=10 route=1
   BalancerMember http://192.168.1.2 loadfactor=10 route=2 redirect=1
   BalancerMember http://192.168.1.3 loadfactor=10 route=3 redirect=1
 </Proxy>
</VirtualHost>
こんな感じか。ルートじゃない場合は、
 ProxyPass /test/ balancer://cluster/test/ lbmethod=byrequests stickysession=BALSESSID nofailover=On timeout=1 maxattempts=1
 ProxyPassReverse /test/ balancer://cluster/test/
 <Proxy balancer://cluster/>
   BalancerMember http://127.0.0.1:8001 loadfactor=10 route=1
   BalancerMember http://192.168.1.2 loadfactor=10 route=2 redirect=1
   BalancerMember http://192.168.1.3 loadfactor=10 route=3 redirect=1
 </Proxy>
こんな感じとか。

同一サーバーにも、ポート8001で飛ばしてるので、
Listen 8001
NameVirtualHost *:8001
<VirtualHost *:8001>
 DocumentRoot "/Users/****/****/public_html"
 ServerName *********.com
 ServerAlias www.*********.com
</VirtualHost>
こんなのを書いたり。

ワーカー側(MySQLで言うところのマスターとスレーブは、バランサーとワーカーという呼び方でいいのかしら?)では、普通にVirtualHostを設定する。

ProxyPass /files !
この辺りの書き方は、files以下はスルーするよ(ワーカーに飛ばさないよ)という意味。

で、同じユーザーをあちこちのサーバーに飛ばすと、セッションが維持されなくて、いろいろ不都合が生じる。その設定が「stickysession=BALSESSID」。PHPが勝手につくるPHPSESSIDは、文字列に「.」を持てないからNG。適当な名前のcookieをsetcookie()なんかでつくる。
if(empty($_COOKIE['BALSESSID'])){
 setcookie('BALSESSID','balancer.2',0);
}
とか。「xxxxxxxx.2」のような値にするのが肝。この数字が「route=2」に対応する。

普通のサイトなら、これでrestartすれば動くんじゃないかと思う。

僕の場合、drupal式(今のは知らない)に.htaccessで
<IfModule mod_rewrite.c>
 RewriteEngine on
 RewriteCond %{HTTP_HOST} ^xxxxxx.com$ [NC]
 RewriteRule ^(.*) http://www.xxxxxx.com/$1 [L,R=301]
 RewriteCond %{REQUEST_FILENAME} !-f
 RewriteCond %{REQUEST_FILENAME} !-d
 RewriteRule ^(.*)$ /30maps/public_html/index.php?q=$1 [L,QSA]
</IfModule>
こんなのを書いてるから、balancer-managerの記述を追加。
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !^/balancer-manager
RewriteRule ^(.*)$ /30maps/public_html/index.php?q=$1 [L,QSA]
balancer-managerは、一時的に分散させる比率を変えられたりするので、あった方が面白い。

分散を考慮して、サイトのプログラムもやや修正。画像の表示やファイルのアップロード関係は、どこかのサーバーにまとめる必要がある
 ProxyPass /uploader.php !
 ProxyPass /img.php !
これがそのあたり。これらのURLはマスターへの意。uploaderなんかは、ログインしてるかどうかの判別が必要だから、DBを叩く。


不具合も出そうだけれども、次のステップに入ったということでしばらく様子見。
▼追記 2009/8/27 01:59
IPの取得に使っている
$_SERVER['REMOTE_ADDR']
が、バランサーのIPになってしまう。

PHP5.3の省略三項演算子で、
$host = @$_SERVER['HTTP_X_FORWARDED_FOR'] ?: $_SERVER['REMOTE_ADDR'];
こうすることにした。

携帯adsenseを見たら、アクセスがゼロになっていて、タイミング的にこれだろうということで検索をしたら、
「モバイル向けAdsenseが、表示回数やクリック数がカウントされない件。」
http://blog.mynet.co.jp/hirashima/2008/11/adsens...
で、スバリヒット。

上記サイトを参照に下記のようにして、カウントが再開された。
//$GLOBALS['google']['host']=$_SERVER['HTTP_HOST'];
//$GLOBALS['google']['ip']=$_SERVER['REMOTE_ADDR'];
$GLOBALS['google']['host']= @$_SERVER['HTTP_X_FORWARDED_HOST'] ?:$_SERVER['HTTP_HOST'];
$GLOBALS['google']['ip']= @$_SERVER['HTTP_X_FORWARDED_FOR'] ?: $_SERVER['REMOTE_ADDR'];

//$GLOBALS['google']['url']=$_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
$GLOBALS['google']['url']=$GLOBALS['google']['host'] . @$_SERVER['REQUEST_URI'];

ところで、
モバイルサイト用のGoogle analyticsは、出ないのだろうか。
前 | 1 | 2 |

Rottel内コンテンツ

ユーザー一覧

Rottelとは?
利用規約
開発飲料
利用者の声
ヘルプ
close