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.
No FreeBSD, o arquivo de configuração principal do Apache HTTP Server é instalado como /usr/local/etc/apache2
, onde x
/httpd.confx
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/apache2x
/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 apache
24
start
O serviço httpd
pode ser testado inserindo http://
em um navegador da Web, substituindo localhost
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 apache
24
configtest
É 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.
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 *> ServerNamewww.domain.tld
DocumentRoot/www/domain.tld
</VirtualHost> <VirtualHost *> ServerNamewww.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/
.
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.
Em algum momento, o suporte para o SSL dentro do Apache requer um modulo secundário chamado mod_ssl
. Esse não é mais o casoe a instalação padrão do Apache vem com SSL embutido no servidor web. Um exemplo de como habilitar o suporte para paginas com SSL está disponível no arquivo http-ssl.conf
instalado dentro do diretório /usr/local/etc/apache24/extra
. Dentro desse diretório também esta um exemplo do arquivo chamado ssl.conf-sample
. É recomendado que ambos arquivos sejam avaliados para configurar apropriadamente páginas seguras no servidor web Apache.
Depois da configuração do SSL estiver completa, deve ser removido o comentário da linha seguinte no arquivo http.conf
principal para ativar as mudanças no próximo restart ou reload do Apache:
#Include etc/apache24/extra/httpd-ssl.conf
Versão dois do SSL e a versão três tem problemas de vulnerabilidades conhecidas. É altamente recomendado a versão 1.2 do TLS e 1.3 deve ser habilitada no lugar das velhas opções do SSL. Isso pode ser realizado configurando as seguintes opções no arquivo ssl.conf
:
SSLProtocol all -SSLv3 -SSLv2 +TLSv1.2 +TLSv1.3 SSLProxyProtocol all -SSLv2 -SSLv3 -TLSv1 -TLSv1.1
Para completar a configuração do SSL no servidor web, remova os comentários da seguinte linha para garantir que a configuração irá ser enviada para dentro do Apache durante o restart ou reload:
# Secure (SSL/TLS) connections Include etc/apache24/extra/httpd-ssl.conf
As linhas a seguir também devem ser descomentadas no httpd.conf
para suportar totalmente o SSL no Apache:
LoadModule authn_socache_module libexec/apache24/mod_authn_socache.so LoadModule socache_shmcb_module libexec/apache24/mod_socache_shmcb.so LoadModule ssl_module libexec/apache24/mod_ssl.so
O próximo passo é trabalhar com uma autoridade certificadora para ter certificados apropriados instalados no sistema. Isso vai configurar um cadeia de confiança para a pagina e prever alguns avisos de certificados auto assinados.
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
.
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.
Suporte para PHP para o Apache e alguma outra parte escrita na linguagem, pode ser adicionada instalando o port apropriado.
Para todas versões suportadas, procure os dados do pacote usando o comando pkg
:
#
pkg search php
Uma lista vai ser disponibilizada incluindo as versões e partes adicionais que elas proverem. Os componentes são completamente modulares, significando que as partes especificas são habilitadas instalando o port apropriado. Para instalar o PHP na versão 7.4 para o Apache, use o seguinte comando:
#
pkg install mod_php74
Se algum pacote dependente precisar ser instalado, ele irá ser instalado também.
Por padrão, o PHP não estará habilitado. As seguintes linhas precisam ser adicionadas no arquivo de configuração do Apache localizado em /usr/local/etc/apache24
para ativa-lo:
<FilesMatch "\.php$"> SetHandler application/x-httpd-php </FilesMatch> <FilesMatch "\.phps$"> SetHandler application/x-httpd-php-source </FilesMatch>
Em adição, a opção DirectoryIndex
no arquivo de configuração irá precisar ser atualizada também e o Apache irá precisar ser reiniciado ou feito um relaoad também para as mudanças surtirem efeito.
Suporte para muitas partes do PHP podem ser instalado também usando o comando pkg
. Por exemplo, para instalar suporte para o XML ou para SSL, instale os seguintes ports:
#
pkg install php74-xml php74-openssl
Como antes, a configuração do Apache irá precisar ser recarregada para as mudanças surtirem efeito, mesmo em casos onde foi feita apenas a instalação de um modulo.
Para realizar uma reinicialização normal para recarregar a configuração, digite o seguinte comando:
#
apachectl graceful
Uma vez que a instalação esteja completa, há dois métodos para obter o suporte para os modulos do PHP e a informação do ambiente dessa instalação. A primeira é instalar o binário completo do PHP e rodar o seguinte comando para obter a informação:
#
pkg install php74
#
php -i |less
Isso é necessário para passar a saída paga um paginador, como o comando more
ou less
para visualizar melhor a saída.
Finalmente, para fazer alguma mudança na configuração global do PHP há um arquivo bem documentado instalado dentro de /usr/local/etc/php.ini
. No momento da instalação, esse arquivo não irá existir porque há duas versões para escolher, uma é o arquivo php.ini-development
e outra o php.ini-production
. Esses são pontos iniciais para ajudar os administradores na implementação.
Suporte do Apache para o protocolo HTTP está incluido por padrão quando instala o port com o comando pkg
. A nova versão do HTTP inclui muitas melhorias em relação a versão anterior, incluindo utilizar uma conexão singular para uma página, reduzindo as idas e vindas de conexões TCP. Também, os dados no cabeçalho do pacote é comprimido e o HTTP2 requer encriptação por padrão.
Quando o Apache estiver configurado para usar HTTP2 apenas, os navegadores web irão requisitar conexões seguras, encriptadas com HTTPS. Quando o Apache estiver configurado para usar ambas versões, o HTTP1.1 irá ser considerado uma opção substituta se algum problema surgir durante a conexão.
Embora essa mudança exija que os administradores façam alterações, elas são positivas e equivalem a uma Internet mais segura para todos. As mudanças são requeridas apenas para paginas não implementada corretamente com SSL e TLS.
Essa configuração depende das seções anteriores, incluindo suporte a TLS. É recomendado que essas instruções seja seguidas antes de continuar com essa configuração.
Comece o processo habilitando o modulo http2 removendo o comentário da linha no arquivo /usr/local/etc/apache24/httpd.conf
e trocando o modulo mpm_prefork pelo mpm_event pois o anterior não suporta o http2.
LoadModule http2_module libexec/apache24/mod_http2.so LoadModule mpm_event_module libexec/apache24/mod_mpm_event.so
Aqui há um port mod_http1
distinto que está disponível. Ele existe pra entregar segurança e correção de bugs mais rápido que o modulo instalado por padrão com o port apache24
. Ele não é requisitado para o suporte do HTTP2 mas está disponível. Quando instalado, o mod_h2.so
deve ser usado no lugar do mod_http2.so
na configuração do Apache.
Aqui há dois métodos para implementar o HTTP2 no Apache; um caminho é de forma global para todos os sites e cada VirtualHost rodando no sistema. Para habilitar o HTTP2 globalmente, adicione a seguinte linha abaixo da diretiva ServerName:
Protocolos h2 http/1.1
Para habilitar HTTP2 sobre texto simples, use h2h2chttp/1.1 no arquivo httpd.conf
.
Tendo o h2c aqui irá permitir que o dado em texto simples do HTTP2 passar pelo sistema mas isso não é recomendado. Em adição a isso, usando o http/1.1 aqui irá permitir retornar para a versão do protocolo HTTP1.1 caso sejá necessário pelo sistema.
Para habilitar HTTP2 para VirtualHosts individuais, adicione a mesma linha com a diretiva VirtualHost no arquivo httpd.conf
ou httpd-ssl.conf
.
Recarregue a configuração usando o comando apachectl
reload
e teste a configuração seguindo um dos métodos após visitar uma das paginas hosteadas:
#
grep "HTTP/2.0" /var/log/httpd-access.log
A saída deve ser semelhante à seguinte:
192.168.1.205 - - [18/Oct/2020:18:34:36 -0400] "GET / HTTP/2.0" 304 - 192.0.2.205 - - [18/Oct/2020:19:19:57 -0400] "GET / HTTP/2.0" 304 - 192.0.0.205 - - [18/Oct/2020:19:20:52 -0400] "GET / HTTP/2.0" 304 - 192.0.2.205 - - [18/Oct/2020:19:23:10 -0400] "GET / HTTP/2.0" 304 -
O outro metodo é usar o navegador web padrão no debugger do site ou o comando tcpdump
; contanto, o uso de qualquer método está além do escopo desse documento.
Suporte para conexões do proxy reverso HTTP2 usando o modulo mod_proxy_http2.so
. Quando declarado na configuração o ProxyPass ou RewriteRules [P], eles devem usar h2:// para a conexão.
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.
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.
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 .
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>.