2010.02.10

Category: Apache, Command, Shell / Tags:

logrotateで日付付のログをバックアップする。

過去に
「logrotate & bash で日付付のログをバックアップする。」
っていうのをメモっているけど、別ファイルのbashをつくるのもめんどうなのでより簡単メモ

/var/log/httpd/*log {
daily
rotate 10
create
compress
missingok
notifempty
sharedscripts
postrotate
/sbin/service httpd reload > /dev/null 2>/dev/null || true
EXT=date +%Y%m%d -d ‘1 days ago’
for f in $1;
do mv $f.1.gz $f.$EXT.gz;
done
endscript
}

EXT=date +%Y%m%d -d ‘1 days ago’
for f in $1;
do mv $f.1.gz $f.$EXT.gz;
done

が追加分、corn では、通常4時2分に起動するので、基本的に前日の日付をつけておく。
でもって、ローテートしたファイルをリネームしているだけ、
これだと、本来、「rotate 10」のところは、1でもいいのだけど、念のための保険で10回
にしているだけです。
こっちの方が簡単だな。

追記:2010.02.23
EXT=date +%Y%m%d -d ‘1 days ago’
の部分をそのままコピペすると、WPが変換かけてるのでうごきません。
「1 days ago」をシングルコーテーションで囲み直して、
「date +%Y%m%d -d ‘1 days ago’」全体を実行演算子で囲んでください。

でもって、バージョンの違いかわからないけど、compress が postrotate
の後に行われる場合がある。こうなると日付のファイル名にリネーム
できなくなる。(gzで圧縮した後のファイル名をリネームしようとしてるので)

という事で、さらに改訂。compressをlogrotateにまかせずに。

/var/log/httpd/*/*log {
daily
rotate 10
create
missingok
notifempty
sharedscripts
postrotate
/sbin/service httpd reload > /dev/null 2>/dev/null || true
EXT=date +%Y%m%d -d ‘1 days ago’
for f in $1;
do
if [ -e $f.1 ] ; then
gzip $f.1;
mv $f.1.gz $f.$EXT.gz;
fi
done
endscript
}

といった形で、postrotateのなかでしてしまう。先に、killプロセス送っているので
ログも新しいファイルに書き出されているので、圧縮中のログが消える心配も
ないので、こちらの方がいいかも。

2009.10.15

Category: Apache, 未分類 / Tags:

RedirectMatch のリダイレクト先URLで、&(アンパサンド)がある場合

RedirectMatch のリダイレクト先のURLの中に、&(アンパサンド)がある場合、
置換されてしまう。

RedirectMatch ^/test/?  http://www.pictnotes.jp?param1=hoge&param2=fuga

RedirectMatch ^/test/? http://www.pictnotes.jp?param1=hoge/test

RedirectMatch ^(/test/?)  http://www.pictnotes.jp?param1=hoge&param2=fuga

RedirectMatch ^(/test/?)  http://www.pictnotes.jp?param1=hogeparam2=fuga
(&が消えている状態)

&を使うためには、エスケープしてあげればOK

RedirectMatch ^(/test/?)  http://www.pictnotes.jp?param1=hoge\&param2=fuga
& -> \&

imodeで301ステータスがでてリダイレクトしてしまう原因

imode(ドコモ)のみ 「サイトが移動しました(301)」
と出る場合は、リンクの書き方を疑ってみると吉
一階層下のhogeフォルダに移動する場合
<a href=”hoge”>hogeフォルダに移動</a>
としていると、301になる。
<a href=”hoge/”>hogeフォルダに移動</a>
と、最後にきちんと /(スラッシュ)を付けるのが正解。
おそらく、サーバ側で自動で/(スラッシュ)を補完している挙動の部分を拾っているみたい。

ssl imode ドコモ docomo 画像 再呼び込み 通信 KeepAlive 連続

訳の分からないタイトルですが、
imode で、SSLのページにおいて、何度もSSL通信をしてしまう現象が
おきた場合は、
apache の設定の
KeepAlive の所を見直す、とたぶん Offになっているので、ここをOnにする
KeepAlive Off
から
KeepAlive On
ですね、なかなか検索しても出てこないので、タイトルをなんとなく
検索キーワードに近づけてみました。
http://www.bitwin.ne.jp/blog/?p=3
とかに詳しくかいてます。
http://www.nttdocomo.co.jp/service/imode/make/content/ssl/flow/

* Keep-Aliveする場合の動作
最初の画面だけハンドシェイク(次回以降、暗号化通信のみ)
* Keep-Aliveしない場合の動作
毎画面表示のたびにハンドシェイク
と書いてあるので、この現象が起きてた状態ですね。

2008.06.27

Category: Apache / Tags:

WEBサーバーのセットアップ Red Hat Enterprise Linux 5 とか

yum コマンド や up2date とかで入っているものを一度最新にしておきます。
# yum check-update
# yum update
必要であれば、その後各種rpm等をインストールしてください。
どうしても、最新バージョンとかでソースから入れる必要があるのであれば
一度 rpmをインストールして依存関係があるものをいれていまって、
アンインストールしたのち、ソースから入れるとかすると依存関係に悩む事が少なく
なります。ただし、要らないものもはいると言われればそうなので、
そういうのが嫌な人はしないほうがいいです。
webサーバーはすでに入っている場合は、ログの場所を修正
アパッチのログを修正
www.example.com の場合、ぼくは
/var/log/httpd/www.example.com//var/log/httpd/www.example.com/
となるようにフォルダを作成します。
アクセスログは
/var/log/httpd/www.example.com/www.example.com-access_log
/var/log/httpd/www.example.com/www.example.com-error_log
となる感じです
場合によって、 www.example.com-access_log env=nolog
とかで、jpugとかを取らないようにします。(nologは別途設定がひつようですよ)
httpd.confの修正
# cd /etc/httpd/conf/
# mkdir backup
# mv httpd.conf.rpmsave backup/
# mv httpd.conf.rpmnew backup/
# cp httpd.conf backup/httpd.conf.080610
# vi httpd.conf
–ここから
ServerAdmin root@exsample.com
ServerName exsample.com:80

Options -Indexes FollowSymLinks ExecCGI Includes
AllowOverride All


UserDir disable

DirectoryIndex index.html index.htm index.html.var
ErrorLog logs/www.exsample.com/www.exsample.com-error_log
CustomLog logs/www.exsample.com/www.exsample.com-access_log combined
ServerSignature Off # varsionによる
#vhosts
NameVirtualHost 000.000.000.00:80
–ここまで
ついでに、テスト用のサブドメインのサイトをつくっておきます
# cd ../conf.d/
# vi test.exsample.com.conf
–ここから

ServerAdmin webmaster@test.exsample.com
DocumentRoot “/var/www/vhosts/test.exsample.com/html”
ServerName test.exsample.com

Options All -Indexes
AllowOverride All

ErrorLog logs/test.exsample.com/test.exsample.com-error_log
CustomLog logs/test.exsample.com/test.exsample.com.com-access_log combined

–ここまで
フォルダ等を作成
# mkdir /var/www/vhosts
# mkdir /var/www/vhosts/test.exsample.com
# mkdir /var/www/vhosts/test.exsample.com/html
# cp test.exsample.com www.exsample.com // 設定をまねして作成
(省略、すべてバーチャルで管理するので)
sslの設定もついでに
# vi ssl.conf
-#DocumentRoot “/var/www/html”
-#ServerName www.example.com:443
+DocumentRoot “/var/www/html”
+ServerName www.exsample.com:443
-ErrorLog logs/ssl_error_log
-TransferLog logs/ssl_access_log
+ErrorLog logs/www.exsample.com.com/www.exsample.com-error_log
+CustomLog logs/www.exsample.com/www.exsample.com-access_log combined
#httpと同じ出力先になるように設定
-CustomLog logs/ssl_request_log \
+CustomLog logs/www.exsample.com/www.exsample.com.com-ssl_request_log \
確認
# apachectl -t
Syntax OK
vhostsの設定も確認
# apachectl -t -D DUMP_VHOSTS
VirtualHost configuration:
xxx.xxx.xxx.xxx:80 is a NameVirtualHost
default server test.exsample.com (/etc/httpd/conf.d/test.exsample.com.conf:1)
port 80 namevhost test.exsample.com (/etc/httpd/conf.d/test.exsample.com.conf:1)
port 80 namevhost www.exsample.com (/etc/httpd/conf.d/www.exsample.com.conf:1)
wildcard NameVirtualHosts and _default_ servers:
_default_:443 exsample.com (/etc/httpd/conf.d/ssl.conf:81)
Syntax OK
再起動
# apachectl restart
# ps ax | grep httpd
起動ができてなければ、エラーログをチェックして修正
ログローテーションの修正
# cd /etc/logrotate.d/
# cp httpd
httpd httpd.rpmnew
# cp httpd www.exsample.com
# cp httpd test.exsample.com
– デフォルトは
weekly
rotate 4
で一ヶ月ってところなので、1年とか2年とかに修正
rotate 105
/var/log/httpd/test.exsample.com/*log {
rotate 105
missingok
notifempty
sharedscripts
postrotate
/sbin/service httpd reload > /dev/null 2>/dev/null || true
endscript
}

2008.05.30

Category: Apache / Tags:

過去のメモから – apache のログのローテーション

http://taizooo.g.hatena.ne.jp/keyword/apache%20log%20rotate
の、解説が便利です。
■ apache の log rotate の方法
* rotatelogs
o apache 付属のツール
o /usr/local/sbin/rotatelogs
o ログファイルを自動的に消さない
o log.YYYY-mm-dd といった日付をつけることができる.
* newsyslog
o FreeBSD システムツール
o /usr/sbin/newsyslog
o 指定した世代数を超えると、それより古いログファイルは自動的に削除
o log.0 , log.1 , log.2 といった名称になる
* logrotate
o ports ツリーの sysutils/logrotate
o 指定した世代数を超えると、それより古いログファイルは自動的に削除
o log.YYYY-mm-dd といった日付をつけることができる.
* daemontools
o これはある意味、飛び道具
o apache を daemontools でうごかして multilog で log をとる
– ここまで引用
こちらは、ログの名称に日時を入れたいので、logrotate か rotatelogs
を入れるようにする。

2008.05.28

Category: Apache / Tags:

apacheの設定で初期にする事もろもろ

httpd.confの初期設定設定とかvhostを加える場合のメモ
1.document root の作成
/var/www/vhost/{new.host.name}/html
/var/www/vhost/{new.host.name}/cgi-bin
の作成
2.logフォルダの作成
/var/log/httpd/{new.host.name}/
3.httpd.confの編集
3-1.初期は
Listen 0.0.0.0:80
User apache
Group apache
ServerAdmin root@localhost
DocumentRoot “/var/www/html”
Options Indexes FollowSymLinks -> Indexesの設定は取っておくのがベター
AllowOverride None -> .htaccess を使う場合は ALLとか
DirectoryIndex index.html index.php index.cgi -> 必要に応じて、優先順位を変更
ErrorLog logs/error_log -> 今後vhostとかふえるのなら、フォルダを別けて管理がベター
CustomLog logs/access_log combined -> combined 形式がいい、場合によって画像とかを取得しない環境変数を追加
あたりを、チェック
3-2. vhostsの追加には
/etc/httpd/conf.d/vhosts.conf に追記するのがベター

ServerAdmin webmaster@ahaut.jp
DocumentRoot /var/www/vhosts/{new.host.name}/html
ServerName {new.host.name}
ServerAlias {host.name}
ErrorLog /var/log/httpd/{new.host.name}/{new.host.name}-error_log
CustomLog /var/log/httpd/{new.host.name}/{new.host.name}-access_log combined

AllowOverride All

ScriptAlias /cgi-bin/ “/var/www/vhosts/{new.host.name}/cgi-bin/”

AllowOverride None
Options FollowSymLinks ExecCGI
Order allow,deny
Allow from all


とか、
4.確認
[root@lot conf]# apachectl -t
[root@lot conf]# apachectl -t -D DUMP_VHOSTS
とかで、設定の確認
5.状況によってはssl.confの設定もわずれずに

2008.05.27

Category: Apache / Tags:

サーバー情報を出さないようにする方法

ServerTokens Prod
or
ServerTokens ProductOnly
adn
ServerSignature Off
とかに設定を変更すること。

2007.09.27

Category: Apache / Tags:

画像のログ等を取得しない方法

画像やcssのlogを記録しないようにするためには、httpd.conf の中に下記の設定を記載
すればOK
拡張子が .gif .jpg .png .css .swf .js の場合、アクセスログには記載しない。

SetEnvIf Request_URI “\.((gif)|(jpg)|(png)|(css)|(swf)|(js))$” nolog

を、LogFormat あたりのディレクティブに記載。
あとは、アクセスログの指定をしているところに

env=!nolog

を追加記載してあげればOK
具体的には、

SetEnvIf Request_URI “\.((gif)|(jpg)|(png)|(css)|(swf)|(js))$” nolog
CustomLog /var/logs/httpd/access_log combined env=!nolog

の様な記載で、
/var/logs/httpd 以下に、拡張子が .gif .jpg .png .css .swf .js の場合以外の access_log
が、 combined 形式で記載されます。

2007.08.16

Category: Apache, Tomcat, WAS / Tags:

アクセス制限 apache tomcatの違い

.htaccess でアクセス制限をかけても、jspファイルは閲覧できてしまいます。
それは、 .htaccess がapacheの機能による所なので、
jspには適応されません。 jspファイルにアクセス制限をかけたい場合は
tomcat のserver.xml に記載してあげる必要があります。
書き方は他のサイトを参考にしてください。
tomcat 認証 by google

« Older Entries