タグ: apache2 を抽出しています。
Total: 5

androidだけjavascriptが文字化け

ブログ | 2011/8/11 00:37
Androidというか、IS03だけjavascriptの日本語が文字化けする現象。そのサーバーだけ。

で、あれこれ悩んだ末に、httpd.confに下記を追加して終了。
AddType "application/x-javascript; charset=UTF-8" .js

apacheを監視して、落ちてたら起動のsh

ブログ | 2010/5/6 22:40
昨夜、予期せずapacheが落ちるという事態があったので、そんなのを仕込んどいてみる。

apacheCheck.sh
#!/bin/sh

pids=`ps ax | grep apacheCheck.sh | grep -v grep | awk '{print $1}'`
#echo $pids

i=0
for pid in ${pids[*]}
do
 i=`expr $i + 1`
done

if [ $i -le 2 ]; then
 while true
 do
   isAlive=`ps -ef | grep httpd | grep -v grep | wc -l`
   #echo $isAlive
   if [ $isAlive -eq 0 ]; then
     echo `date "+%Y/%m/%d-%H:%M:%S"` apache is down!!!!!
     /opt/local/apache2/bin/apachectl graceful
     
     ADDRESS="メール@アドレスだよ"
     SUBJECT="Apache is down!!"
     MESSAGE=`hostname`
     mail -s "$SUBJECT" $ADDRESS <<EOF
$MESSAGE
EOF
   fi
   sleep 60
 done
else
 echo `date "+%Y/%m/%d-%H:%M:%S"` apacheCheck.sh is already active.
fi
  • 60秒毎にhttpdのプロセスがあるかチェックして、落ちてたら、gracefulで起動する。
  • このshが既に動いているならスルー。
  • このshが落ちてたら嫌なので、一応crontabで毎時で実行。
  • 落ちてたら、メールもしてみる。
  • マシンそのものが落ちたら諦めよう。
  • MySQLが落ちても諦めよう。
▼追記 2010/5/6 23:26
失敗。crontabだとジョブが終了する。

こいつを毎分で動かせばいいんじゃ!
#!/bin/sh

isAlive=`ps -ef | grep httpd | grep -v grep | wc -l`
#    echo $isAlive
if [ $isAlive -eq 0 ]; then
 echo `date "+%Y/%m/%d-%H:%M:%S"` apache is down!!!!!
 /opt/local/apache2/bin/apachectl graceful
 
 ADDRESS="メール@アドレスだよ"
 SUBJECT="Apache is down!!"
 MESSAGE=`hostname`
 mail -s "$SUBJECT" $ADDRESS <<EOF
$MESSAGE
EOF
fi
▼追記 2010/11/29 23:34
どうもapacheが変な落ち方をすると、httpdが残るようだ。で、リスタートもできなかったりする。判別をcurlにする。あと、gracefulだとmod_proxy_balancerがだめだからrestartに。あと、リスタート前に残っている「httpd」をkill。

#!/bin/sh

isAlive=`curl -s --head http://localhost | head -n 1 | grep "^HTTP/" | wc -l`
#echo $isAlive
if [ $isAlive -eq 0 ]; then
 echo `date "+%Y/%m/%d-%H:%M:%S"` apache is down!!!!!
 pid=`ps -axw | grep "httpd" | awk '{print $1}'`
 kill $pid
 /opt/local/apache2/bin/apachectl restart
 
 ADDRESS="メール@アドレスだよ"
 SUBJECT="Apache is down!!"
 MESSAGE=`hostname`
 mail -s "$SUBJECT" $ADDRESS <<EOF
$MESSAGE
EOF
fi

curlはここを参考
http://ja.efreedom.com/Question/1-2924422/シェル-スク...

502エラーがでるのは、

ブログ | 2010/5/6 00:26
ProxyTimeout 180
を書いてなかったからかな。

http://httpd.apache.org/docs/2.2/ja/mod/mod_prox...
デフォルト300秒ってあるから、書かなくていいと思ってたよん。

グローバルのTimeout秒で、502が返ってきていたのだろうか。

Apache2.2 PHPで生成の画像・JS・CSSのブラウザキャッシュ

ブログ | 2010/2/20 01:06
以前に「PHPで生成したCSSなどをキャッシュする。」
http://www.rottel.net/kuwa/3126
というメモを書いたのだけれど、昨日ふとブラウザキャッシュが効いてないことに気がつきました。なんてことだ。(ブロードバンドのせいにしといてみる)

それに気がつくと、帯域を使いすぎている原因がソレだということで、いろいろ合点がいきました。

awstatsで見ると、去年の8/25からガツンと転送量が増えていて、ちょうどそのころ新しいmacminiにメインサーバーを交換したことから、その時にapache2からapache2.2にしてたんじゃないかと思い当たります。

今回検索してみたら、apache2.2でキャッシュ関係が強化されたのは、常識みたいです。

まず、下記ページを参照して、httpd.confにExpires関係を追加
http://bali.sakura.ne.jp/サーバー/apache-cache-contr...

ExpiresActive On
ExpiresByType text/css "access plus 100 days"
ExpiresByType application/x-javascript "access plus 100 days"
ExpiresByType image/gif "access plus 100 days"
ExpiresByType image/jpg "access plus 100 days"
ExpiresByType image/jpeg "access plus 100 days"
ExpiresByType image/png "access plus 100 days"

<FilesMatch ".(ico|jpg|jpeg|png|gif|js|css|swf|mov)$">
 Header set Cache-Control "max-age=8640000"
</FilesMatch>

で、PHPの出力でキャッシュを有効にする記述
例えば、jpegの場合は、
<?php

if(array_key_exists("If-Modified-Since", apache_request_headers())){
 header("HTTP/1.1 304 Not Modified");
 exit();
}

header('Content-Type: image/jpeg');
header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT");

?>
ブラウザから、If-Modified-Sinceがリクエストされた場合は、304だけを返して終了させてしまうのである。

ということで、様子見中。
▼追記 2010/2/20 14:48
ExpiresByType text/plain “access plus 30 days”
ExpiresByType text/html “access plus 30 days”
この辺りを入れると、PHPでのhtml出力もheaderにmax-ageが入り、キャッシュされてしまったので、削除。

なんとなく分かったこと、
ExpiresByType で設定すると、phpでのjs出力などには、headerにmax-ageが入るけれど、普通のtest.jsなどには入らない。

普通のファイルには、FilesMatchでファイル名を選び、
Header set Cache-Control "max-age=8640000"
で、 headerにmax-ageを入れる。

ということで、更に様子見。
変な挙動がでていたら、リロードしてみて下さい。
▼追記 2010/2/22 22:37
転送量、まったく改善されてない。なぜだ。

mod_rpaf

ブログ | 2010/1/22 18:26
mod_proxy_balancerで、ワーカー側のアクセスログがバランサーのIPになるので、それを変える。(なんとなくバランサーのログに全部残るのではないかと思っていたのだけれど、そんなことはないようなので)

で、調べるとapacheにmod_rpafというのを入れると、IPが変わるらしい。で、macportsでsearchしてみるがない。

で、根性で入れてみる。

以下、macportsで入れたapacheにmod_rpafを入れる方法です。

[参考]
http://d.hatena.ne.jp/lllliiii/20080519

[準備]
wget がなければ、
sudo port install wget
/opt/local/src がなければ、
sudo mkdir /opt/local/src

[mod_rpafのインストール]
cd /opt/local/src
sudo wget http://stderr.net/apache/rpaf/download/mod_rpaf-0.6.tar.gz
sudo tar -xvf mod_rpaf-0.6.tar.gz
cd mod_rpaf-0.6
sudo emacs Makefile

Makefileを書き換え
#APXS=$(shell which apxs)
#APXS2=$(shell which apxs2)
APXS2=/opt/local/apache2/bin/apxs

sudo make rpaf-2.0
sudo make install-2.0

httpd.confに追記
LoadModule rpaf_module modules/mod_rpaf-2.0.so
RPAFenable On
RPAFsethostname Off
RPAFproxy_ips xxx.xxx.xxx.xxx (balancerのip)

で、apacheをgraceful
/opt/local/apache2/bin/apachectl configtest
sudo /opt/local/apache2/bin/apachectl graceful

ログファイルで、IPが入っていることを確認する。

・・・
awstatsを見ると、Googlebotのアクセスだけで、転送量が月間100GBを優に超えているのだけれど、これはいけない気がするので、なんとかしようと思う。
前 | 1 | 次

Rottel内コンテンツ

ユーザー一覧

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