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>
不要なモジュールは読み込まないようにします。
- -ldapを使わない場合
#LoadModule ldap_module modules/mod_ldap.so #LoadModule authnz_ldap_module modules/mod_authnz_ldap.so
- -webdavを使わない場合
#LoadModule dav_module modules/mod_dav.so #LoadModule dav_fs_module modules/mod_dav_fs.so
- -proxyを使わない場合。
#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