Linuxサーバー
Centos5.xの場合です。
アプリの特性と関係無く基本的に設定する項目です。
apache
- /etc/httpd/conf/httpd.conf
ServerTokens ProductOnly
#ServerTokens OS
Timeout 30
#Timeout 120
原則KeepAliveはOnにします。WebAPI用で連続アクセスが少なかったり、すこしでもサーバー負荷を減らしたい場合は負荷な場合はOffにすることも。
KeepAlive On
#KeepAlive Off
MaxKeepAliveRequestsは、良く閲覧されるページで参照されるファイル数に合わせる
MaxKeepAliveRequests 15
#MaxKeepAliveRequests 100
KeepAliveTimeoutは原則2秒にする。
KeepAliveTimeout 2
#KeepAliveTimeout 15
ServerLimitやMaxClientsはmod_phpを使うので控えめにします
<IfModule prefork.c>
StartServers 8
MinSpareServers 5
MaxSpareServers 20
ServerLimit 64
MaxClients 64
#ServerLimit 256
#MaxClients 256
MaxRequestsPerChild 4000
</IfModule>
不要なモジュールは読み込まないようにします。
#LoadModule ldap_module modules/mod_ldap.so
#LoadModule authnz_ldap_module modules/mod_authnz_ldap.so
#LoadModule dav_module modules/mod_dav.so
#LoadModule dav_fs_module modules/mod_dav_fs.so
#LoadModule proxy_module modules/mod_proxy.so
#LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
#LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
#LoadModule proxy_http_module modules/mod_proxy_http.so
#LoadModule proxy_connect_module modules/mod_proxy_connect.so
なお、/etc/httpd/conf.d/proxy_ajp.confはmod_proxyが必要なのでいかのようにリネームなどしておきます。
mv /etc/httpd/conf.d/proxy_ajp.conf /etc/httpd/conf.d/proxy_ajp.conf.dist
キャッシュ機能をつかわない場合
#LoadModule disk_cache_module modules/mod_disk_cache.so
#LoadModule file_cache_module modules/mod_file_cache.so
#LoadModule mem_cache_module modules/mod_mem_cache.so
munin等監視エージェント用に
ExtendedStatus On
<Location /server-status>
SetHandler server-status
Order deny,allow
Deny from all
Allow from 127.
# Allow from .example.com
</Location>
ディレクトリインデックスは非公開にします。
<Directory "/var/www/html">
Options FollowSymLinks
#Options Indexes FollowSymLinks
</Directory>
アクセスログ出力の調整
LogFormat "%h %l %u %t \"%!414r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %X %D" combinedstat
# do not log worm
SetEnvIf Request_URI "default\.ida" no_log
SetEnvIf Request_URI "cmd\.exe" no_log
SetEnvIf Request_URI "root\.exe" no_log
SetEnvIf Request_URI "Admin\.dll" no_log
SetEnvIf Request_URI "NULL\.IDA" no_log
# do not log local network
SetEnvIf Remote_Addr 127.0.0.1 no_log
# internal dummy connection
SetEnvIf Remote_Addr "::1" no_log
CustomLog logs/access_log combinedstat env=!no_log
ServerSignature Off
#ServerSignature On
原則FileEtagは使いません
FileEtag None
HTTP TRACEは禁止します
TraceEnable off
テキスト系のコンテンツタイプ指定で最大に圧縮送信します。
AddOutputFilterByType DEFLATE text/html text/plain text/xml text/javascript text/css
DeflateCompressionLevel 9
非同期ロギングを有効にします。
BufferedLogs on
php(5.1.6)
APCをepelからインストールします。
# yum install php-pecl-apc
php5.3の場合はCentos5.6のリポジトリに用意されていないようなので、現時点では自前で何とかする必要があるようです。
mysql
Query Cacheと遅いクエリをロギングします。
# Query Cache
query_cache_size=64M
query_cache_limit=1M
# Log Slow Queries
log-slow-queries=/var/log/mysqld-slow.log
long_query_time=2