LAMPサーバーの基本設定

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>

不要なモジュールは読み込まないようにします。

  • -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
        

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です