Laboratório: Servidor Web Apache: mudanças entre as edições
(Criou página com '=Laboratório: Servidor Web Apache= Os '''servidores Web''' permitem armazenar as páginas Web e disponibilizá-las na Internet. Um servidor Web bem conhecido é o '''Apache...') |
|||
Linha 24: | Linha 24: | ||
Para que o servidor mostre uma página diferente deste padrão de instalação deve ser criada uma nova página '''index.html'''. | Para que o servidor mostre uma página diferente deste padrão de instalação deve ser criada uma nova página '''index.html'''. | ||
==Configuração do Apache no Ubuntu== | |||
O '''apache''' é um aplicativo modular e se limita a executar a tarefa de entregar '''páginas HTML''' ou outros tipos de arquivos a clientes. Qualquer outra tarefa é executada por módulos externos. | |||
Por exemplo, para acesso a uma '''página PHP''', o servidor apache repassa a requisição para o módulo '''mod_php''', que aciona o '''interpretador PHP''' que processa a página e entrega ao apache para este entregar ao cliente <ref name=MORIMOTO>MORIMOTO, C. E. Seridores Linux: Guia prático, Sul Editores, Porto Alegre, 2013.</ref>. | |||
===Arquivos de configuração=== | |||
Os arquivos de configuração do '''apache''' também são modulares e estão organizados dentro do diretório '''/etc/apache2''': | |||
/etc/apache2/ | |||
|-- apache2.conf | |||
| `-- ports.conf | |||
|-- mods-available | |||
| |-- *.load | |||
| `-- *.conf | |||
|-- conf-available | |||
| `-- *.conf | |||
`-- sites-available | |||
`-- *.conf | |||
*O arquivo '''apache2.conf''' contem configurações diversas do servidor; | |||
*O arquivo '''ports.conf''' contem a configuração das portas TCP que o servidor vai escutar; | |||
*O diretório '''sites-available''' contem a configuração dos sites hospedados; | |||
*O diretório '''mods-available''' contem a configuração dos módulos. | |||
*O diretório '''conf-available''' contem a configuração de fragmentos globais do apache. | |||
===Sites hospedados=== | |||
;Configuração default: Quando o '''apache''' é instalado é criado o arquivo '''/etc/apache2/sites-available/000-default.conf''' que contém a configuração de um '''site padrão'''. Este site usa o diretório '''/var/www/html''' para armazenar as '''páginas Web''', sendo o arquivo '''index.html''' a página base do site. | |||
:Se o '''servidor Web''' vai armazenar um único site, esta configuração é suficiente. | |||
====Hospedagem de vários sites==== | |||
O '''apache''' pode armazenar vários sites simultaneamente, cada um representado por um arquivo de configuração no diretório '''sites-available'''. | |||
Para cada site cria-se um '''arquivo de configuração''', por exemplo '''redes30.conf''', e armazena o mesmo no diretório '''sites-available'''. | |||
O conteúdo do arquivo contém as seguintes informações básicas: | |||
<VirtualHost *:80> | |||
#Endereço IP e porta de escuta | |||
ServerName www.redes30.edu.br | |||
# O nome de servidor | |||
ServerAdmin webmaster@redes30.edu.br | |||
#Administrador do site | |||
DocumentRoot /var/www/html/redes30 | |||
# Diretório onde estão os documentos desse site | |||
<Directory /var/www/html/redes30> | |||
Options Indexes | |||
DirectoryIndex index.html index.php | |||
order allow,deny | |||
allow from all | |||
</Directory> | |||
# As restrições de acesso aos documentos | |||
</VirtualHost> | |||
===Endereços IP dos sites=== | |||
Para cada site pode ser cadastrado um '''endereço IP específico''' ou todos os sites podem '''compartilhar o mesmo endereço IP''' da máquina onde está instalado o servidor. | |||
;Endereço IP específico para cada site: Criar um endereço '''[http://200.17.101.9/wiki/index.php/Rede_e_Roteamento#IP_alias IP alias]''' para cada site, por exemplo: | |||
ifconfig eth0:0 192.168.40.30 netmask 255.255.252.0 | |||
:Incluir no '''arquivo de configuração''' do site o '''endereço IP''' correspondente e a porta: | |||
<VirtualHost 192.168.40.30:80> | |||
#Endereço IP e porta de escuta | |||
... | |||
</VirtualHost> | |||
;Endereço IP compartilhado: Usar no arquivo de configuração como endereço IP o '''asterisco''' ('''*'''), como mostrado na configuração exemplo anterior. | |||
===Resolução de Nomes (DNS)=== | |||
Tanto no caso de utilizar '''endereço IP específico''' ou '''endereço IP compartilhado''' para cada site, um '''servidor DNS''' é necessário para resolver o '''nome do site''' para ter acesso as páginas Web. | |||
:No caso do uso de '''endereços IP compartilhados''', todas as consultas ao '''servidor DNS''', para os vários sites hospedados, vão apontar para o mesmo endereço IP. Neste caso, a '''mensagem de requisição HTTP''', montada pelo cliente, vai incluir o '''nome do site''' que o Apache possa fornecer a página correta. | |||
;Arquivo /etc/hosts: Para fins de testes, uma alternativa é incluir o '''nome dos sites''' que queremos acessar no arquivo '''/etc/hosts''' de cada cliente, por exemplo: | |||
192.168.40.30 www.redes30.edu.br | |||
===Habilitação dos sites=== | |||
Para tornar o site disponível, cria-se um '''link''' do arquivo de configuração para o diretório '''sites-enabled''', como por exemplo: | |||
ln -s /etc/apache2/sites-available/redes30.conf /etc/apache2/sites-enabled/redes30.conf | |||
:Caso se desejar tornar o site indisponível, sem remover a configuração, apenas se apaga o link simbólico. | |||
Os comandos '''a2ensite''' e '''a2dissite''' ativam e desativam os links de forma automática, por exemplo <ref name=MORIMOTO/>: | |||
a2ensite redes30.conf | |||
:(ativa) | |||
:ou | |||
a2dissite redes30.conf | |||
:(desativa) | |||
Depois de modificada a configuração, reiniciar o servidor apache: | |||
service apache2 restart | |||
====Exercícios==== | |||
Criar '''sites virtuais''' para armazenar no servidor '''apache''', utilizando '''IP compartilhados''' para dois sites e '''IP específicos''' (IP alias) para um site. Para tal realize os seguintes procedimentos: | |||
*Crie pelo menos um '''IP alias''' para o site com '''IP específico'''. | |||
*Crie '''arquivos de configuração''' para os três sites. | |||
*Crie '''diretórios''' para armazenar as páginas dos sites no diretório '''/var/www/html/'''. | |||
*Crie '''paginas HTML''' e salve nos diretórios do site correspondente, cada uma com o nome '''index.html'''. | |||
*Testar o acesso ao servidor Web usando o endereço IP dos sites a partir de um '''navegador'''. | |||
Para ter acesso as páginas Web a partir do '''nome do site''' seria necessário um '''servidor DNS''', entretanto, para fins de teste, podemos incluir o nome dos sites que queremos acessar no arquivo '''/etc/hosts''', para tal: | |||
*Edite o arquivo '''/etc/hosts''' e acrescente linhas com o nome dos sites, por exemplo: | |||
192.168.40.30 www.redes30.edu.br | |||
;Dicas: Para não haver conflito de endereços IP entre as diversas equipes, utilizar a rede 192.168.40.0/22 e utilizar faixas específicas de IP para cada grupo. | |||
:Compartilhar entre os grupos os endereços IP e nomes dos sites para testar acesso aos servidores dos demais colegas. | |||
---- | ---- |
Edição das 12h04min de 22 de outubro de 2018
Laboratório: Servidor Web Apache
Os servidores Web permitem armazenar as páginas Web e disponibilizá-las na Internet.
Um servidor Web bem conhecido é o Apache, disponível como padrão nas versões do Linux e um dos mais utilizados na Internet.
- Instalação do apache
- Obs: Instalar o lynx na máquina virtual.
sudo apt-get install apache2
- Testar se o servidor Web está operando normalmente
- Em um navegador coloque no endereço da URL o endereço IP da máquina onde o apache foi instalado;
- Se tudo está funcionando, você verá a resposta padrão do apache.
- Armazenamento das páginas HTML no servidor apache
As páginas HTML a serem disponibilizadas pelo servidor apache ficam armazenadas do diretório:
/var/www/html
- Verificação da página padrão da instalação
cd /var/www/html ls cat index.html
Para que o servidor mostre uma página diferente deste padrão de instalação deve ser criada uma nova página index.html.
Configuração do Apache no Ubuntu
O apache é um aplicativo modular e se limita a executar a tarefa de entregar páginas HTML ou outros tipos de arquivos a clientes. Qualquer outra tarefa é executada por módulos externos.
Por exemplo, para acesso a uma página PHP, o servidor apache repassa a requisição para o módulo mod_php, que aciona o interpretador PHP que processa a página e entrega ao apache para este entregar ao cliente [1].
Arquivos de configuração
Os arquivos de configuração do apache também são modulares e estão organizados dentro do diretório /etc/apache2:
/etc/apache2/ |-- apache2.conf | `-- ports.conf |-- mods-available | |-- *.load | `-- *.conf |-- conf-available | `-- *.conf `-- sites-available `-- *.conf
- O arquivo apache2.conf contem configurações diversas do servidor;
- O arquivo ports.conf contem a configuração das portas TCP que o servidor vai escutar;
- O diretório sites-available contem a configuração dos sites hospedados;
- O diretório mods-available contem a configuração dos módulos.
- O diretório conf-available contem a configuração de fragmentos globais do apache.
Sites hospedados
- Configuração default
- Quando o apache é instalado é criado o arquivo /etc/apache2/sites-available/000-default.conf que contém a configuração de um site padrão. Este site usa o diretório /var/www/html para armazenar as páginas Web, sendo o arquivo index.html a página base do site.
- Se o servidor Web vai armazenar um único site, esta configuração é suficiente.
Hospedagem de vários sites
O apache pode armazenar vários sites simultaneamente, cada um representado por um arquivo de configuração no diretório sites-available.
Para cada site cria-se um arquivo de configuração, por exemplo redes30.conf, e armazena o mesmo no diretório sites-available.
O conteúdo do arquivo contém as seguintes informações básicas:
<VirtualHost *:80> #Endereço IP e porta de escuta ServerName www.redes30.edu.br # O nome de servidor ServerAdmin webmaster@redes30.edu.br #Administrador do site DocumentRoot /var/www/html/redes30 # Diretório onde estão os documentos desse site <Directory /var/www/html/redes30> Options Indexes DirectoryIndex index.html index.php order allow,deny allow from all </Directory> # As restrições de acesso aos documentos </VirtualHost>
Endereços IP dos sites
Para cada site pode ser cadastrado um endereço IP específico ou todos os sites podem compartilhar o mesmo endereço IP da máquina onde está instalado o servidor.
- Endereço IP específico para cada site
- Criar um endereço IP alias para cada site, por exemplo:
ifconfig eth0:0 192.168.40.30 netmask 255.255.252.0
- Incluir no arquivo de configuração do site o endereço IP correspondente e a porta:
<VirtualHost 192.168.40.30:80> #Endereço IP e porta de escuta ... </VirtualHost>
- Endereço IP compartilhado
- Usar no arquivo de configuração como endereço IP o asterisco (*), como mostrado na configuração exemplo anterior.
Resolução de Nomes (DNS)
Tanto no caso de utilizar endereço IP específico ou endereço IP compartilhado para cada site, um servidor DNS é necessário para resolver o nome do site para ter acesso as páginas Web.
- No caso do uso de endereços IP compartilhados, todas as consultas ao servidor DNS, para os vários sites hospedados, vão apontar para o mesmo endereço IP. Neste caso, a mensagem de requisição HTTP, montada pelo cliente, vai incluir o nome do site que o Apache possa fornecer a página correta.
- Arquivo /etc/hosts
- Para fins de testes, uma alternativa é incluir o nome dos sites que queremos acessar no arquivo /etc/hosts de cada cliente, por exemplo:
192.168.40.30 www.redes30.edu.br
Habilitação dos sites
Para tornar o site disponível, cria-se um link do arquivo de configuração para o diretório sites-enabled, como por exemplo:
ln -s /etc/apache2/sites-available/redes30.conf /etc/apache2/sites-enabled/redes30.conf
- Caso se desejar tornar o site indisponível, sem remover a configuração, apenas se apaga o link simbólico.
Os comandos a2ensite e a2dissite ativam e desativam os links de forma automática, por exemplo [1]:
a2ensite redes30.conf
- (ativa)
- ou
a2dissite redes30.conf
- (desativa)
Depois de modificada a configuração, reiniciar o servidor apache:
service apache2 restart
Exercícios
Criar sites virtuais para armazenar no servidor apache, utilizando IP compartilhados para dois sites e IP específicos (IP alias) para um site. Para tal realize os seguintes procedimentos:
- Crie pelo menos um IP alias para o site com IP específico.
- Crie arquivos de configuração para os três sites.
- Crie diretórios para armazenar as páginas dos sites no diretório /var/www/html/.
- Crie paginas HTML e salve nos diretórios do site correspondente, cada uma com o nome index.html.
- Testar o acesso ao servidor Web usando o endereço IP dos sites a partir de um navegador.
Para ter acesso as páginas Web a partir do nome do site seria necessário um servidor DNS, entretanto, para fins de teste, podemos incluir o nome dos sites que queremos acessar no arquivo /etc/hosts, para tal:
- Edite o arquivo /etc/hosts e acrescente linhas com o nome dos sites, por exemplo:
192.168.40.30 www.redes30.edu.br
- Dicas
- Para não haver conflito de endereços IP entre as diversas equipes, utilizar a rede 192.168.40.0/22 e utilizar faixas específicas de IP para cada grupo.
- Compartilhar entre os grupos os endereços IP e nomes dos sites para testar acesso aos servidores dos demais colegas.
--Evandro.cantu (discussão) 10h01min de 22 de outubro de 2018 (BRST)