Servidor Web: mudanças entre as edições
Linha 208: | Linha 208: | ||
Listen 443 | Listen 443 | ||
</IfModule> | </IfModule> | ||
;Habilitação do HTTPS no VirtualHost: O próximo passo é habilitar o HTTPS no '''VirtualHost''' no qual ele será utilizado. | |||
*Editar a configuração do VirtualHost correspondente no arquivo /etc/apache2/sites-available | |||
*Duplicar o conteúdo da seção <VirtualHost *:80> para uma nova seção <VirtualHost *:443> | |||
<VirtualHost *:80> | |||
... | |||
</VirtualHost> | |||
<VirtualHost *:443> | |||
... | |||
</VirtualHost> | |||
*Acrescentar as seguintes linhas: | |||
<VirtualHost *:443> | |||
... | |||
SSLEngine on | |||
SSLCertificateFile /etc/apache2/ssl/chave-propria.pem | |||
SSLCertificateKeyFile /etc/apache2/ssl/chave-propria.key | |||
</VirtualHost> | |||
Edição das 17h07min de 8 de fevereiro de 2016
Servidor Web
Servidor Apache
O servidor Apache é um servidor web livre amplamente utilizado na Internet.
O Apache implementa o lado servidor da Aplicação Web e atende requisições de clientes Web, ou navegadores, através do Protocolo HTTP (HyperText Transfer Protocol).
O Apache pode transferir para o cliente Web diferentes tipos de documentos, incluindo páginas HTML (Hipertext Meta Language), arquivos em formato PDF, arquivos de imagens, etc.
Um documento pode ser um simples arquivo em disco, mas também pode ser gerado dinamicamente através de tecnologias Web como PHP, JSP, ASP e outras. Estas tecnologias se caracterizam por uma linguagem de programação integrada ao servidor web, obtendo dele informação sobre como gerar o conteúdo da resposta [1].
Instalação do Apache no Ubuntu
Página oficial do Servidor Web Apache2 no Ubuntu.
- Instalação
sudo apt-get install apache2
Uma vez instalado o servidor Web já estará funcionando com um página Web básica, chamada index.html, localizada no diretório:
/var/www/html/
O servidor Web poderá ser testado com um navegador utilizando o endereço de loopback 127.0.0.1 (na própria máquina) ou através do endereço IP da máquina em uma rede.
Para o gerenciamento do apache deve instalar também alguns utilitários, disponíveis no pacote:
sudo apt-get install apache2-utils
Configuração do Apache no Ubuntu
Organização dos arquivos
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 [2].
- 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 redes10.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.redes10.edu.br # O nome de servidor ServerAdmin webmaster@redes10.edu.br #Administrador do site DocumentRoot /var/www/html/redes10 # Diretório onde estão os documentos desse site <Directory /var/www/html/redes10> 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.100.10 netmask 255.255.255.0
- Incluir no arquivo de configuração do site o endereço IP correspondente e a porta:
<VirtualHost 192.168.100.10: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.100.10 www.redes10.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/redes10.conf /etc/apache2/sites-enabled/redes10.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 [2]:
a2ensite redes10.conf
- (ativa)
- ou
a2dissite redes10.conf
- (desativa)
Depois de modificada a configuração, reiniciar o servidor apache:
service apache2 restart
Exercício 1
Criar sites virtuais para armazenar no servidor apache, para tal realize os seguintes procedimentos:
- Crie pelo menos dois IP alias para responder pelos sites.
- Crie arquivos de configuração para os 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.htlm.
- 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.100.10 www.redes10.edu.br
- Dicas
- Para não haver conflito de endereços IP entre as diversas equipes, utilizar a rede 192.168.100.0/24 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.
Módulos
A configuração dos módulos também é realizada em dois diretórios separados:
- mods-available, que contém a configuração e os scripts de inicialização dos módulos disponíveis;
- mods-enabled, que são os módulos habilitados.
Para habilitar um módulo, usamos o comando:
a2enmod
Para desabilitar um módulo, usamos o comando:
a2dismod
Páginas pessoais para usuários
O módulo userdir é usado pelo Apache para disponibilizar páginas pessoais aos usuários. As páginas ficam armazenadas no diretório public_html localizada no diretório home de cada usuário. O acesso as páginas pessoais é realizado pela URL http://[hostname]/~username/.
Por default o módulo userdir está disponível quando o apache é instalado, entretanto, o mesmo deve ser ativado com o comando:
a2enmod userdir
Em seguida, cada usuário deve criar o diretório public_html no diretório home e setar as permissões para 0755:
mkdir ~/public_html chmod 0755 ~/public_html
Para cada usuário, criar a página pessoal e salvar no arquivo index.html.
Para fins de teste, uma página pode ser criada com o comando:
echo "Oi! Eu sou $USER. Esta é minha página Web!" > ~/public_html/index.html
- Ajustar as permissões para o arquivo para 0755.
Exercício 2
Habilitar o módulo userdir no servidor Web e criar páginas pessoais para alguns usuários. Testar o acesso as páginas a partir de um navegador.
Páginas HTTPS
O módulo SSL (Secure Socket Layer) é o protocolo usado para criar páginas seguras, criptografando todas as informações trocadas entre o cliente e o servidor Web. É comumente utilizada em páginas de comercio eletrônico, onde é necessário um ambiente seguro para a troca de dados confidenciais.
O módulo SSL vem disponível com a instalação do apache, mas deve ser habilitado com o comando:
a2enmod ssl
Em seguida o apache deve ser reiniciado
service apache2 restart
O servidor apache com suporte SSL escuta na porta 443.
Cerfiticados SSL
Para o funcionamento das páginas seguras é necessário um certificado SSL.
Para fins de testes, é possível gerar um certificado auto assinado (self-signed). Entretanto, os clientes receberão um aviso que o certificado não é reconhecido por uma unidade certificadora.
Para sites comerciais, é necessário que o certificado seja certificado por uma unidade certificadora.
Geração de Certificado Auto Assinado (self-signed)
Instalar o OpenSSL, que é uma implementação de código aberto dos protocolos SSL e TLS:
sudo apt-get update sudo apt-get install openssl
- Gerar um certificado SSL auto-assinado
- Criar um diretório para o Apache guardar os certificados:
sudo mkdir /etc/apache2/ssl/
- Gerar um certificado SSL de 1024 bits, com chave pública X.509 (PKI) e atribuir um nome para o arquivo, como por exemplo, chave-propria.key. Em seguida gerar um arquivo pem para que o certificado seja compatível com todos os navegadores:
sudo openssl genrsa -out chave-propria.key 1024 sudo openssl req -new -key chave-propria.key -x509 -out chave-propria.crt sudo cp chave-propria.crt chave-propria.pen
- Configuração da porta para o HTTPS
- A porta padrão do HTTP é a 80. Já a porta padrão do tráfego HTTPS é 443. O navegador irá automaticamente trafegar por essa porta quando o protocolo for definido para HTTPS.
- Por padrão, o Apache já vem configurado para escutar na porta 443 caso o mod_ssl esteja habilitado. Verifique a configuração no arquivo /etc/apache2/ports.conf se as linhas abaixo estão presentes:
<IfModule mod_ssl.c> Listen 443 </IfModule>
- Habilitação do HTTPS no VirtualHost
- O próximo passo é habilitar o HTTPS no VirtualHost no qual ele será utilizado.
- Editar a configuração do VirtualHost correspondente no arquivo /etc/apache2/sites-available
- Duplicar o conteúdo da seção <VirtualHost *:80> para uma nova seção <VirtualHost *:443>
<VirtualHost *:80> ... </VirtualHost>
<VirtualHost *:443> ... </VirtualHost>
- Acrescentar as seguintes linhas:
<VirtualHost *:443> ... SSLEngine on SSLCertificateFile /etc/apache2/ssl/chave-propria.pem SSLCertificateKeyFile /etc/apache2/ssl/chave-propria.key </VirtualHost>
Exercício 3
Criar e testar a hospedagem de páginas trocadas com HTTPS, utilizando um certificado próprio (self-signed).
Suporte a PHP
O PHP é uma linguagem para criação de páginas Web dinâmicas e gerenciamento de conteúdos.
Uma página escrita em PHP é interpretada por interpretador que fica carregado continuamente na memória e vai executando os comandos recebidos dos scripts incluídos nas páginas.
Com o suporte ao PHP o Apache continua exibindo diretamente páginas com a extensão .html. Entretanto, as páginas com extensão .php são passadas ao interpretador PHP, que faz o processamento e devolve uma página .html ao Apache, que se encarrega de entregar ao cliente [2].
As páginas .html geradas pelo interpretador PHP são descartadas depois de entregues ao cliente. A cada nova requisição elas são processadas novamente. Dependendo da complexidade do código, as páginas PHP podem ser bastante pesadas. Para sites com grande número de acessos a configuração do servidor deve ser robusta para não tornar o serviço lento.
- Instalação do PHP
- No Ubuntu o PHP é instalado através do pacote:
apt-get install php5
- Depois é necessário instalar o módulo do Apache para trabalhar com PHP:
apt-get install libapache2-mod-php5
- O apache deve ser reiniciado
service apache2 restart
- Teste do PHP
- Para fins de teste, um arquivo PHP pode ser criado /var/www/html/info.php com o conteúdo:
<?php phpinfo(); ?>
- Testar a partir de um navegador, acessando o endereço do servidor, por exemplo http://[hostname]/info.php. A página contém informações sobre a configuração do PHP instalada no servidor.
Exercício 4
Criar páginas PHP e hospedar nos sites criados no servidor Web desenvolvido no exercício anterior. Testar o acesso as páginas PHP em um navegador.
Suporte ao MySQL
O MySQL é um banco de dados que pode ser acessado a partir de um script PHP.
Um servidor Apache com suporte ao PHP e acesso ao banco de dados MySQL é conhecido como servidor LAMP (Linux/Apache/MySQL/PHP).
- Instalação do MySQL
apt-get install mysql-server
- Reiniciar o apache:
service apache2 restart
Depois de instalado deve-se criar a base de dados MySQL com o comando:
mysql_install_db
O passo seguinte é ativar o servidor:
/etc/init.d/mysql start
- Senha
- O MySQL possui um usuário padrão chamado root que tem acesso completo ao banco de dados e é usado para a configuração do sistema. Inicialmente este usuário não tem senha, mas depois de iniciado deve-se, por segurança, definir uma senha com o comando:
mysqladmin -u root password SENHA
Administração do banco de dados MySQL
A forma elementar de administrar o MySQL é a partir do prompt de comandos:
mysql -u root -p
- phpMyAdmin
- A administração do banco de dados MySQL pode ser realizada com aplicativos Web, como o phpMyAdmin, o qual pode ser instalado com o comando:
sudo apt-get install phpmyadmin
Integração do interpretador PHP e MySQL
Para que o interpretador PHP e seja capaz de acessar o banco de dados MySQL é necessário instalar o módulo php5-mysql:
sudo apt-get install php5-mysql
Apache Tomcat
O servidor Apache Tomcat permite a hospedagem de aplicações web tipo Java Servlets e JSP (Java Server Pages).
- Instalação
apt-get install tomcat7
- Uma vez instalado, uma página padrão pode ser acessada por HTTP na porta 8080.
- Teste:
localhost:8080
- Diretório das páginas Web
- O Tomcat guarda a página Web base, index.html, no diretório /var/lib/tomcat7/webapps/ROOT.
Configuração
Os arquivos de configuração do Tomcat podem ser encontrados em /etc/tomcat7.
- Alterar porta padrão
- Para alterar a porta 8080, que é o padrão de escuta HTTP, editar o arquivo /etc/tomcat7/Server.xml:
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" URIEncoding="UTF-8" redirectPort="8443" />
- Alterar Máquina Virtual Java (JVM)
- Por padrão o Tomcat usa como JVM o OpenJDK, para alterar modificar no arquivo /etc/default/tomcat7:
JAVA_HOME=/usr/lib/jvm/openjdk-6-jdk
- Documentação do Tomcat
- O pacote tomcat7-docs contém a documentação completa o Tomcat.
- Instalação:
apt-get install tomcat7-docs
- Acesso: http://[hostname]:8080/docs
- Administração do Tomcat
- O pacote tomcat7-admin aplicações Web para administração do Tomcat.
- Instalação:
apt-get install tomcat7-admin
- Acesso: http://[hostname]:8080/manager/html
Veja outros detalhes da configuração na página oficial do servidor Tomcat.
Referências
- ↑ VALLE, O. T. Gerência de Redes, Diário Aula, 2014. http://wiki.sj.ifsc.edu.br/wiki/index.php/GER20706-2014-1
- ↑ 2,0 2,1 2,2 MORIMOTO, C. E. Seridores Linux: Guia prático, Sul Editores, Porto Alegre, 2013.
--Evandro.cantu (discussão) 09h04min de 16 de dezembro de 2015 (BRST)