ラベル Apache の投稿を表示しています。 すべての投稿を表示
ラベル Apache の投稿を表示しています。 すべての投稿を表示

2012-11-29

Apacheアクセスログのアクセス時刻をミリ秒,マイクロ秒単位で出力する

Apacheの2.4系からはミリ秒,マイクロ秒の出力ができるとのこと。
sec number of seconds since the Epoch
msec number of milliseconds since the Epoch
usec number of microseconds since the Epoch
msec_frac millisecond fraction
usec_frac microsecond fraction

http://httpd.apache.org/docs/2.4/en/mod/mod_log_config.htmlより
ISO 8601形式で出力するならこんな感じ
LogFormat "%h %l %u %{%Y-%m-%dT%H:%M:%S,}t%{msec_frac}t+09:00 \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" millisec
LogFormat "%h %l %u %{%Y-%m-%dT%H:%M:%S,}t%{usec_frac}t+09:00 \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" microsec
でこんな感じに出ます
xxx.xxx.xxx.xxx - - 2012-11-29T11:44:21,023+09:00 - "/" "Mozilla/5.0"
xxx.xxx.xxx.xxx - - 2012-11-29T11:44:21,023456+09:00 - "/" "Mozilla/5.0"

2012-09-07

AWS EC2上のCentOS5.8でhttpd-2.4.3(Apache2.4.3)のrpmを作成

まずは依存モジュールをyumで削除&インストール
yum -y erase apr
yum -y install db4-devel expat-devel postgresql-devel sqlite-devel freetds-devel unixODBC-devel nss-devel mysql-devel distcache-devel libuuid-devel lksctp-tools-devel doxygen openldap-devel openssl-devel pcre-devel lua-devel
yumでは入らない依存モジュールのダウンロード&ビルド&インストール
wget http://ftp.jaist.ac.jp/pub/apache/apr/apr-1.4.6.tar.bz2
rpmbuild -tb apr-1.4.6.tar.bz2
yum install --nogpgcheck /usr/src/redhat/RPMS/x86_64/apr-*

wget http://ftp.jaist.ac.jp/pub/apache/apr/apr-util-1.4.1.tar.bz2
rpmbuild -tp --nodeps apr-util-1.4.1.tar.bz2
sed -i "s/libuuid-devel/e2fsprogs-devel/" /usr/src/redhat/BUILD/apr-util-1.4.1/apr-util.spec
mv apr-util-1.4.1.tar.bz2 /usr/src/redhat/SOURCES
rpmbuild -bb /usr/src/redhat/BUILD/apr-util-1.4.1/apr-util.spec
とやったところ、テストでエラー(´・ω・`)
teststrmatch        : SUCCESS
testuri             : SUCCESS
testuuid            : SUCCESS
testbuckets         : SUCCESS
testpass            : SUCCESS
testmd4             : SUCCESS
testmd5             : SUCCESS
testcrypto          : 
passphrase: KEY_3DES_192/MODE_CBC nss native error -8128:  (SEC_ERROR_NO_MODULE)
passphrase: KEY_3DES_192/MODE_CBC nss native error -8128:  (SEC_ERROR_NO_MODULE)
passphrase: KEY_AES_256/MODE_CBC nss native error -8128:  (SEC_ERROR_NO_MODULE)
passphrase: KEY_AES_256/MODE_CBC nss native error -8128:  (SEC_ERROR_NO_MODULE)
passphrase: KEY_AES_256/MODE_ECB nss native error -8128:  (SEC_ERROR_NO_MODULE)
passphrase: KEY_AES_256/MODE_ECB nss native error -8128:  (SEC_ERROR_NO_MODULE)
passphrase: KEY_AES_192/MODE_CBC nss native error -8128:  (SEC_ERROR_NO_MODULE)
passphrase: KEY_AES_192/MODE_CBC nss native error -8128:  (SEC_ERROR_NO_MODULE)
passphrase: KEY_AES_192/MODE_ECB nss native error -8128:  (SEC_ERROR_NO_MODULE)
passphrase: KEY_AES_192/MODE_ECB nss native error -8128:  (SEC_ERROR_NO_MODULE)
passphrase: KEY_AES_128/MODE_CBC nss native error -8128:  (SEC_ERROR_NO_MODULE)
passphrase: KEY_AES_128/MODE_CBC nss native error -8128:  (SEC_ERROR_NO_MODULE)
passphrase: KEY_AES_128/MODE_ECB nss native error -8128:  (SEC_ERROR_NO_MODULE)
passphrase: KEY_AES_128/MODE_ECB nss native error -8128:  (SEC_ERROR_NO_MODULE)
passphrase: KEY_3DES_192/MODE_CBC nss native error -8128:  (SEC_ERROR_NO_MODULE)
passphrase: KEY_3DES_192/MODE_CBC nss native error -8128:  (SEC_ERROR_NO_MODULE)
passphrase: KEY_AES_256/MODE_CBC nss native error -8128:  (SEC_ERROR_NO_MODULE)
passphrase: KEY_AES_256/MODE_CBC nss native error -8128:  (SEC_ERROR_NO_MODULE)
passphrase: KEY_AES_192/MODE_CBC nss native error -8128:  (SEC_ERROR_NO_MODULE)
passphrase: KEY_AES_192/MODE_CBC nss native error -8128:  (SEC_ERROR_NO_MODULE)
passphrase: KEY_AES_128/MODE_CBC nss native error -8128:  (SEC_ERROR_NO_MODULE)
passphrase: KEY_AES_128/MODE_CBC nss native error -8128:  (SEC_ERROR_NO_MODULE)
passphrase: KEY_3DES_192/MODE_CBC nss native error -8128:  (SEC_ERROR_NO_MODULE)                                                          passphrase: KEY_AES_256/MODE_CBC nss native error -8128:  (SEC_ERROR_NO_MODULE)
passphrase: KEY_AES_256/MODE_ECB nss native error -8128:  (SEC_ERROR_NO_MODULE)
passphrase: KEY_3DES_192/MODE_CBC nss native error -8128:  (SEC_ERROR_NO_MODULE)                                                          passphrase: KEY_AES_256/MODE_CBC nss native error -8128:  (SEC_ERROR_NO_MODULE)
passphrase: KEY_3DES_192/MODE_CBC nss native error -8128:  (SEC_ERROR_NO_MODULE)
passphrase: KEY_AES_256/MODE_CBC nss native error -8128:  (SEC_ERROR_NO_MODULE)
passphrase: KEY_AES_256/MODE_ECB nss native error -8128:  (SEC_ERROR_NO_MODULE)
passphrase: KEY_3DES_192/MODE_CBC nss native error -8128:  (SEC_ERROR_NO_MODULE)
passphrase: KEY_AES_256/MODE_CBC nss native error -8128:  (SEC_ERROR_NO_MODULE)
FAILED 6 of 13
testldap            : SUCCESS
testdbd             : SUCCESS
testdate            : SUCCESS
testmemcache        : SUCCESS
testxml             : SUCCESS
testxlate           : SUCCESS
testrmm             : SUCCESS
testdbm             : SUCCESS
testqueue           : SUCCESS
testreslist         : SUCCESS
Failed Tests            Total   Fail    Failed %
===================================================
testcrypto                 13      6     46.15%
Programs failed: testall
make: *** [check] エラー 1
+ exit 1
エラー: /var/tmp/rpm-tmp.35396 の不正な終了ステータス (%check)
調べてみた感じだとこのあたりにバグ報告されてて解決されてない??
てことで、とりあえずテストすっ飛ばしてビルドしちゃいました(…大丈夫か?)
sed -i "s/libuuid-devel/e2fsprogs-devel/" /usr/src/redhat/BUILD/apr-util-1.4.1/apr-util.spec
sed -i "s/make check || exit 1/make check || \"continue\"/" /usr/src/redhat/BUILD/apr-util-1.4.1/apr-util.spec
rpmbuild -bb /usr/src/redhat/BUILD/apr-util-1.4.1/apr-util.spec
yum install --nogpgcheck /usr/src/redhat/RPMS/x86_64/apr-util-*
wget http://ftp.kddilabs.jp/infosystems/apache/httpd/httpd-2.4.3.tar.bz2
rpmbuild -tp httpd-2.4.3.tar.bz2
mv httpd-2.4.3.tar.bz2 /usr/src/redhat/SOURCES
sed -i "s/%{epoch}://g" /usr/src/redhat/BUILD/httpd-2.4.3/httpd.spec
rpmbuild -bb /usr/src/redhat/BUILD/httpd-2.4.3/httpd.spec
yum install --nogpgcheck /usr/src/redhat/RPMS/x86_64/httpd-*
で、出来上がりヾ(*・ω・)シ

AWS EC2上のCentOS6.2でhttpd-2.4.3(Apache2.4.3)のrpmを作成

ググってみると色々参考記事はあったのですがどうもAWSのEC2上だと
ipv6が有効になってなかったりが原因なのか失敗してしまったので成功したやりかたのメモです。
まずは、依存モジュールのインストール
yum -y install libselinux-devel pcre-devel openldap-devel lua-devel openssl-devel libuuid-devel lksctp-tools-devel db4-devel expat-devel postgresql-devel sqlite-devel freetds-devel unixODBC-devel nss-devel mysql-devel
yumで入らない依存モジュールのダウンロード&ビルド&インストール
wget ftp://ftp.riken.jp/Linux/fedora/development/18/source/SRPMS/d/distcache-1.4.5-23.src.rpm
rpmbuild --rebuild distcache-1.4.5-23.src.rpm
rpm -i ~/rpmbuild/RPMS/x86_64/distcache-*

wget ftp://ftp.riken.jp/Linux/fedora/development/18/source/SRPMS/a/apr-1.4.6-3.fc18.src.rpm
rpmbuild --rebuild apr-1.4.6-3.fc18.src.rpm
rpm -i ~/rpmbuild/RPMS/x86_64/apr-*

wget ftp://ftp.riken.jp/Linux/fedora/development/18/source/SRPMS/a/apr-util-1.4.1-5.fc18.src.rpm
rpmbuild --rebuild apr-util-1.4.1-5.fc18.src.rpm
rpm -i ~/rpmbuild/RPMS/x86_64/apr-util-*
そしていよいよhttpd-2.4.3のダウンロード&ビルド&インストール
wget http://ftp.kddilabs.jp/infosystems/apache/httpd/httpd-2.4.3.tar.bz2
rpmbuild -tp httpd-2.4.3.tar.bz2
mv httpd-2.4.3.tar.bz2 ~/rpmbuild/SOURCES/
sed -i "s/%{epoch}://g" ~/rpmbuild/BUILD/httpd-2.4.3/httpd.spec
rpmbuild -bb ~/rpmbuild/BUILD/httpd-2.4.3/httpd.spec
rpm -i ~/rpmbuild/RPMS/x86_64/httpd-*

2011-05-30

Apacheのログにプロキシ経由前の元IPアドレスを出力する

単純には、LogFormatの設定のところで%hの代わりに%{X-Forwarded-For}iと書いてあげれば出力される訳ですが、これだとプロキシを経由していない場合IPアドレスのところがカラになってしまいます。
そんな訳で、プロキシを経由してるときだけ元のIPアドレスを出力するようにってことでこんな感じにすれば良さそうヾ(*・∀・)ノ"
LogFormat "%{X-Forwarded-For}i %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" forwarder
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined

SetEnvIf X-Forwarded-For "^.*\..*\..*\..*" is-forwarder

CustomLog logs/access_log combined env=!is-forwarder
CustomLog logs/access_log forwarder env=is-forwarder

2011-04-12

Apacheのファイル一覧で文字化けを起こさないようにする

Options Indexes
で、ディレクトリ内のファイル一覧を表示させるように出来る訳ですが、日本語ファイル名が化けることがありますね。
IndexOptions Charset=UTF-8
な感じで適切な文字コードをセットしてあげれば良さそうです。