29.8. Servidor HTTP Apache
Anterior | Capítulo 29. Servidores de Rede | Próxima

## 29.8. Servidor HTTP Apache

Contribuido por Murray Stokely.

O open source Apache HTTP Server é o servidor Web mais utilizado. O FreeBSD não instala este servidor web por padrão, mas ele pode ser instalado a partir do pacote ou Port www/apache24.

Esta seção resume como configurar e iniciar a versão 2.`x` do Servidor HTTP Apache no FreeBSD. Para informações mais detalhadas sobre o Apache2.X e suas diretivas de configuração, consulte httpd.apache.org.

### 29.8.1. Configurando e Iniciando o Apache

No FreeBSD, o arquivo de configuração principal do Apache HTTP Server é instalado como `/usr/local/etc/apache2`x`/httpd.conf`, onde `x` representa o número da versão. Este arquivo ASCII de texto inicia as linhas de comentário com um `#`. As diretivas modificadas com mais freqüência são:

`ServerRoot "/usr/local"`

  Especifica a hierarquia de diretório padrão para a instalação do Apache. Os binários são armazenados nos subdiretórios `bin` e `sbin` da raiz do servidor e os arquivos de configuração são armazenados no subdiretório `etc/apache2`x``.

`ServerAdmin you@example.com`

  Altere isso para seu endereço de e-mail para receber problemas com o servidor. Esse endereço também aparece em algumas páginas geradas pelo servidor, como documentos de erro.

`ServerName www.example.com:80`

  Permite que um administrador defina um nome de host que é enviado de volta aos clientes pelo servidor. Por exemplo, `www` pode ser usado em vez do nome do host real. Se o sistema não tiver um nome registrado no DNS, insira seu endereço IP. Se o servidor irá escutar em um relatório alternativo, altere a porta `80` para o número de porta alternativa.

`DocumentRoot "/usr/local/www/apache2`x`/data"`

  O diretório no qual os documentos serão exibidos. Por padrão, todas as solicitações são obtidas desse diretório, mas os links e aliases simbólicos podem ser usados ​​para apontar para outros locais.

É sempre uma boa ideia fazer uma cópia de backup do arquivo de configuração do Apache padrão antes de fazer alterações. Quando a configuração do Apache estiver concluída, salve o arquivo e verifique a configuração usando o `apachectl`. A execução do `apachectl configtest` deve retornar `Syntax OK`.

Para iniciar o Apache na inicialização do sistema, adicione a seguinte linha ao `/etc/rc.conf`:

    apache24_enable="YES"

Se o Apache deve ser iniciado com opções não-padrão, a seguinte linha pode ser adicionada ao `/etc/rc.conf` para especificar os flags necessários:

    apache24_flags=""

Se o apachectl não relatar erros de configuração, inicie o `httpd` agora:

    # service apache24 start

O serviço `httpd` pode ser testado inserindo `http://`localhost`` em um navegador da Web, substituindo `localhost` pelo nome de domínio totalmente qualificado da máquina que está executando o `httpd`. A página padrão da Web exibida é `/usr/local/www/apache`24`/data/index.html`.

A configuração do Apache pode ser testada quanto a erros depois de fazer alterações subsequentes de configuração enquanto o `httpd` está em execução usando o seguinte comando:

    # service apache24 configtest

### Nota:

É importante notar que o `configtest` não é um padrão rc(8) e não se espera que funcione para todos os scripts de inicialização.

### 29.8.2. Hospedagem Virtual

A hospedagem virtual permite que vários sites sejam executados em um servidor Apache. Os hosts virtuais podem ser baseados em IP ou baseados em nome. A hospedagem virtual baseada em IP usa um endereço IP diferente para cada site. A hospedagem virtual baseada em nome usa os cabeçalhos HTTP/1.1 do cliente para descobrir o nome do host, o que permite que os sites compartilhem o mesmo endereço de IP.

Para configurar o Apache para usar hospedagem virtual baseada em nome, adicione um bloco `VirtualHost` para cada site. Por exemplo, para o servidor Web denominado `www.domain.tld` com um domínio virtual de `www.someotherdomain.tld`, adicione as seguintes entradas ao arquivo `httpd.conf`:

    <VirtualHost *>
        ServerName www.domain.tld
        DocumentRoot /www/domain.tld
    </VirtualHost>

    <VirtualHost *>
        ServerName www.someotherdomain.tld
        DocumentRoot /www/someotherdomain.tld
    </VirtualHost>

Para cada host virtual, substitua os valores de `ServerName` e `DocumentRoot` pelos valores a serem usados.

Para obter mais informações sobre como configurar hosts virtuais, consulte a documentação oficial do Apache em: `http://httpd.apache.org/docs/vhosts/`.

### 29.8.3. Módulos Apache

O Apache usa módulos para aumentar a funcionalidade fornecida pelo servidor básico. Consulte o `http://httpd.apache.org/docs/current/mod/` para uma lista completa e detalhes de configuração para os módulos disponíveis.

No FreeBSD, alguns módulos podem ser compilados com o port www/apache24. Digite `make config` dentro do diretório `/usr/ports/www/apache24` para ver quais módulos estão disponíveis e quais estão ativados por padrão. Se o módulo não é compilado com o port, a Coleção de Ports do FreeBSD fornece uma maneira fácil de instalar vários módulos. Esta seção descreve três dos módulos mais usados.

#### 29.8.3.1. `mod_ssl`

O módulo `mod_ssl` usa a biblioteca OpenSSL para fornecer criptografia robusta via SSL (SSLv3) e protocolos de Segurança da Camada de Transporte (TLSv1). Este módulo fornece todo o necessário para solicitar um certificado assinado de uma autoridade de assinatura de certificado confiável para executar um servidor web seguro no FreeBSD.

No FreeBSD, o módulo `mod_ssl` é habilitado por padrão tanto no pacote quanto no port. As diretivas de configuração disponíveis são explicadas em `http://httpd.apache.org/docs/current/mod/mod_ssl.html`.

#### 29.8.3.2. `mod_perl`

O módulo `mod_perl` torna possível escrever módulos Apache em Perl. Além disso, o intérprete persistente embutido no servidor evita a sobrecarga de iniciar um intérprete externo e a penalidade do tempo de inicialização do Perl.

O `mod_perl` pode ser instalado usando o pacote ou port www/mod_perl2. A documentação para usar este módulo pode ser encontrada em `http://perl.apache.org/docs/2.0/index .html`.

#### 29.8.3.3. `mod_php`

Escrito porTom Rhodes.

PHP: Pré-processador de hipertexto ( PHP ) é uma linguagem de script de propósito geral que é especialmente adequada para desenvolvimento web. Capaz de ser incorporada em HTML, sua sintaxe se baseia em C, Java™ e Perl com a intenção de permitir desenvolvedores web para escrever rapidamente páginas da web geradas dinamicamente.

Para obter suporte para PHP5 para o servidor da web Apache, instale o pacote ou port www/mod_php56. Isso instalará e configurará os módulos necessários para suportar aplicativos dinâmicos PHP. A instalação adicionará automaticamente esta linha ao arquivo `/usr/local/etc/apache2`4`/httpd.conf`:

    LoadModule php5_module        libexec/apache24/libphp5.so

Em seguida, execute uma reinicialização normal para carregar o módulo PHP:

    # apachectl graceful

O suporte a PHP fornecido pelo www/mod_php56 é limitado. Suporte adicional pode ser instalado usando o port lang/php56-extensions que fornece uma interface baseada em menus para as extensões PHP disponíveis.

Como alternativa, extensões individuais podem ser instaladas usando a porta apropriada. Por exemplo, para adicionar suporte PHP para o servidor de banco de dados MySQL, instale o databases/php56-mysql.

Depois de instalar uma extensão, o servidor Apache deve ser recarregado para selecionar as novas alterações de configuração:

    # apachectl graceful

### 29.8.4. Websites Dinâmicos

Além do mod_perl e do mod_php, outras linguagens estão disponíveis para a criação de conteúdo dinâmico da web. Estes incluem o Django e o Ruby on Rails.

#### 29.8.4.1. Django

O Django é um framework de licença BSD projetado para permitir que desenvolvedores escrevam aplicações web elegantes e de alto desempenho rapidamente. Ele fornece um mapeador relacional de objeto para que os tipos de dados sejam desenvolvidos como objetos Python. Uma API rica e dinâmica de acesso ao banco de dados é fornecida para os objetos sem que o desenvolvedor tenha que escrever SQL. Ele também fornece um sistema de template extensível para que a lógica do aplicativo seja separada da apresentação HTML.

Django depende de `mod_python`, e um mecanismo de banco de dados SQL. No FreeBSD, o port www/py-django instala automaticamente o `mod_python` e suporta os banco de dados PostgreSQL, MySQL, ou SQLite, com o padrão sendo o SQLite. Para trocar o mecanismo de banco de dados, digite `make config` dentro do diretório `/usr/ports/www/py-django`, então instale o port.

Uma vez instalado o Django, a aplicação precisará de um diretório de projeto junto com a configuração Apache para usar o interpretador Python incorporado. Este intérprete é usado para chamar o aplicativo para URLs específicas no site.

Para configurar o Apache para que passe a fazer solicitações para determinadas URLs para a aplicação Web, adicione o seguinte ao `httpd.conf`, especificando o caminho completo para o diretório do projeto:

    <Location "/">
        SetHandler python-program
        PythonPath "['/dir/to/the/django/packages/'] + sys.path"
        PythonHandler django.core.handlers.modpython
        SetEnv DJANGO_SETTINGS_MODULE mysite.settings
        PythonAutoReload On
        PythonDebug On
    </Location>

Consulte `https://docs.djangoproject.com` para maiores informações sobre como usar o Django.

#### 29.8.4.2. Ruby on Rails

O Ruby on Rails é outro framework de software livre da Web que fornece uma stack de desenvolvimento completa. Ele é otimizado para tornar os desenvolvedores da Web mais produtivos e capazes de criar rapidamente aplicativos poderosos. No FreeBSD, ele pode ser instalado usando o pacote ou port www/rubygem-rails.

Consulte `http://guides.rubyonrails.org` para maiores informações sobre como usar o Ruby on Rails .

Anterior | Acima | Próxima
29.7. Sistema de Nomes de Domínio (DNS) | Principal | 29.9. Protocolo de Transferência de Arquivos (FTP)

All FreeBSD documents are available for download at https://download.freebsd.org/ftp/doc/

Questions that are not answered by the documentation may be sent to <freebsd-questions@FreeBSD.org>.
Send questions about this document to <freebsd-doc@FreeBSD.org>.