Configurando o arquivo httpd.conf
Uma das funções do arquivo httpd.conf é determinar quais módulos do Apache serão carregados. Quando maior for o número de módulos carregados, mais memória, mais recursos de CPU e, consequentemente, mais lenta será a execução do Apache. Por isso, é imprante saber para que serve cada módulo, se um determinado módulo está sendo útil na operação dele.
Abra o aquivo httpd.conf e habilite os módulos desejados:
$ sudo nano /usr/local/apache2/conf/httpd.conf
LoadModule authn_file_module modules/mod_authn_file.so
LoadModule authn_core_module modules/mod_authn_core.so
LoadModule authz_host_module modules/mod_authz_host.so
LoadModule authz_groupfile_module modules/mod_authz_groupfile.so
LoadModule authz_user_module modules/mod_authz_user.so
LoadModule authz_core_module modules/mod_authz_core.so
LoadModule access_compat_module modules/mod_access_compat.so
LoadModule auth_basic_module modules/mod_auth_basic.so
LoadModule cache_module modules/mod_cache.so
LoadModule cache_disk_module modules/mod_cache_disk.so
LoadModule socache_shmcb_module modules/mod_socache_shmcb.so
LoadModule socache_memcache_module modules/mod_socache_memcache.so
LoadModule reqtimeout_module modules/mod_reqtimeout.so
LoadModule filter_module modules/mod_filter.so
LoadModule deflate_module modules/mod_deflate.so
LoadModule mime_module modules/mod_mime.so
LoadModule log_config_module modules/mod_log_config.so
LoadModule env_module modules/mod_env.so
LoadModule mime_magic_module modules/mod_mime_magic.so
LoadModule expires_module modules/mod_expires.so
LoadModule headers_module modules/mod_headers.so
LoadModule setenvif_module modules/mod_setenvif.so
LoadModule version_module modules/mod_version.so
LoadModule remoteip_module modules/mod_remoteip.so
LoadModule session_module modules/mod_session.so
LoadModule session_cookie_module modules/mod_session_cookie.so
LoadModule session_dbd_module modules/mod_session_dbd.so
LoadModule ssl_module modules/mod_ssl.so
LoadModule unixd_module modules/mod_unixd.so
#LoadModule status_module modules/mod_status.so
LoadModule autoindex_module modules/mod_autoindex.so
#LoadModule info_module modules/mod_info.so
LoadModule vhost_alias_module modules/mod_vhost_alias.so
LoadModule dir_module modules/mod_dir.so
LoadModule alias_module modules/mod_alias.so
LoadModule rewrite_module modules/mod_rewrite.so
#Server-pool management (MPM specific)
Include conf/extra/httpd-mpm.conf
# Real-time info on requests and configuration
Include conf/extra/httpd-info.conf
# Virtual hosts
Include conf/extra/httpd-vhosts.conf
# Secure (SSL/TLS) connections
Include conf/extra/httpd-ssl.conf
Aviso!
Carregue os módulos mod_info e mod_status somente quando o servidor Apache estiver em modo de desenvolvimento e de teste, porque eles facilitam a invasão por hackers.
A diretiva AllowOverride configurada para none e a diretiva Require para all denied, negam o acesso a todo o sistema de arquivos do servidor.
<Directory />
AllowOverride none
Require all denied
</Directory>
A partir desse ponto, é necessário utilizar a diretiva <Directory> para permitir o acesso ao conteúdo de algum diretório específico.
Configurando Expires
Os Expires informam para o navegador o tempo que ele deve guardar o conteúdo acessado. Isso evita que o navegador peça várias vezes determinado conteúdo em cada acesso.
$ sudo nano /usr/local/apache2/conf/httpd.conf
Exemplo:
Nesse exemplo, a configuração dos expires tem início na linha 12 e termina na 23.
#
# DocumentRoot: The directory out of which you will serve your
# documents. By default, all requests are taken from this directory, but
# symbolic links and aliases may be used to point to other locations.
#
DocumentRoot "/usr/local/apache2/htdocs"
<Directory "/usr/local/apache2/htdocs">
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
ExpiresActive On
ExpiresByType text/html "access plus 1 day"
ExpiresByType text/css "access plus 1 day"
ExpiresByType text/javascript "access plus 1 day"
ExpiresByType image/gif "access plus 1 month"
ExpiresByType image/jpg "access plus 1 month"
ExpiresByType image/jpeg "access 1 month"
ExpiresByType image/png "access plus 1 month"
ExpiresByType application/pdf "access 1 month"
ExpiresByType application/x-shockwave-flash "acess 1 month"
ExpiresByType image/x-icon "access 1 month"
ExpiresDefault "access 1 month"
</Directory>
EnableMMAP faz o mapeamento de memória, porém somente deve ser habilitado se o disco for local. Se for um disco de rede não deve ser habilitado.
EnableMMAP on
EnableSendfile é uma função do kernel do Linux que torna possível um arquivo ser lido diretamente do disco e enviado para um socket (porta 80). Este mecanismo evita operações separadas de leitura, envio e alocações de buffer, por isso, economiza muitos ciclos de CPU.
EnableSendfile on
Incluir as seguintes configurações:
# Server-pool management (MPM specific)
Include conf/extra/httpd-mpm.conf
Include conf/extra/httpd-deflate.conf
Include conf/extra/httpd-cache.conf
A função deflate faz o servidor comprimir o conteúdo antes de enviar. Ao receber, o navegador deve descompactar. Esse processo economiza banda do servidor, porém consome recurso de CPU.
Para criar o arquivo de configuração do deflate:
$ sudo nano /usr/local/apache2/conf/extra/httpd-deflate.conf
AddOutputFilterByType DEFLATE text/html text/plain text/xml
<Location />
SetOutputFilter DEFLATE
# Netscape 4.x has some problems...
BrowserMatch ^Mozilla/4 gzip-only-text/html
#Netscape 4.06-4.08 have some more problems
BrowserMatch ^Mozilla/4\.0[678] no-gzip
#MSIE masquerades as Netscape, but it is fine
BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
# Don't compress images
SetEnvIfNoCase Request_URI \
\.(?:gif|jpe?g|png)$ no-gzip dont-vary
# Make sure proxies don't deliver the wrong content
Header append Vary User-Agent env=!dont-vary
</Location>
Para criar o arquivo de configuração do cache:
$ sudo nano /usr/local/apache2/conf/extra/httpd-cache.conf
CacheRoot "/var/cache/apache/"
CacheEnable disk /
CacheDirLevels 1
CacheDirLength 2
Reinicializar o Apache:
$ sudo /usr/local/apache2/bin/apachectl restart
$ sudo /usr/local/apache2/bin/apachectl status
Comando para verificar os módulos carregados:
$ sudo /usr/local/apache2/bin/apachectl -M
Configurando Expires
Os Expires informam para o navegador o tempo que ele deve guardar o conteúdo acessado. Isso evita que o navegador peça várias vezes determinado conteúdo em cada acesso.
$ sudo nano /usr/local/apache2/conf/httpd.conf
Exemplo:
Nesse exemplo, a configuração dos expires tem início na linha 12 e termina na 23.
#
# DocumentRoot: The directory out of which you will serve your
# documents. By default, all requests are taken from this directory, but
# symbolic links and aliases may be used to point to other locations.
#
DocumentRoot "/usr/local/apache2/htdocs"
<Directory "/usr/local/apache2/htdocs">
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
ExpiresActive On
ExpiresByType text/html "access plus 1 day"
ExpiresByType text/css "access plus 1 day"
ExpiresByType text/javascript "access plus 1 day"
ExpiresByType image/gif "access plus 1 month"
ExpiresByType image/jpg "access plus 1 month"
ExpiresByType image/jpeg "access 1 month"
ExpiresByType image/png "access plus 1 month"
ExpiresByType application/pdf "access 1 month"
ExpiresByType application/x-shockwave-flash "acess 1 month"
ExpiresByType image/x-icon "access 1 month"
ExpiresDefault "access 1 month"
</Directory>
EnableMMAP faz o mapeamento de memória, porém somente deve ser habilitado se o disco for local. Se for um disco de rede não deve ser habilitado.
EnableMMAP on
EnableSendfile é uma função do kernel do Linux que torna possível um arquivo ser lido diretamente do disco e enviado para um socket (porta 80). Este mecanismo evita operações separadas de leitura, envio e alocações de buffer, por isso, economiza muitos ciclos de CPU.
EnableSendfile on
Incluir as seguintes configurações:
# Server-pool management (MPM specific)
Include conf/extra/httpd-mpm.conf
Include conf/extra/httpd-deflate.conf
Include conf/extra/httpd-cache.conf
A função deflate faz o servidor comprimir o conteúdo antes de enviar. Ao receber, o navegador deve descompactar. Esse processo economiza banda do servidor, porém consome recurso de CPU.
Para criar o arquivo de configuração do deflate:
$ sudo nano /usr/local/apache2/conf/extra/httpd-deflate.conf
AddOutputFilterByType DEFLATE text/html text/plain text/xml
<Location />
SetOutputFilter DEFLATE
# Netscape 4.x has some problems...
BrowserMatch ^Mozilla/4 gzip-only-text/html
#Netscape 4.06-4.08 have some more problems
BrowserMatch ^Mozilla/4\.0[678] no-gzip
#MSIE masquerades as Netscape, but it is fine
BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
# Don't compress images
SetEnvIfNoCase Request_URI \
\.(?:gif|jpe?g|png)$ no-gzip dont-vary
# Make sure proxies don't deliver the wrong content
Header append Vary User-Agent env=!dont-vary
</Location>
Para criar o arquivo de configuração do cache:
$ sudo nano /usr/local/apache2/conf/extra/httpd-cache.conf
CacheRoot "/var/cache/apache/"
CacheEnable disk /
CacheDirLevels 1
CacheDirLength 2
Reinicializar o Apache:
$ sudo /usr/local/apache2/bin/apachectl restart
$ sudo /usr/local/apache2/bin/apachectl status
Comando para verificar os módulos carregados:
$ sudo /usr/local/apache2/bin/apachectl -M