Apache HTTP Server Servidor HTTP Servidor Web Apache
Apache HTTP Server (Servidor HTTP)
Servidor Web - Apache n n n O Apache é um servidor Web gratuito fonte aberta robusto altamente confiável configurável extensível
Servidor Web n n n O grande propósito de um servidor WEB é receber e processar requisições via protocolo HTTP. Inicialmente o objetivo era servir páginas estáticas. Depois surgiram as páginas dinâmicas e interativas.
Modelo Request/Response Solicitação HTTP Cliente Servidor Web Dados HTML
Modelo Request/Response request Browser Servidor Web response Exemplos: Mozilla Firefox Internet Explorer Chrome (Google) Opera Konqueror Safari Exemplos: Apache Internet Information Server (IIS) lighttpd
Modelo Request/Response
Protocolo HTTP (Hyper. Text Transport Protocol) n n É um protocolo da camada de aplicação que usa TCP como protocolo de transporte É um protocolo “stateless”, isto é, sem estado, sendo cada requisição independente uma das outras.
Requisição HTTP GET / HTTP/1. 1 Host: www. policamp. edu. br User-Agent: Mozilla/5. 0. . . Connection: Keep-Alive
Resposta HTTP/1. 1 200 OK Date: Thu, 16 Aug 2007 22: 46: 38 GMT Content-Type: text-html Content-Lenght: 2541 <html>. . .
URI (Universal Resource Identifier) URIs são strings utilizadas para identificar recursos na Web como páginas, serviços, documentos, imagens, musicas, arquivos, caixas de emails, noticias, entre outros. O URL (Universal Resource Locator) é um tipo de URI.
URI (Uniform Resource Identifier) ftp: //ftp. is. co. za/rfc 1808. txt -- ftp scheme for File Transfer Protocol services gopher: //spinaltap. micro. umn. edu/00/Weather/California/Los%20 Angeles -- gopher scheme for Gopher and Gopher+ Protocol services http: //www. math. uio. no/faq/compression-faq/part 1. html -- http scheme for Hypertext Transfer Protocol services mailto: mduerst@ifi. unizh. ch -- mailto scheme for electronic mail addresses news: comp. infosystems. www. servers. unix -- news scheme for USENET news groups and articles telnet: //melvyl. ucop. edu/ -- telnet scheme for interactive services via the TELNET Protocol
URL (Uniform Resource Locator) <scheme>: : //<host>/<path> Exemplo: http: //www. policamp. edu. br Onde: <scheme> = indica qual o serviço solicitado (http, ftp, etc) <host> = www. policamp. edu. br <path> = /
Evolução da páginas dinâmicas n n n CGI (Common Gateway Interface) Fast. CGI Apache Modules (exemplos: mod_php, mod_ruby, . . . )
Versões do Apache n n n Apache 1. 3. 33 Apache 2. 0 Apache 2. 2
Instalação do Apache (Linux) n n Faça o download http: //httpd. apache. org tar –xzvf httpd-2. 0. 59. tar. gz
Instalação do Apache (2) $ $ . /configure –prefix=/usr/local/apache 2 make install /usr/local/apache 2/bin/apache 2 ctl start
Documentação do Apache (1) n n n Compiling and Installing (Compilação e instalação) Starting (Iniciando) Stopping or Restarting ( Run-time Configuration Directives Directive Quick-Reference Modules (Módulos) Multi-Processing Modules (MPMs) Filters (Filtros) Handlers Server and Supporting Programs (Servidores e programas de Suporte) Glossary
Documentação do Apache (2) n n Release Notes (Notas da Versão) Reference Manual (Manual de Referência) User’s Guide (Guia do Usuário) How-To / Tutorials
Programas n httpd n n apachectl n n ab n n Apache HTTP server benchmarking tool APache e. Xten. Sion tool configure n n Interface de controle do servidor HTTP Apache apxs n n Servidor HTTP (hypertext transfer protocol server) Configure the source tree dbmmanage n Create and update user authentication files in DBM format for basic authentication
Programas (2) n htdigest n n htdbm n n Rotate Apache logs without having to kill the server suexec n n Resolve hostnames for IP-addresses in Apache logfiles rotatelogs n n Create and update user authentication files for basic authentication logresolve n n Manipulate DBM password databases. htpasswd n n Create and update user authentication files for digest authentication Switch User For Exec Other Programs n Support tools with no own manual page.
Apache – Arquivos de configuração n n /var/log/apache 2 /etc/apache 2 n n n apache 2. conf cond. d httpd. conf principal arquivo de configuração ports. conf /usr/sbin/apache 2
Arquivos de Configuração n n n Principais arquivos de configuração Sintaxe dos arquivos de configuração Módulos Escopo das Diretivas Arquivos. htaccess
Arquivos de Configuração n /etc/apache 2 n n n n n apache 2. conf. d/ envvars httpd. conf mod-available/ mods-enabled/ ports. conf sites-available/ sites-enabled/
Arquivos de Configuração n n n /usr/sbin/apache 2 ctl /etc/init. d/apache 2 /etc/default/apache 2 /usr/lib/apache 2 /usr/share/apache 2
Arquivos de Configuração n n Arquivo /etc/init. d/apache 2 (usado principalmente em distribuições Debian e derivadas) /etc/init. d/httpd (usadas em outras distribuições e recomendada pela Apache) maurocl@ubuntu-server: /etc/init. d$. /apache 2 * Usage: /etc/init. d/apache 2 {start|stop|restart|reload|force-reload}
apache 2. conf n É o principal arquivo de configuração do Apache 2
Ports. conf n No Apache 2 a configuração de portas é feita pelo arquivo /etc/apache 2/ports. conf
Aliases de interfaces de rede Para tornar permanente os aliases de interfaces de rede é necessário alterar o arquivo n n /etc/init. d/bootmisc. sh /etc/rd. d/rc. local Essa mudança depende da distribuição do Linux usada.
Arquivos de Log n /var/log/apache 2/error. log de erros n /var/log/apache 2/access. log de acessos Diretório ‘default’ n /var/www/apache 2 -default
Access Log n n Loga as informações referentes a quem está acessando o servidor As informações são registradas no formato CLF (Common Log Format)
access. log cat access_log 192. 168. 7. 14 - - [16/Sep/2008: 16: 58: 23 -0300] "GET / HTTP/1. 1" 403 3918 "-" "Mozilla/5. 0 (Macintosh; U; Intel Mac OS X 10. 5; en-US; rv: 1. 9. 0. 1) Gecko/2008070206 Firefox/3. 0. 1" 192. 168. 7. 14 - - [16/Sep/2008: 16: 58: 23 -0300] "GET /icons/apache_pb 2. gif HTTP/1. 1" 200 2414 "http: //192. 168. 7. 30/" "Mozilla/5. 0 (Macintosh; U; Intel Mac OS X 10. 5; en-US; rv: 1. 9. 0. 1) Gecko/2008070206 Firefox/3. 0. 1" 192. 168. 7. 14 - - [16/Sep/2008: 16: 58: 23 -0300] "GET /icons/poweredby. png HTTP/1. 1" 200 3034 "http: //192. 168. 7. 30/" "Mozilla/5. 0 (Macintosh; U; Intel Mac OS X 10. 5; en-US; rv: 1. 9. 0. 1) Gecko/2008070206 Firefox/3. 0. 1" 192. 168. 7. 14 - - [16/Sep/2008: 16: 58: 24 -0300] "GET /favicon. ico HTTP/1. 1" 404 286 "-" "Mozilla/5. 0 (Macintosh; U; Intel Mac OS X 10. 5; en-US; rv: 1. 9. 0. 1) Gecko/2008070206 Firefox/3. 0. 1" 192. 168. 7. 14 - - [16/Sep/2008: 16: 58: 27 -0300] "GET /favicon. ico HTTP/1. 1" 404 286 "-" "Mozilla/5. 0 (Macintosh; U; Intel Mac OS X 10. 5; en-US; rv: 1. 9. 0. 1) Gecko/2008070206 Firefox/3. 0. 1" 192. 168. 7. 14 - - [16/Sep/2008: 17: 04: 02 -0300] "GET /perl-status HTTP/1. 1" 403 290 "-" "Mozilla/5. 0 (Macintosh; U; Intel Mac OS X 10. 5; en-US; rv: 1. 9. 0. 1) Gecko/2008070206 Firefox/3. 0. 1" 192. 168. 7. 14 - - [16/Sep/2008: 17: 04: 12 -0300] "GET /perl-status/ HTTP/1. 1" 403 291 "-" "Mozilla/5. 0 (Macintosh; U; Intel Mac OS X 10. 5; en-US; rv: 1. 9. 0. 1) Gecko/2008070206 Firefox/3. 0. 1" 192. 168. 7. 14 - - [16/Sep/2008: 17: 06: 24 -0300] "GET /perl/test. pl HTTP/1. 1" 200 14 "-" "Mozilla/5. 0 (Macintosh; U; Intel Mac OS X 10. 5; en-US; rv: 1. 9. 0. 1) Gecko/2008070206 Firefox/3. 0. 1"
Error Log n O arquivo errorlog registra o log de erros do Apache.
error. log cat error_log [Tue Sep 16 16: 57 2008] [notice] SELinux policy enabled; httpd running as context unconfined_u: system_r: httpd_t: s 0 [Tue Sep 16 16: 57 2008] [notice] su. EXEC mechanism enabled (wrapper: /usr/sbin/suexec) [Tue Sep 16 16: 57: 58 2008] [notice] Digest: generating secret for digest authentication. . . [Tue Sep 16 16: 57: 58 2008] [notice] Digest: done [Tue Sep 16 16: 57: 59 2008] [notice] mod_python: Creating 4 session mutexes based on 256 max processes and 0 max threads. [Tue Sep 16 16: 57: 59 2008] [notice] mod_python: using mutex_directory /tmp [Tue Sep 16 16: 57: 59 2008] [notice] Apache/2. 2. 8 (Unix) DAV/2 PHP/5. 2. 5 mod_python/3. 3. 1 Python/2. 5. 1 mod_ssl/2. 2. 8 Open. SSL/0. 9. 8 g mod_perl/2. 0. 3 Perl/v 5. 10. 0 configured -- resuming normal operations [Tue Sep 16 16: 58: 23 2008] [error] [client 192. 168. 7. 14] Directory index forbidden by Options directive: /var/www/html/ [Tue Sep 16 16: 58: 24 2008] [error] [client 192. 168. 7. 14] File does not exist: /var/www/html/favicon. ico [Tue Sep 16 16: 58: 27 2008] [error] [client 192. 168. 7. 14] File does not exist: /var/www/html/favicon. ico [Tue Sep 16 17: 03: 31 2008] [notice] SIGHUP received. Attempting to restart [Tue Sep 16 17: 03: 31 2008] [notice] Digest: generating secret for digest authentication. . . [Tue Sep 16 17: 03: 31 2008] [notice] Digest: done [Tue Sep 16 17: 03: 31 2008] [notice] mod_python: Creating 4 session mutexes based on 256 max processes and 0 max threads. [Tue Sep 16 17: 03: 31 2008] [notice] mod_python: using mutex_directory /tmp [Tue Sep 16 17: 03: 31 2008] [notice] Apache/2. 2. 8 (Unix) DAV/2 PHP/5. 2. 5 mod_python/3. 3. 1 Python/2. 5. 1 mod_ssl/2. 2. 8 Open. SSL/0. 9. 8 g mod_perl/2. 0. 3 Perl/v 5. 10. 0 configured -- resuming normal operations [Tue Sep 16 17: 04: 02 2008] [error] [client 192. 168. 7. 14] client denied by server configuration: /var/www/html/perl-status [Tue Sep 16 17: 04: 12 2008] [error] [client 192. 168. 7. 14] client denied by server configuration: /var/www/html/perl-status
Processos $ ps aux | grep apache root@ubuntu-server: /var/www/apache 2 -default# ps aux | grep apache root 3896 0. 0 2. 3 20016 5996 ? Ss 19: 44 0: 00 /usr/sbin/apache 2 -k start www-data 3915 0. 0 1. 2 20016 3208 ? S 19: 44 0: 00 /usr/sbin/apache 2 k start www-data 3916 0. 0 1. 2 20016 3208 ? S 19: 44 0: 00 /usr/sbin/apache 2 k start www-data 3917 0. 0 1. 2 20016 3208 ? S 19: 44 0: 00 /usr/sbin/apache 2 k start www-data 3918 0. 0 1. 2 20016 3208 ? S 19: 44 0: 00 /usr/sbin/apache 2 k start www-data 3919 0. 0 1. 2 20016 3208 ? S 19: 44 0: 00 /usr/sbin/apache 2 k start -
Versão do Apache instalada root@ubuntu-server: ~# apache 2 ctl -v Server version: Apache/2. 2. 3 Server built: Jan 15 2007 18: 14: 50
Versão do Apache instalado (detalhado) root@ubuntu-server: ~# apache 2 ctl -V Server version: Apache/2. 2. 3 Server built: Jan 15 2007 18: 14: 50 Server's Module Magic Number: 20051115: 3 Server loaded: APR 1. 2. 7, APR-Util 1. 2. 7 Compiled using: APR 1. 2. 7, APR-Util 1. 2. 7 Architecture: 32 -bit Server MPM: Prefork threaded: no forked: yes (variable process count)
Versão do Apache instalado (detalhado) (2) Server compiled with. . -D APACHE_MPM_DIR="server/mpm/prefork" -D APR_HAS_SENDFILE -D APR_HAS_MMAP -D APR_HAVE_IPV 6 (IPv 4 -mapped addresses enabled) -D APR_USE_SYSVSEM_SERIALIZE -D APR_USE_PTHREAD_SERIALIZE -D SINGLE_LISTEN_UNSERIALIZED_ACCEPT -D APR_HAS_OTHER_CHILD -D AP_HAVE_RELIABLE_PIPED_LOGS -D DYNAMIC_MODULE_LIMIT=128 -D HTTPD_ROOT="" -D SUEXEC_BIN="/usr/lib/apache 2/suexec" -D DEFAULT_PIDLOG="/var/run/apache 2. pid" -D DEFAULT_SCOREBOARD="logs/apache_runtime_status" -D DEFAULT_LOCKFILE="/var/run/apache 2/accept. lock" -D DEFAULT_ERRORLOG="logs/error_log" -D AP_TYPES_CONFIG_FILE="/etc/apache 2/mime. types" -D SERVER_CONFIG_FILE="/etc/apache 2. conf"
Alias de diretórios n http: //192. 168. 7. 15/icons/
Estatística de uso dos Web Servers n n Resultados da pesquisa de agosto do Netcraft mostram nova redução do percentual do Apache - "A liderança do Apache nas estatísticas de servidores web mantidas pelo Netcraft continua inquestionável, embora em declínio continuado. Os dados de agosto mostram mais uma pequena redução, e agora o m" (continua. . . ) Para saber mais, visite o BR-Linux (http: //brlinux. org/).
Uso de Servidores web Apache 48, 4% IIS 34, 2% Outros 17, 4% Fonte: http: //br-linux. org/linux/resultados-da-pesquisa-de-agosto-do-netcraft
Apache cresce ainda mais no mercado de servidores As estatísticas de servidores web liberadas mensalmente pela Netcraft mostram que o servidor livre Apache opera, agora, 1, 2 milhões de sites a mais que há um mês. Isso significa que o servidor web de código aberto está por trás de 176. 748. 506 dos websites pesquisados, quase metade de toda a amostra. Em segundo lugar na lista está o Microsoft IIS, com uma fatia de 35%, seguido do Google Web Server (GWS) com 6% e do Lighttpd, também de código aberto, com 3% (1, 7 milhões de sites). Segundo a Netcraft, uma nova promessa é o servidor Nginx, de autoria do programador russo Igor Sysoev. Em sua primeira aparição na lista, ele já alcançou o quinto lugar. As estatísticas estão disponíveis no site da Netcraft. O ranking de servidores de agosto está aqui. Publicado em 01/09/2008 às 10: 45 em http: //www. linuxnewmedia. com. br/noticia/apache_cresce_ainda_mais_no_mercado_de_servidores
Netcraft Web Server Survey n http: //survey. netcraft. com/Reports/200 808/
Web. DAV (Web-based Distributed and Versioning) n n n É uma extensão ao HTTP Permite criar, copiar, mover ou excluir arquivos em um servidor Web Módulo mod_dev
Módulos n n n O Apache é um sistema divido em módulos Apenas um conjunto mínimo de módulos são carregados no núcleo do servidor http Outras funcionalidades são acrescentadas por meio de outros módulos
Módulos (2) Módulo worker. c mod_auth. c mpm_winnt. c Os módulos podem ser compilados junto com o Apache ou carregados dinamicamente
Módulos (3) n n mpm_prefork Apache estruturado em processos mpm_worker Apache estruturado em threads
Suporte a Dynamic Shared Object (DSO) n n São módulos que podem ser carregados dinamicamente Um módulo é definido como DSO no momento em que se está definindo a compilação do Apache
Status de um Módulo n n n Núcleo (N) MPM (multi-processamento) (M) Base (B) Extensão (E) Experimental (X)
Core Features and Multi. Processing Modules core Core Apache HTTP Server features that are always available mpm_common A collection of directives that are implemented by more than one multiprocessing module (MPM) beos This Multi-Processing Module is optimized for Be. OS. event An experimental variant of the standard worker MPM mpm_netware Multi-Processing Module implementing an exclusively threaded web server optimized for Novell Net. Ware
Core Features and Multi. Processing Modules mpmt_os 2 Hybrid multi-process, multi-threaded MPM for OS/2 prefork Implements a non-threaded, pre-forking web server mpm_winnt Este módulo Multi-Processing é otimizado para Windows NT. worker Multi-Processing Module implementing a hybrid multi-threaded multi-process web server
Lista de Módulos n Veja http: //httpd. apache. org/docs/2. 2/mod/
Exemplos de Módulos n n mod_rewrite: provê um engine (“motor”) para reescrver URLs requisitadas sob demanda mod_deflate: comprime o conteúdo antes de enviar ao cliente mod_cband: controla a largura de banda usada mod_speling: tenta corrigir URLs com erros que o usuário fez por engano, como esquecer de acrescentar um ‘s’ a site, ou ignorando a questão de letras maiúsculas e minúsculas.
Código de Status do HTTP n n n Informativos (1 XX) Requisição bem sucedida (2 XX) Redirecionamento (3 xx) Erro na requisição do cliente (4 XX) Erro do servidor (5 XX)
Autenticação no Apache n n n Access. File. Name (. htaccess) Allow. Override Auth. Type Auth. Name Require Satisfy
Autenticação (2) n n n . httpasswd. htaces Utilitário htpasswd: #. /htpasswd –c. htpasswd <username>
Modelo CGI (Common Gateway Interface) n n n O usuário acessa uma URL Essa URL indica a necessidade de execução de um programa externo via CGI O servidor Web carrega o programa, redireciona a requisição, aguarda o processamento e recebe a resposta que é enviada de volta ao usuário.
CGI (Common Gateway Interface) n CGI define uma forma para o servidor web interagir com programas externos que geram conteúdo dinamicamente. Esses programas são frequentemente chamados programas CGI ou scripts CGI. É a maneira mais simples e mais comum de colocar conteúdo dinâmico em um site na web.
Servidor LAMP / WAMP / MAMP n n Linux / Windows / Mac Apache My. SQL PHP
Exemplo de execução de um script PHP com acesso a base de dados My. SQL
Document. Root (raiz da localização dos arquivos) n /var/www/html
Estrutura de diretórios [root@localhost httpd]# find $PWD /etc/httpd/logs /etc/httpd/run /etc/httpd/conf/magic /etc/httpd/conf/httpd. conf /etc/httpd/conf. d/proxy_ajp. conf /etc/httpd/conf. d/manual. conf /etc/httpd/conf. d/ssl. conf /etc/httpd/conf. d/perl. conf /etc/httpd/conf. d/welcome. conf /etc/httpd/conf. d/webalizer. conf /etc/httpd/conf. d/README /etc/httpd/conf. d/perl. conf~ /etc/httpd/conf. d/python. conf /etc/httpd/conf. d/php. conf /etc/httpd/conf. d/squid. conf /etc/httpd/modules
Arquivos de log /var/log/httpd [root@localhost httpd]# ll total 24 -rw-r--r-- 1 root 1536 -rw-r--r-- 1 root 2792 -rw-r--r-- 1 root 1931 -rw-r--r-- 1 root 3730 -rw-r--r-- 1 root 333 -rw-r--r-- 1 root 1140 -rw-r--r-- 1 root 0 2008 -09 -16 2008 -09 -10 2008 -09 -07 17: 06 16: 43 17: 04 16: 43 16: 54 17: 03 16: 43 16: 54 access_log-20080914 error_log-20080914 ssl_access_log ssl_error_log-20080914 ssl_request_log
httpd. conf n n Arquivo principal de configuração do Apache localizado em /etc/httpd/conf/
Configuração do Apache n As diretivas de configuração estão agrupadas em três sessões básicas: n n n global_environment (configuração global do servidor Apache) diretivas que definem os parâmetros do servidor principal (main) ou padrão configurações para Hosts Virtuais (Virtual Hosts)
n n n Sessão 1 – Global Environment Sessão 2 – Main server configuration Sessão 3 – Virtual Hosts
Variáveis de Ambiente
Sites seguros com SSL (Secure Socket Layer) n n Um certificado SSL é normalmente emitido por uma Autoridade Certificadora (Certified Authority (CA)) – garante a identidade do servidor Web em questão. Conexão segura HTTPS (HTTP seguro)
Conexões Segura Cliente Servidor 1. Cliente solicita uma conexão segura através de uma URL https: //. . . 2. Antes de estabelecer uma conexão o servidor envia o CA ao cliente 1. Se o certificado emitido não for autêntico para o domínio pelo qual response uma msg de alerta será exibida no cliente 2. Se o certificado for válido a conexão continuará. Uma chave é criada para sessão e enviada ao servidor. Essa chave é criptografada utilizando a chave publica do servidor 3. O servidor decodifica a chave da sessão utilizando sua chave privada. A partir desse momento, todo o conteúdo da conexão será criptografado por essa sessão, que é de conhecimento exclusivo do cliente e do servidor em questão
Criação do Certificado n Algumas CAs que fornecem certificados para servidores Web são: n n n Thawte Veri. Sign Go. Daddy A emissão de certificados é um serviço pago. A CAcert emite certificados gratuitamente.
Instalação do Certificado
Conexão Segura – Protocolo SSL n Porta 443 corresponde ao protocolo SSL utilizado na conexão segura
Bibliografia n n [1] MARCELO, A. Apache – Configurando o Servidor Web para Linux. 2ª edição. Rio de Janeiro: Brasport, 2006. [2] VEIGA, R. G. A. Apache – Guia de Consulta Rápida. São Paulo: Novatec, 2006.
Links n [1] http: //www. cacert. org/
- Slides: 73