<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE manualpage SYSTEM "./style/manualpage.dtd">
<?xml-stylesheet type="text/xsl" href="./style/manual.pt-br.xsl"?>
<!-- English Revision: 1933180 -->
<!-- Portuguese(BR) translation: leonardolara --><!-- Reviewed by: leonardolara -->
<!--
 Licensed to the Apache Software Foundation (ASF) under one or more
 contributor license agreements.  See the NOTICE file distributed with
 this work for additional information regarding copyright ownership.
 The ASF licenses this file to You under the Apache License, Version 2.0
 (the "License"); you may not use this file except in compliance with
 the License.  You may obtain a copy of the License at

     http://www.apache.org/licenses/LICENSE-2.0

 Unless required by applicable law or agreed to in writing, software
 distributed under the License is distributed on an "AS IS" BASIS,
 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 See the License for the specific language governing permissions and
 limitations under the License.
-->

<manualpage metafile="upgrading.xml.meta">

<title>Atualizando da versão 2.2 para 2.4</title>

<summary>
  <p>Para auxiliar os usuários na atualização, mantemos um documento
  que descreve informações essenciais para usuários existentes do Servidor HTTP
  Apache. Estas notas são breves e você poderá encontrar
  mais informações no documento <a
  href="new_features_2_4.html">Novas Funcionalidades</a> ou no
  arquivo <code>src/CHANGES</code>. Desenvolvedores de aplicações e módulos
  podem encontrar um resumo das alterações da API na <a
  href="developer/new_api_2_4.html">Visão geral de atualizações da API</a>.</p>

  <p>Este documento descreve alterações no comportamento do servidor que podem
   exigir que você altere sua configuração ou a forma como usa o servidor
   para continuar usando a versão 2.4 da mesma forma que usa a versão 2.2.
   Para aproveitar os novos recursos da versão 2.4, consulte o documento sobre Novas
   Funcionalidades.</p>

  <p>Este documento descreve apenas as alterações da versão 2.2 para a 2.4. Se você
  estiver atualizando da versão 2.0, também deverá consultar o <a
  href="http://http://httpd.apache.org/docs/2.2/upgrading.html">Documento de Atualização
  da versão 2.0 para 2.2</a>.</p>

</summary>
<seealso><a href="new_features_2_4.html">Visão geral das novas funcionalidades
  no Servidor HTTP Apache 2.4</a></seealso>

  <section id="compile-time">
    <title>Alterações na Configuração no Momento da Compilação</title>

    <p>O processo de compilação é muito semelhante ao usado na
    versão 2.2. Sua antiga linha de comando <code>configure</code>
    (encontrada em <code>build/config.nice</code> no diretório do servidor
    instalado) pode ser usada na maioria dos casos. Há algumas alterações nas
    configurações padrão. Alguns detalhes das alterações:</p>

    <ul>
      <li>Estes módulos foram removidos: mod_authn_default,
      mod_authz_default, mod_mem_cache. Se você estava usando
      mod_mem_cache na versão 2.2, consulte <module>mod_cache_disk</module>
      na versão 2.4.</li>

      <li>Todas as implementações de balanceamento de carga foram movidas para
      submódulos individuais e independentes do mod_proxy, por exemplo:
      <module>mod_lbmethod_bybusyness</module>. Você pode precisar
      compilar e carregar qualquer um desses que sua configuração
      utiliza.</li>

      <li>O suporte à plataforma foi removido para BeOS, TPF e
      até mesmo plataformas mais antigas, como A/UX, Next e Tandem. Acredita-se
      que estas já não estivessem funcionando corretamente.</li>

      <li>configure: módulos dinâmicos (DSO) são compilados por padrão.</li>

      <li>configure: por padrão, apenas um conjunto básico de módulos é carregado. As
      outras diretivas <directive>LoadModule</directive> estão comentadas
      no arquivo de configuração.</li>

      <li>configure: o conjunto de módulos "most" ("maioria") é compilado por padrão</li>

      <li>configure: o conjunto de módutos "reallyall" ("realmente todos") adiciona os módulos de desenvolvedor
      ao conjunto "all" ("todos")</li>
    </ul>

  </section>

  <section id="run-time">
    <title>Alterações na Configuração no Momento da Execução</title>
    <p>Houve mudanças significativas na configuração de autorização e outras
    pequenas alterações de configuração que podem exigir alterações em seus arquivos
    de configuração da versão 2.2 antes de usá-los na versão 2.4.</p>

    <section id="authz">
      <title>Autorização</title>

      <p>Qualquer arquivo de configuração que utilize autorização provavelmente
      precisará de alterações.</p>

    <p>Você deve revisar a seção <a href="howto/auth.html">Como Fazer: Autenticação,
    Autorização e Controle de Acesso</a>, especialmente a parte
    <a href="howto/auth.html#beyond">Além da simples autorização</a>
    que explica os novos mecanismos para controlar a ordem
    em que as diretivas de autorização são aplicadas.</p>

    <p>As diretivas que controlam como os módulos de autorização respondem quando
    não correspondem ao usuário autenticado foram removidas: Isso inclui
    AuthzLDAPAuthoritative, AuthzDBDAuthoritative, AuthzDBMAuthoritative,
    AuthzGroupFileAuthoritative, AuthzUserAuthoritative,
    e AuthzOwnerAuthoritative. Essas diretivas foram substituídas pelas
    diretivas mais expressivas <directive module="mod_authz_core">RequireAny</directive>,
    <directive module="mod_authz_core">RequireNone</directive> e
    <directive module="mod_authz_core">RequireAll</directive>.</p>

    <p>Se você usa <module>mod_authz_dbm</module>, você deve migrar sua
    configuração para usar <code>Require dbm-group ...</code> em vez de
    <code>Require group ...</code>.</p>

    <section id="access">
      <title>Controle de acesso</title>

      <p>Na versão 2.2, o controle de acesso baseado no nome do host do cliente, no endereço IP,
      e em outras características das solicitações do cliente era feito usando as
      diretivas <directive
      module="mod_access_compat">Order</directive>, <directive
      module="mod_access_compat">Allow</directive>, <directive
      module="mod_access_compat">Deny</directive> e <directive
      module="mod_access_compat">Satisfy</directive>.</p>

      <p>Na versão 2.4, esse controle de acesso é feito da mesma forma que outras
      verificações de autorização, usando o novo módulo
      <module>mod_authz_host</module>. Os antigos padrões de controle de acesso
      devem ser substituídos pelos novos mecanismos de autenticação,
      embora, para compatibilidade com configurações antigas, o novo
      módulo <module>mod_access_compat</module> seja fornecido.</p>

      <note><title>Misturando diretivas antigas com novas</title>
      <p>Misturar diretivas antigas como <directive
      module="mod_access_compat">Order</directive>, <directive
      module="mod_access_compat">Allow</directive> ou <directive
      module="mod_access_compat">Deny</directive> com novas como
      <directive
      module="mod_authz_core">Require</directive> é possível tecnicamente porém
      não é recomendado. <module>mod_access_compat</module> foi criado para suportar
      configurações que contêm somente diretivas antigas para facilitar a migração para a versão 2.4.
      Favor verificar os exemplos abaixo para ter uma ideia melhor sobre os problemas que podem surgir.
      </p>
      </note>

      <p>Aqui estão alguns exemplos de maneiras antigas e novas de fazer o mesmo
      controle de acesso.</p>

      <p>Neste exemplo, não há autenticação e todas as solicitações são negadas.</p>
      <example>
        <title>Configuração na versão 2.2:</title>
        <highlight language="config">
Order deny,allow
Deny from all
        </highlight>
      </example>
      <example>
        <title>Configuração na versão 2.4:</title>
        <highlight language="config">
Require all denied
        </highlight>
      </example>

      <p>Neste exemplo, não há autenticação e todas as solicitações são permitidas.</p>
      <example>
        <title>Configuração na versão 2.2:</title>
        <highlight language="config">
Order allow,deny
Allow from all
        </highlight>
      </example>
      <example>
        <title>Configuração na versão 2.4:</title>
        <highlight language="config">
Require all granted
        </highlight>
      </example>

      <p>No exemplo a seguir, não há autenticação e todos os hosts no domínio example.org
      têm acesso permitido; todos os outros têm acesso negado.</p>

      <example>
        <title>Configuração na versão 2.2:</title>
        <highlight language="config">
Order Deny,Allow
Deny from all
Allow from example.org
        </highlight>
      </example>
      <example>
        <title>Configuração na versão 2.4:</title>
        <highlight language="config">
Require host example.org
        </highlight>
      </example>

      <p>No exemplo a seguir, misturar diretivas antigas e novas leva a
      resultados inesperados.</p>

      <example>
        <title>Misturando diretivas antigas e novas: NÃO FUNCIONA COMO ESPERADO</title>
          <highlight language="config">
DocumentRoot "/var/www/html"

&lt;Directory "/"&gt;
    AllowOverride None
    Order deny,allow
    Deny from all
&lt;/Directory&gt;

&lt;Location "/server-status"&gt;
    SetHandler server-status
    Require local
&lt;/Location&gt;

access.log - GET /server-status 403 127.0.0.1
error.log - AH01797: client denied by server configuration: /var/www/html/server-status
          </highlight>
      </example>
      <p>Por que o httpd nega acesso a server-status mesmo quando a configuração parece permitir?
        Porque as diretivas <module>mod_access_compat</module> tem precedência
        sobre as <module>mod_authz_host</module> neste cenário de
        <a href="sections.html#merging">mesclagem</a> de configurações.</p>

      <p>Este exemplo, por outro lado, funciona como esperado:</p>

      <example>
        <title>Misturando diretivas antigas e novas: FUNCIONA COMO ESPERADO</title>
        <highlight language="config">
DocumentRoot "/var/www/html"

&lt;Directory "/"&gt;
    AllowOverride None
    Require all denied
&lt;/Directory&gt;

&lt;Location "/server-status"&gt;
    SetHandler server-status
    Order deny,allow
    Deny from all
    Allow From 127.0.0.1
&lt;/Location&gt;

access.log - GET /server-status 200 127.0.0.1
        </highlight>
      </example>
      <p>Portanto, mesmo se a mistura de configurações ainda seja
        possível, tente evitar na atualizaçao: mantenha diretivas antigas e somente
        migre para as novas em um estágio posterior ou migre tudo de uma vez.
      </p>
    </section>

     <p>Em muitas configurações com autenticação, onde o valor de
     <directive>Satisfy</directive> tinha o padrão de <em>ALL</em>, trechos
     que simplesmente desligavam o controle de acesso baseado em host são omitidos:</p>

      <example>
        <title>Configuração na versão 2.2:</title>
        <highlight language="config">
# configuração na versão 2.2 que desliga o controle de acesso baseado em host e usa somente autenticação
Order Deny,Allow
Allow from all
AuthType Basic
AuthBasicProvider file
AuthUserFile /example.com/conf/users.passwd
AuthName secure
Require valid-user
        </highlight>
      </example>
      <example>
        <title>Configuração na versão 2.4:</title>
        <highlight language="config">
# Não é necessário substituir o controle de acesso baseado em host
AuthType Basic
AuthBasicProvider file
AuthUserFile /example.com/conf/users.passwd
AuthName secure
Require valid-user
        </highlight>
      </example>

     <p>Em configurações onde a autenticação e o controle de acesso eram adequadamente combinados, as
        diretivas de controle de acesso devem ser migradas. Este exemplo permite que as solicitações atendam a <em>ambos</em> os critérios:</p>
      <example>
        <title>Configuração na versão 2.2:</title>
        <highlight language="config">
Order allow,deny
Deny from all
# Satisfy ALL is the default
Satisfy ALL
Allow from 127.0.0.1
AuthType Basic
AuthBasicProvider file
AuthUserFile /example.com/conf/users.passwd
AuthName secure
Require valid-user
        </highlight>
      </example>
      <example>
        <title>Configuração na versão 2.4:</title>
        <highlight language="config">
AuthType Basic
AuthBasicProvider file
AuthUserFile /example.com/conf/users.passwd
AuthName secure
&lt;RequireAll&gt;
  Require valid-user
  Require ip 127.0.0.1
&lt;/RequireAll&gt;
        </highlight>
      </example>

     <p>Em configurações onde a autenticação e o controle de acesso eram adequadamente combinados, as
        diretivas de controle de acesso devem ser migradas. Este exemplo permite que as solicitações atendam a <em>qualquer</em> um dos critérios:</p>
      <example>
        <title>Configuração na versão 2.2:</title>
        <highlight language="config">
Order allow,deny
Deny from all
Satisfy any
Allow from 127.0.0.1
AuthType Basic
AuthBasicProvider file
AuthUserFile /example.com/conf/users.passwd
AuthName secure
Require valid-user
        </highlight>
      </example>
      <example>
        <title>Configuração na versão 2.4:</title>
        <highlight language="config">
AuthType Basic
AuthBasicProvider file
AuthUserFile /example.com/conf/users.passwd
AuthName secure
# &lt;RequireAny&gt; (implícito)
Require valid-user
Require ip 127.0.0.1
        </highlight>
      </example>

    </section>

    <section id="config">
      <title>Outras mudanças na configuração</title>

      <p>Alguns outros pequenos ajustes podem ser necessários para configurações
      em particular como discutido abaixo.</p>

      <ul>
        <li><directive>MaxRequestsPerChild</directive> foi renomeada para
        <directive module="mpm_common">MaxConnectionsPerChild</directive>,
        descrevendo com maior precisão o que ela faz. O nome antigo ainda
        é suportado.</li>

        <li><directive>MaxClients</directive> foi renomeada para
        <directive module="mpm_common">MaxRequestWorkers</directive>,
        que descreve melhor o que ela faz. Para MPMs assíncronos, como
        <module>event</module>, o número máximo de clientes não é
        equivalente ao número de threads. O nome antigo ainda
        é suportado.</li>

        <li>A diretiva <directive module="core">DefaultType</directive>
        não tem mais nenhum efeito além de emitir um
        alerta se for usada com algum valor diferente de
        <code>none</code>. É necessário usar outras configurações
        para substituí-la na versão 2.4.
        </li>

        <li>O padrão para <directive module="core">AllowOverride</directive>
        agora é <code>None</code>.</li>

        <li>O padrão para <directive module="core">EnableSendfile</directive>
        agora é Off.</li>

        <li>O padrão para <directive module="core">FileETag</directive>
        agora é "MTime Size" (sem INode).</li>

        <li><module>mod_dav_fs</module>: O formato do arquivo de <directive
        module="mod_dav_fs">DavLockDB</directive> foi alterado para
        sistemas com inodes. o arquivos antigo de <directive
        module="mod_dav_fs">DavLockDB</directive> precisa ser apagado na
        atualização.
        </li>

        <li><directive module="core">KeepAlive</directive> somente
        aceita valores de <code>On</code> ou <code>Off</code>.
        Anteriormente, qualquer valor diferente de "Off" ou "0" era tratado como
        "On".</li>

        <li>As diretivas AcceptMutex, LockFile, RewriteLock, SSLMutex,
        SSLStaplingMutex e WatchdogMutexPath foram substituídas
        por uma única diretiva <directive module="core">Mutex</directive>.
        É necessário avaliar o uso dessas diretivas
        removidas na configuração 2.2 para determinar se elas podem
        ser apenas removidas ou se precisam ser substituídas usando <directive
        module="core">Mutex</directive>.</li>

        <li><module>mod_cache</module>: <directive
        module="mod_cache">CacheIgnoreURLSessionIdentifiers</directive>
        agora faz uma correspondência exata com a string de consulta em vez de
        um correspondência parcial. Se a configuração estava usando strings
        parciais, por exemplo, usando <code>sessionid</code> para corresponder a
        <code>/someapplication/image.gif;jsessionid=123456789</code>,
        então será necessário alterar para a string completa
        <code>jsessionid</code>.
        </li>

        <li><module>mod_cache</module>: O segundo parâmetro para
        <directive module="mod_cache">CacheEnable</directive> somente
        corresponde ao conteúdo do proxy direto se ele começar com o protocolo
        correto. Na versão 2.2 e anteriores, um parâmetro de '/' correspondia a todo o
        conteúdo.</li>

        <li><module>mod_ldap</module>: <directive
        module="mod_ldap">LDAPTrustedClientCert</directive> agora é,
        consistentemente, uma configuração apenas por diretório. Se esta diretiva
        for usada, revise a configuração para garantir que ela está
        presente em todos os contextos de diretório necessários.</li>

        <li><module>mod_filter</module>: a sintaxe de <directive
        module="mod_filter">FilterProvider</directive> foi alterada e
        agora usa uma expressão booleana para determinar se um filtro está aplicado.
        </li>

        <li><module>mod_include</module>:
            <ul>
            <li>O elemento <code>#if expr</code> agora usa o novo <a
            href="expr.html">analisador de expressões</a>. A sintaxe antiga pode ser
            restaurada com a nova diretiva <directive module="mod_include"
            >SSILegacyExprParser</directive>.
            </li>
            <li>Uma diretiva de configuração SSI* em escopo de diretório não faz mais
            com que todas as outras diretivas SSI* por diretório sejam redefinidas para seus
            valores padrão.</li>
            </ul>
        </li>

        <li><module>mod_charset_lite</module>: A opção <code>DebugLevel</code>
        foi removida em favor da configuração <directive
        module="core">LogLevel</directive> por módulo.
        </li>

        <li><module>mod_ext_filter</module>: A opção <code>DebugLevel</code>
        foi removida em favor da configuração <directive
        module="core">LogLevel</directive> por módulo.
        </li>

        <li><module>mod_proxy_scgi</module>: A configuração padrão para
        <code>PATH_INFO</code> foi alterada em relação à versão 2.2 e
        algumas aplicações web não irão mais operar adequadamente com a
        nova configuração de <code>PATH_INFO</code>. A configuração anterior
        pode ser restaurada através da configuração da variável
        <code>proxy-scgi-pathinfo</code>.</li>

        <li><module>mod_ssl</module>: A verificação de revogação baseada em CRL
        agora precisa ser configurada explicitamente através de <directive
        module="mod_ssl">SSLCARevocationCheck</directive>.
        </li>

        <li><module>mod_substitute</module>: O comprimento máximo de linha agora
        é limitado a 1MB.
        </li>

        <li><module>mod_reqtimeout</module>: Se o módulo for carregado, ele
        agora definirá alguns limites de tempo padrões.</li>

        <li><module>mod_dumpio</module>: <directive>DumpIOLogLevel</directive>
        não é mais suportado. Os dados são sempre registrados com <directive
        module="core">LogLevel</directive> no nível <code>trace7</code>.</li>

        <li>Em plataformas Unix, comandos de registro encadeados configurados com
        <directive module="core">ErrorLog</directive> ou
        <directive module="mod_log_config">CustomLog</directive> eram chamados usando
        <code>/bin/sh -c</code> na versão 2.2 e anteriores.  Na versão 2.4 e posteriores,
        comandos de registro encadeados são executados diretamente. Para restaurar o
        comportamento antigo, consulte a <a href="logs.html#piped">documentação sobre
        registros encadeados</a>.</li>

      </ul>
    </section>
  </section>

  <section id="misc">
    <title>Alterações Miscelâneas</title>

    <ul>
      <li><module>mod_autoindex</module>: agora extrai títulos e
      exibe descrições para arquivos .xhtml, que antes eram
      ignorados.</li>

      <li><module>mod_ssl</module>: O formato padrão das variáveis ​​<code>*_DN</code>
      foi alterado. O formato antigo ainda pode ser usado com o novo argumento
      <code>LegacyDNStringFormat</code> da diretiva <directive
      module="mod_ssl">SSLOptions</directive>. O protocolo SSLv2
      não é mais suportado. <directive module="mod_ssl">SSLProxyCheckPeerCN
      </directive> e <directive module="mod_ssl">SSLProxyCheckPeerExpire
      </directive> agora são ativadas por padrão, fazendo com que as solicitações de proxy para hosts HTTPS
      com certificados inválidos ou desatualizados falhem com código de status 502 (Bad
      gateway)</li>

      <li><program>htpasswd</program> agora usa hash MD5 por padrão em
      todas as plataformas.</li>

      <li>A diretiva <directive module="core">NameVirtualHost</directive>
      não tem mais efeito, além de emitir um
      alerta. Qualquer combinação de endereço/porta que apareça em vários
      hosts virtuais é implicitamente tratada como um host virtual baseado em nome.
      </li>

      <li><module>mod_deflate</module> agora irá ignorar a compressão se souber
      que a sobrecarga de tamanho adicionada pela compressão será maior que os dados
      a serem comprimidos.
      </li>

      <li>Documentos de erro multilíngues da versão 2.2.x podem não funcionar a menos que
      sejam ajustados à nova sintaxe do elemento <code>#if expr=</code> do
      módulo <module>mod_include</module> ou que a diretiva
      <directive module="mod_include">SSILegacyExprParser</directive> esteja
      habilitada para o diretório que contém os documentos de erro.
      </li>

      <li>A funcionalidade fornecida por <code>mod_authn_alias</code>
      em versões anteriores (ou seja, a diretiva <directive
      module="mod_authn_core">AuthnProviderAlias</directive>)
      foi movida para <module>mod_authn_core</module>.
      </li>

      <li>As diretivas RewriteLog e RewriteLogLevel foram removidas.
      Esta funcionalidade agora é disponibilizada configurando o nível adequado
      de registro para o módulo <module>mod_rewrite</module> usando a
      diretiva <directive module="core">LogLevel</directive>.
      Consulte também a seção sobre <a href="mod/mod_rewrite.html#logging">registros de
      mod_rewrite</a>.</li>

      <li>A etiqueta <code>&lt;set&gt;</code> do módulo <module>mod_include</module> não
      realiza mais a decodificação de entidades no valor que está sendo definido.</li>
    </ul>

  </section>

  <section id="third-party">
    <title>Módulos de Terceiros</title>
    <p>Todos os módulos devem ser recompilados para a versão 2.4 antes de serem carregados.</p>

    <p>Muitos módulos de terceiros projetados para a versão 2.2
    funcionarão sem alterações com a versão 2.4 do Apache HTTP Server.
    Alguns exigirão alterações; consulte a <a href="developer/new_api_2_4.html">Visão geral da
    atualização da API</a>.</p>
  </section>

  <section id="commonproblems">
    <title>Problemas comuns ao atualizar</title>
    <ul><li>Erros na inicialização:
    <ul>
      <li><code>Invalid command 'User', perhaps misspelled or defined by a module not included in the server configuration</code> - carregue o módulo <module>mod_unixd</module></li>
      <li><code>Invalid command 'Require', perhaps misspelled or defined by a module not included in the server configuration</code>, ou
<code>Invalid command 'Order', perhaps misspelled or defined by a module not included in the server configuration</code>
 - carregue o módulo <module>mod_access_compat</module> ou atualize a configuração para as diretivas de autorização da versão 2.4.</li>
      <li><code>Ignoring deprecated use of DefaultType in line NN of /path/to/httpd.conf</code> - remova a diretiva <directive module="core">DefaultType</directive>
      e substitua por outra configuração.</li>
      <li><code>Invalid command 'AddOutputFilterByType', perhaps misspelled
      or defined by a module not included in the server configuration
      </code> - <directive module="mod_filter">AddOutputFilterByType</directive>
      foi movida do núcleo para o módulo mod_filter, que precisa ser carregado.</li>
    </ul></li>
    <li>Erros ao servir requisições:
    <ul>
      <li><code>configuration error:  couldn't check user: /path</code> -
      carregue o módulo <module>mod_authn_core</module>.</li>
      <li>arquivos <code>.htaccess</code> são estão sendo processados - Verifique uma
      diretiva <directive module="core">AllowOverride</directive> apropriada;
      o padrão mudou para <code>None</code> na versão 2.4.</li>
    </ul>
    </li>
</ul>
  </section>
</manualpage>
