memo.xight.org

日々のメモ

カテゴリ : Apache

3ページ目 / 全3ページ

PHP + Apacheのチューニング

PHPのコンパイル

  いらないものはdisable.
  ApacheはDSOにしない.
  必要なextensionでもたまにしか使わない物はshared objectにしてdl()する.

./configure --with-apache=../apache_1.3.29 --with-mysql=/usr
--enable-mbstring --disable-ipv6 --disable-xml --disable-ctype
--disable-tokenizer --disable-path-info-check --disable-overload
--disable-posix --disable-cli --disable-cgi


Apacheのコンパイル

  まず src/include/httpd.h の HARD_SERVER_LIMIT 256 を 2048 へ変更
  その後configure.
  いらない物は入れない.
  DSOにしない.

./configure --disable-module=actions --disable-module=alias
--disable-module=asis --disable-module=autoindex --disable-module=cgi
--disable-module=imap --disable-module=include
--disable-module=setenvif --disable-module=status
--disable-module=userdir --activate-module=src/modules/php4/libphp4.a


httpd.confの主要な部分の変更

StartServers → リクエスト数の半分くらい?
MaxClients → サーバーが処理できる最大プロセス数の半分以下くらい?
AllowOverride → none (.htaccessを使用しない)
ServerSignature → off (ちょこっとだけ無駄を省く)


mmcacheをインストールしてphp.iniを編集

session.save_handler = mmcache (sessionはmmcacheにおまかせする)
mmcache.sessions="shm_only" (セッション情報は全てメモリ上に)
mmcache.shm_only="1" (キャッシュも全てメモリ上に)
output_buffering = On (ためてWrite()のコールを少なくする)
register_globals = Off
expose_php = Off (ちょこっとだけ無駄を省く)
register_argc_argv = Off


Reference

  PHP-J.com ブログ
  http://phpj.jugem.cc/?eid=6

Basic 認証をかけるが,特定のホストは認証なしで通過させる方法

AuthUserFile /path/to/.htpasswd
AuthGroupFile /dev/null
AuthName "Please enter username and password"
AuthType Basic

Require valid-user
Satisfy any

Order deny,allow
Allow from 192.168.0.0/24
Deny from all


Satisfyがキモらしい

Satisfy all Basic認証 and ホスト認証 の両方が通過しないとダメ.デフォルトはこっち.
Satisfy any Basic認証 or ホスト認証 のどちらかが通過すれば OK.

Reference

  cl.pocari.org - 2003-06-01
  http://cl.pocari.org/2003-06.php#2003-06-01-1
  ミケネコのhtaccessリファレンス
  http://mikeneko.creator.club.ne.jp/~lab/web/htaccess/auth.html#Satisfy

Apacheで 403 Fobbiden エラーが発生する問題

原因

  実行属性がついていない

今回のケース

  /home/yoshiki に実行属性がついていなかったため
  /home/yoshiki/public_html
  /home/yoshiki/example
  にアクセス不可能

/home/user ディレクトリ

  デフォルトで実行権限がついていないので
  せめて 701 に

apache + libapache-mod-mp3 で Streaming Server

インストール

# aptitude install libapache-mod-mp3

- 設定 /etc/apache/httpd.conf

LoadModule mp3_module /usr/lib/apache/1.3/mod_mp3.so
<IfModule mod_mp3.c>
	Listen 8000
	<VirtualHost _default_:8000>
		MP3Engine On
		MP3Random On
		MP3CastName "mod_mp3"
		MP3Genre "Sounds of Open Source"
		MP3 /archives/audio/mp3/
		Timeout 1200
	</VirtualHost>
</IfModule>

聞く

$ mpg123 http://localhost:8000/
$ xmms http://localhost:8000/

- 使い勝手
  コネクション毎に別の曲が流れるのでBroadCastというよりはOnDemandCastingか?
  曲を選ぶことはできないが,次の曲に移ることはできる.

Reference

  infObsession linux memo
  http://infobsession.dtdns.net/~ryu1/entity/linuxmemo.xhtml#id38

hoge.phps

ファイル名.phps にしてアクセスすると

  ソースが色づけされて表示される.

方法

  httpd.conf に以下を記述
  AddType application/x-httpd-php-source .phps

spam アドレス収集 robot に対抗するための mod_rewrite


  FreeBit.NE.JP からのアクセスで,
  User Agent が `Mozilla/4.0 (compatible; MSIE 6.0; Windows 98)'を /hoge.html に誘導

httpd.conf に記述

  RewriteCond %{HTTP_REFERER} ^$
  RewriteCond %{REMOTE_HOST} \.FreeBit\.NE\.JP$ [NC]
  RewriteCond %{HTTP_USER_AGENT} "^Mozilla/4.0 \(compatible; MSIE 6.0; Windows 98\)$"
  RewriteRule ^.*$ /hoge.html [L]

Reference

  http://www.otsune.com/diary/2003/06/19.html#2003061927

Apache の Combine ログから worm のログを分離

Summary

mod_setenvifを利用して Combine ログからwormのログを消去,worm用のログファイルに出力する.
画像やcssのログは記録しない.

awstatsのエラー回避のためにも有効.

# For Combining log files
<IfModule mod_setenvif.c>
SetEnvIf Request_URI "^/_mem_bin/" worm trash
SetEnvIf Request_URI "^/_vti_bin/" worm trash
SetEnvIf Request_URI "^/c/winnt" worm trash
SetEnvIf Request_URI "^/c/winnt" worm trash
SetEnvIf Request_URI "^/msadc/" worm trash
SetEnvIf Request_URI "^/MSADC/" worm trash
SetEnvIf Request_URI "^/scripts/" worm trash
SetEnvIf Request_URI "^/default.ida" worm trash
SetEnvIf Request_URI "Admin\.dll" worm trash
SetEnvIf Request_URI "cmd\.exe" worm trash
SetEnvIf Request_URI "null\.ida" worm trash
SetEnvIf Request_URI "NULL\.IDA" worm trash
SetEnvIf Request_URI "root\.exe" worm trash

SetEnvIf Request_URI "\.(gif)|(jpg)|(png)$" trash
SetEnvIf Request_URI "\.(js)|(css)|(ico)$" trash
SetEnvIf Request_URI "/robots\.txt$" trash

SetEnvIf Remote_Addr "127\.0\.0\.1" trash
SetEnvIf Remote_Addr "^192\.168\.[0-9]+\.[0-9]+$" trash
</IfModule>

CustomLog /var/log/apache/access_log combined env=!worm
CustomLog /var/log/apache/worm_log combined env=worm


Reference

AWStats 6.0
http://cyberam.dip.jp/linux_server/log/awstats60_main.html#8

ITMedia - Developer - Linux Tips
http://www.itmedia.co.jp/help/tips/linux/l0324.html