Tutoriais Apache para iniciantes
O que é Apache?
Apache é um software aplicativo notável. É o aplicativo de servidor Web mais utilizado no mundo, com mais de 50% de participação no mercado de servidores Web comerciais. Apache é o aplicativo de servidor Web mais usado em sistemas operacionais do tipo Unix, mas pode ser usado em quase todas as plataformas, como Windows, OS X, OS/2, etc. A palavra Apache foi tirada do nome da tribo nativa americana 'Apache', famosa por suas habilidades em guerra e elaboração de estratégias.
É um aplicativo de servidor web modular baseado em processo que cria um novo thread a cada conexão simultânea. Ele oferece suporte a vários recursos; muitos deles são compilados como módulos separados e estendem sua funcionalidade principal e podem fornecer tudo, desde suporte a linguagem de programação no servidor até mecanismo de autenticação. A hospedagem virtual é um recurso que permite que um único servidor Web Apache atenda vários sites diferentes.
Como instalar o apache
Existem inúmeras maneiras de instalar o pacote ou aplicativo. Estão listados abaixo -
- Uma das características desta abertura aplicativo da web de origem é que qualquer pessoa pode fazer o instalador de acordo com seu próprio ambiente. Isso permitiu que vários fornecedores como Debian, Red Hat, FreeBSD, Suse etc. personalizassem a localização dos arquivos e a configuração do Apache levando em consideração outros aplicativos instalados e o sistema operacional base.
- Além de instalá-lo a partir de um instalador baseado em fornecedor, há sempre a opção de compilá-lo e instalá-lo a partir do código-fonte. Instalar o Apache a partir do arquivo fonte é uma plataforma independente e funciona para todos os sistemas operacionais.
O servidor web apache é uma aplicação modular onde o administrador pode escolher a funcionalidade necessária e instalar diferentes módulos conforme sua necessidade.
Todos os módulos podem ser compilados como um Objetos compartilhados dinâmicos (DSO é um arquivo objeto que pode ser compartilhado por vários aplicativos enquanto eles estão em execução) que existe separadamente do arquivo principal do Apache. A abordagem DSO é altamente recomendada, pois torna muito simples a tarefa de adicionar/remover/atualizar módulos da configuração dos servidores.
Instale Apache:Plataforma Linux
Em sistemas baseados em Red Hat ou rpm
Se você estiver usando uma distribuição Linux baseada em rpm (RedHat Package Manager é um utilitário para instalação de aplicativos em sistemas Linux), ou seja, Red Hat, Fedora, CentOs, Suse, você pode instalar este aplicativo pelo Gerenciador de pacotes específico do fornecedor ou construindo diretamente o arquivo rpm do tarball de origem disponível.
Você pode instalar o Apache através do Gerenciador de Pacotes padrão disponível em todas as distribuições baseadas em Red Hat, como CentOs, Red Hat e Fedora.
[root@amsterdam ~]# yum install httpd
O tarball de origem do Apache pode ser convertido em um arquivo rpm usando o seguinte comando.
[root@amsterdam ~]# rpmbuild -tb httpd-2.4.x.tar.bz2
É obrigatório ter o pacote -devel instalado em seu servidor para criar o arquivo .rpm a partir do código-fonte.
Depois de converter o arquivo de origem em um instalador rpm, você pode usar o seguinte comando para instalar o Apache.
[root@amsterdam ~]# rpm –ivh httpd-2.4.4-3.1.x86_64.rpm
Após a instalação o servidor não inicia automaticamente, para iniciar o serviço é necessário utilizar qualquer um dos seguintes comandos no Fedora, CentOs ou Red Hat.
[root@amsterdam ~]# /usr/sbin/apachectl start [root@amsterdam ~]# service httpd start [root@amsterdam ~]# /etc/init.d/httpd start
Instale o Apache da fonte
A instalação do Apache a partir da fonte requer que o pacote –devel seja instalado em seu servidor. .Você pode encontrar a versão mais recente disponível do Apache, você pode baixá-la aqui . Depois de baixar o arquivo fonte, mova-o para a pasta /usr/local/src.
[root@amserversterdam ~] cd /usr/local/src [root@amserversterdam ~] gzip -d httpd-2.2.26.tar.gz [root@amserversterdam ~] tar xvf httpd-2.2.26.tar [root@amserversterdam ~] httpd-2.2.26
Para ver todas as opções de configuração disponíveis para o Apache, você pode usar a opção ./configure –help. A opção de configuração mais comum é –prefix={nome do diretório de instalação}.
[root@amserversterdam ~]./configure --help [root@amserversterdam ~]./configure –prefix=/usr/local/apache –enable-so [root@amserversterdam ~] make [root@amserversterdam ~] make install
O exemplo acima mostra a compilação do Apache no diretório /usr/local/apache com o recurso DSO. A opção –enable-so pode carregar os módulos necessários para o Apache em tempo de execução por meio do mecanismo DSO, em vez de exigir uma recompilação.
Assim que a instalação for concluída, você pode navegar na página padrão do servidor web com seu navegador favorito. Se o firewall estiver habilitado em seu servidor, você deverá abrir uma exceção para a porta 80 no firewall do seu sistema operacional. Você pode usar o seguinte comando para abrir a porta 80.
iptables -I INPUT -p tcp --dport 80 -j ACCEPT
serviço iptables salva
Você pode ver o padrão Tela de boas-vindas do Apache2 navegando no endereço IP do seu servidor.
O que é host virtual?
Um servidor web Apache pode hospedar vários sites no MESMO servidor. Você não precisa de uma máquina de servidor e software Apache separados para cada site. Isto pode ser alcançado usando o conceito de Host Virtual or VHost.
Qualquer domínio que você deseja hospedar em seu servidor web terá uma entrada separada no arquivo de configuração do Apache.
Tipos de host virtual Apache
- Host virtual baseado em nome
- Host virtual baseado em endereço ou IP e.
Host virtual baseado em nome
A hospedagem virtual baseada em nome é usada para hospedar vários sites virtuais em um único endereço IP.
Para configurar a hospedagem virtual baseada em nome, você deve definir o endereço IP no qual receberá as solicitações Apache para todos os sites desejados. Você pode fazer isso pela diretiva NameVirutalHost dentro da configuração do Apache, ou seja Arquivo httpd.conf/apache2.conf.
Exemplo de host virtual Apache:
NameVirtualHost *:80 <VirtualHost 192.168.0.108:80> ServerAdmin webmaster@example1.com DocumentRoot /var/www/html/example1.com ServerName www.example1.com </VirtualHost> <VirtualHost 192.168.0.108:80> ServerAdmin admin@example2.com DocumentRoot /var/www/html/example2.com ServerName www.example2.com </VirtualHost>
Você pode adicionar quantos hosts virtuais conforme sua necessidade. Você pode verificar seus arquivos de configuração da web com:
[root@amsterdam ~]#httpd –t Syntax OK
Se o arquivo de configuração tiver alguma sintaxe errada, ocorrerá um erro
[root@115 conf.d]# httpd -t Syntax error on line 978 of /etc/httpd/conf/httpd.conf: Invalid command '*', perhaps misspelled or defined by a module not included in the server configuration
Host virtual baseado em IP
Para configurar a hospedagem virtual baseada em IP, você precisa de mais de um endereço IP configurado em seu servidor. Portanto, o número de vhost apache dependerá do número de endereços IP configurados em seu servidor. Se o seu servidor tiver 10 endereços IP, você poderá criar 10 hosts virtuais baseados em IP.
No diagrama acima, dois sites example1.com e example2.com receberam IPs diferentes e usam hospedagem virtual baseada em IP.
Listen 192.168.0.100:80 <VirtualHost 192.168.10.108:80> ServerAdmin webmaster@example1.com DocumentRoot /var/www/html/example1.com ServerName www.example1.com </VirtualHost> <VirtualHost 192.168.10.109:80> ServerAdmin admin@example2.com DocumentRoot /var/www/html/example2.com ServerName www.example2.com </VirtualHost>
O que o Apache precisa para executar o arquivo PHP?
Executando arquivos PHP nas necessidades do Apache mod_php habilitado em seu servidor. Ele permite que o Apache interprete arquivos .Php. Possui manipuladores PHP que interpretam o código PHP no apache e enviam HTML para o seu servidor web.
Se mod_php estiver habilitado em seu servidor, você terá um arquivo chamado php.conf no diretório /etc/httpd/conf.d/. Você também pode verificar com:
httpd -M | grep "php5_module"
A saída será semelhante a:
Manipuladores PHP no Apache
- mod_php
- CGI
- CGI rápido
- suPHP
mod_phpé o manipulador PHP mais antigo, faz do PHP parte do Apache e não chama nenhum processo PHP externo. Este módulo é instalado por padrão em todos os repositórios de distribuição Linux, portanto ativar/desativar este módulo é muito fácil.
Se você estiver usando CGI rápido como seu manipulador de PHP, você pode definir várias versões de PHP para serem usadas por diferentes contas em seu servidor.
FastCGI, ou seja mod_fastcgi é uma extensão de mod_fcgid, enquanto mod_fcgid é uma alternativa de alto desempenho ao CGI, ou seja, mod_cgi. Ele inicia um número suficiente de instâncias de CGI para lidar com solicitações simultâneas da web. Ele também usa suexec para oferecer suporte a diferentes usuários com suas próprias instâncias de PHP e melhora a segurança da web.
A execução de arquivos Ruby no Apache precisa que o mod_ruby esteja habilitado. O Apache também pode lidar com arquivos Ruby através do FastCGI. É possível usar várias versões do Ruby com a ajuda do mod_fcgid, ou seja, FastCGI.
Você também pode instalar o Apache passageiro e configurar o Apache para usá-lo para servir páginas Ruby.
(Passageiro Phusion também conhecido como “passageiro”é um módulo de servidor web gratuito projetado para integração com Apache e Nginx)
Passos para instalar o mod_ruby em seu servidor –
cd /tmp wget http://www.modruby.net/archive/mod_ruby-1.2.6.tar.gz tar zxvf mod_ruby-1.2.6.tar.gz cd mod_ruby-1.2.6/ ./configure.rb --with-apr-includes=/usr/include/apr-1 make make install
Como executar Ruby com Apache
Temos que adicionar o módulo mod_ruby à configuração do Apache, ou seja, /etc/httpd/conf.d/ruby.conf e adicionar a seguinte linha.
LoadModule ruby_module módulos/mod_ruby.so
Se você deseja ativar ou desativar esses módulos, você deve editar o arquivo de configuração do apache e comentar ou descomentar esses módulos, caso o servidor web já esteja compilado com esses módulos.
Como proteger o servidor Web Apache
Proteger o seu servidor web é muito importante, significa permitir que outras pessoas vejam apenas as informações pretendidas, proteger os seus dados e restringir o acesso.
Estas são coisas comuns que melhoram a segurança dos seus servidores web Apache.
1) Ocultando a versão do Apache e informações do sistema operacional:
O Apache exibe sua versão e o nome do sistema operacional em erros, conforme mostrado na imagem abaixo.
Um hacker pode usar essas informações para lançar um ataque usando as vulnerabilidades disponíveis publicamente na versão específica do servidor ou sistema operacional.
Para evitar que o servidor web Apache exiba essas informações, temos que modificar
Opção “assinatura do servidor” disponível no arquivo de configuração do apache. Por padrão está “ligado”, precisamos desligá-lo.
vim /etc/httpd/conf/httpd.conf
ServerSignature Off ServerTokens Prod
Também definimos “ServerTokens Prod” que informa ao servidor web para retornar apenas o apache e suprimir a versão principal e secundária do sistema operacional
Depois de modificar o arquivo de configuração, você deve reiniciar/recarregar seu servidor web Apache para torná-lo eficaz.
service httpd restart
2) Desativar listagem de diretório
Se o diretório raiz do seu documento não tiver um arquivo de índice, por padrão o seu servidor web Apache mostrará todo o conteúdo do diretório raiz do documento.
Este recurso pode ser desativado para um diretório específico através da “diretiva de opções” disponível no arquivo de configuração do Apache.
<Directory /var/www/html> Options -Indexes </Directory>
3) Desativando módulos desnecessários
É uma boa prática desabilitar todos os módulos desnecessários que não estão em uso. Você pode ver a lista de módulos habilitados disponíveis em seu arquivo de configuração do Apache –
[root@amsterdam ~]#httpd –M perl_module (shared) php5_module (shared) proxy_ajp_module (shared) python_module (shared) ssl_module (shared)
Muitos dos módulos listados podem ser desabilitados como mod_imap, mod_include, mod_info, mod_userdir, mod_autoindex, pois dificilmente são usados por qualquer servidor web de produção.
vi /etc/httpd/conf/httpd.conf #LoadModule auth_digest_module modules/mod_auth_digest.so
Depois de comentar o módulo, salve o arquivo.
Reinicie os serviços Apache com o seguinte comando.
/etc/init.d/httpd restart
4) Restringindo o acesso a arquivos fora do diretório raiz da web
Se você deseja ter certeza de que os arquivos que estão fora do diretório raiz da web não estão acessíveis, você deve certificar-se de que o diretório está restrito com “Permitir” e “Opção Negar” no arquivo de configuração do servidor web.
<Directory/> Options None AllowOverride None Order deny,allow Deny from all </Directory>
Depois de restringir o acesso fora do diretório raiz da web, você não poderá acessar nenhum arquivo localizado em qualquer outra pasta do seu servidor web, você receberá o código de retorno 404.
5) Usando mod_evasive para refutar o ataque DoS
Se você deseja proteger seu servidor web contra Dos (ou seja, negação de serviço), você deve habilitar o módulo mod_evasive. É um módulo de terceiros que detecta ataques Dos e evita que o ataque cause tantos danos quanto causaria se fosse deixado seguir seu curso. Ele pode ser baixado aqui.
6) Usando mod_security para aumentar a segurança do Apache
Este módulo funciona como um firewall para Apache e permite monitorar o tráfego em tempo real. Também evita que o servidor web sofra ataques de força bruta. O módulo mod_security pode ser instalado com o gerenciador de pacotes padrão da sua distribuição.
7) Limitando o tamanho da solicitação
O Apache não tem nenhuma restrição quanto ao tamanho total da solicitação http que possa levar a um ataque DoS. Você pode limitar o tamanho da solicitação de uma diretiva Apache “LimitRequestBody” com a tag de diretório. O valor pode ser definido entre 0 e 2 GB (ou seja, 2147483647 bytes) conforme sua necessidade.
<Directory "/var/www/html/uploads"> LimitRequestBody 512000 </Directory>
Formato de registro Apache
Os logs do Apache fornecem informações detalhadas que ajudam a detectar problemas comuns no servidor.
Para criar logs de acesso, mod_log_configmodule deve estar habilitado.
Três diretivas disponíveis no arquivo de configuração do Apache, ou seja
- TransferLog: Criando um arquivo de log.
- LogFormat: especificando um formato personalizado.
- CustomLog: Criando e formatando um arquivo de log.
A diretiva TransferLog está disponível no arquivo de configuração do Apache e gira os arquivos de log do host virtual de acordo com os parâmetros definidos.
<VirtualHost www.example.com> ServerAdmin webmaster@example.com DocumentRoot /usr/www/example/httpd/htdocs/ ServerName www.example.com ServerAlias example.com www.example ErrorLog /usr/www/example/httpd/logs/error_log TransferLog/usr/www/example/httpd/logs/accesslog CustomLog /usr/www/example/httpd/logs/accesslog combined </VirtualHost>
Dois tipos de formato de log Apache
- Formato de registro comum
- Formato de log combinado.
Você pode habilitá-los editando o arquivo de configuração do Apache, ou seja, arquivo apache2.conf (Debian/ubuntu) ou httpd.conf (sistemas baseados em rpm)
Formato de registro comum
LogFormat "%h %l %u %t \"%r\" %>s %b" common CustomLog logs/access_log common
Log comum gerado pelo Apache
[Wed Oct 11 14:32:52 2000] [error] [client 127.0.0.1] client denied by server configuration: /export/home/live/ap/htdocs/test
Formato de registro combinado
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-agent}i\"" combined CustomLog log/access_log combined
Aqui,
- %h é o host remoto
- %l é a identidade do usuário determinada por identd
- %u é o nome de usuário determinado pela autenticação HTTP
- %t é o horário em que o servidor terminou de processar a solicitação.
- %r é a linha de solicitação do cliente. (“OBTER/HTTP/1.0”)
- %>s é o código de status enviado do servidor para o cliente (500, 404 etc.)
- %b é o tamanho da resposta ao cliente (em bytes)
- Referer é a página vinculada a este URL.
- User-agent é a string de identificação do navegador.
Log combinado gerado pelo Apache:
199.187.122.91 - - [06/Mar/2014:04:22:58 +0100] "GET /robots.txt HTTP/1.1" 404 1228 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727)"
O log personalizado cria um arquivo de log separado para cada host virtual em seu servidor. Ele precisa ser especificado na seção de host virtual do arquivo de configuração.
Você pode ver a configuração do host virtual mencionada abaixo, o log gerado será personalizado para esse host virtual e o formato será combinado.
Configure seu primeiro servidor Web de produção
1. Para ter um servidor web de produção em execução, você precisa de um servidor dedicado nó (instância física/virtual ou em nuvem) executando Linux/Unix, Windows, MacOS etc.
2. O Servidor Web deve ter um conexão direta de rede e de um endereço IP estático configurado nele.
3. Precisa ter todos os módulos necessário para executar páginas da web. Se um servidor web processa páginas PHP, ele precisa ter o módulo PHP habilitado.
- Também precisa ter um bom antivirus aplicativo configurado e em execução para proteger o servidor Web contra ataques de malware ou vírus. Você também precisa de um mecanismo para atualizar o aplicativo antivírus/antimalware configurado regularmente, sem qualquer intervenção manual, a fim de obter o máximo benefício deles.
- Se você tem centenas de domínios para serem hospedados em seu servidor web, você deve implementar limitações na cota do sistema de arquivos para cada domínio, número de bancos de dados que cada domínio pode criar, número de contas de e-mail por domínio, etc.
- Se o seu servidor web foi configurado para serviços de hospedagem compartilhada, os usuários em seu servidor web precisam ser restritos. Um usuário de hospedagem compartilhada deve ter menos privilégios de usuário para não danificar arquivos importantes e quebrar todo o servidor. O Apache não fornece essa funcionalidade e precisa de diferentes aplicativos de terceiros e personalização do sistema operacional para conseguir isso.
- Se você estiver adicionando um novo domínio em seu servidor web, é necessário editar centenas de arquivos de configuração para habilitar todos os recursos do domínio adicionado.
- Se um dos domínios hospedados exigir configuração PHP diferente do que o resto dos domínios, implementar isso no servidor web Apache principal é muito complexo e precisa em grande parte da personalização do seu servidor web.
- Um servidor web de produção precisa de um firewall para bloquear tráfego indesejado que pode causar alta carga em seu servidor. Implementando IPTABLE regras com linha de comando são muito complexas. É necessário conhecimento do ambiente central Linux/Unix para escrever regras de firewall eficazes para bloquear tráfego indesejado. IPTABLE é baseado no módulo netfilter; é um firewall no nível do sistema operacional que permite ao administrador criar regras para o tráfego de entrada/saída no servidor.
- Um servidor web de produção requer vários aplicativos diferentes, como Envie um e-mail para, FTP para upload de arquivos, Domain Name System para domínios estacionados. Gerenciar todos esses aplicativos em um sistema Linux/Unix central requer conhecimento nas respectivas tecnologias.
Assim, pode-se dizer que gerenciar um servidor web para múltiplos domínios é uma tarefa muito complexa e requer a edição de centenas de arquivos de configuração, customizando cada aplicação para atingir o resultado desejado. Solucionar qualquer configuração incorreta será muito difícil para iniciantes.
A solução usando Cpanel ou software similar
Cpanel fornece uma maneira gráfica de gerenciar seu servidor web. O objetivo é fornecer serviços de hospedagem em massa fáceis de usar e configurar. O cPanel reduziu as barreiras técnicas de entrada na hospedagem e gerenciamento de servidores web. Ele torna tarefas complexas mais fáceis e fornece muitas interfaces da web úteis e fáceis de usar que executam tarefas comuns de administração do sistema necessárias para operar um servidor da web.
cPanel compila sua própria versão de software.
Se você tiver que recompilar seu servidor web, ou seja, Apache na plataforma Linux normal, você terá que selecionar/pesquisar manualmente o módulo necessário. cPanel fornece funcionalidade Easyapache que é um método de compilação de servidor web baseado em script.
Ele não apenas fornece serviços da web, mas também Mail, DNS, FTP e muitos outros serviços necessários para seu aplicativo da web.
Uma tarefa que requer experiência em hospedagem baseada em Linux/Unix, como instalação de SSLs, recompilação do Apache com diferentes módulos PHP, atualização do Web Security, configuração de regras IPTABLE eficazes, adição de usuários FTP, criação de contas de e-mail para cada domínio, verificação da raiz do documento com antivírus e a criação de bancos de dados é fácil de concluir com o cPanel.
Ele fornece muitos scripts que corrigem, instalam e solucionam problemas administrativos comuns.
Ele fornece funcionalidade de backup e restauração, eliminando a necessidade de copiar manualmente os arquivos para o armazenamento de backup. Se você estiver fazendo backup do seu domínio, o cPanel criará um arquivo tar que conterá a pasta raiz do documento, contas de e-mail e e-mails, contas de FTP, bancos de dados, registros DNS e outros aplicativos.
Ele também fornece uma documentação robusta e possui uma grande comunidade de usuários onde você pode discutir e obter soluções para seus problemas.
Então, pode-se dizer que cPanel é o melhor aplicativo para gerenciar seu servidor web com os recursos necessários. Ele fornece a você uma interface fácil de usar para gerenciar seu domínio e um mecanismo para evitar a complexidade de gerenciar o servidor web principal.
Existem muitos produtos concorrentes do cPanel, como Plesk, ISPConfig, Ajenti, Kloxo, Open Panel, Zpanel etc.