Tutoriais do Apache para iniciantes

O que é Apache?

Apache é um notável software de aplicação. É o aplicativo de servidor Web mais usado no mundo, com mais de 50% de participação no mercado de servidores Web comerciais. Apache é o aplicativo de servidor Web mais amplamente 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 do Native Tribo americana ' Apache' , famosa por suas habilidades na guerra e na formulação de estratégias.

É um aplicativo de servidor da web modular baseado em processo que cria um novo encadeamento 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 de linguagem de programação do lado do servidor até mecanismo de autenticação. A hospedagem virtual é um recurso que permite que um único Apache Web Server atenda a vários sites diferentes.

O que você aprenderá: [ exposição ]

Como instalar o Apache

Existem várias maneiras de instalar o pacote ou aplicativo. Existem alistados abaixo -

  1. Uma das características deste O 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 do arquivo e a configuração do apache levando em consideração outros aplicativos instalados e o sistema operacional básico.
  2. Além de instalá-lo a partir de um instalador baseado no fornecedor, sempre há a opção de compilá-lo e instalá-lo a partir do código-fonte. A instalação do Apache a partir do arquivo de origem é uma plataforma independente e funciona para todos os sistemas operacionais.

O servidor web apache é um aplicativo modular onde o administrador pode escolher a funcionalidade necessária e instalar diferentes módulos de acordo com sua necessidade.

Todos os módulos podem ser compilados como um Objetos Compartilhados Dinâmicos (DSO é um arquivo de objeto que pode ser compartilhado por vários aplicativos enquanto eles estão em execução) que existe separadamente do arquivo apache principal. A abordagem DSO é altamente recomendada, pois torna a tarefa de adicionar / remover / atualizar módulos da configuração dos servidores muito simples.

Instale o 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 instalar 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, você deve usar 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 última versão disponível do Apache, você pode baixá-la aqui . Depois de baixar o arquivo de origem, 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 dentro do 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 dos servidores da web com seu navegador favorito. Se o firewall estiver habilitado em seu servidor, você deve 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 salvar

Você pode ver o padrão Tela de boas-vindas do Apache2 navegando no endereço IP do seu servidor.

O que é Virtual Host?

Um servidor da web Apache pode hospedar vários sites na MESMO servidor. Você não precisa de uma máquina servidora separada e software apache para cada site. Isso pode ser alcançado usando o conceito de Host Virtual ou 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 Apache Virtualhost

  1. Host virtual baseado em nome
  2. 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 do 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 ServerAdmin This email address is being protected from spambots. You need JavaScript enabled to view it. DocumentRoot /var/www/html/example1.com ServerName www.example1.com ServerAdmin This email address is being protected from spambots. You need JavaScript enabled to view it. DocumentRoot /var/www/html/example2.com ServerName www.example2.com 

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, ele gerará 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ê pode criar 10 hosts virtuais baseados em IP.

No diagrama acima, dois sites example1.com e example2.com receberam IPs diferentes e estão usando hospedagem virtual baseada em IP.

Listen 192.168.0.100:80 ServerAdmin This email address is being protected from spambots. You need JavaScript enabled to view it. DocumentRoot /var/www/html/example1.com ServerName www.example1.com ServerAdmin This email address is being protected from spambots. You need JavaScript enabled to view it. DocumentRoot /var/www/html/example2.com ServerName www.example2.com 

O que o Apache precisa para executar o arquivo Php?

A execução de arquivos Php no Apache precisa 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 de php no Apache

  • mod_php
  • CGI
  • FastCGI
  • suPHP

mod_php é o manipulador de PHP mais antigo, ele torna o PHP parte do apache e não chama nenhum processo externo de PHP. Este módulo é instalado por padrão em todos os repositórios de distribuição do Linux, então habilitar / desabilitar este módulo é muito fácil.

Se você estiver usando FastCGI como seu manipulador de PHP, você pode definir várias versões de PHP para serem usadas por contas diferentes em seu servidor.

FastCGI ou seja mod_fastcgi é uma extensão de mod_fcgid , enquanto que mod_fcgid é uma alternativa de alto desempenho de 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 ativado. O Apache também pode lidar com arquivos ruby ​​por meio do FastCGI. É possível usar várias versões de ruby ​​com a ajuda de mod_fcgid, ou seja, FastCGI.

Você também pode instalar o passageiro apache e configurar o Apache para usá-lo para servir páginas ruby.

(Phusion Passenger também conhecido como passageiro é um módulo de servidor da web gratuito projetado para se integrar com Apache e Nginx)

Etapas 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 modules / mod_ruby.so

Se você quiser habilitar ou desabilitar esses módulos, você deve editar o arquivo de configuração do apache e comentar ou descomentar esses módulos, se o servidor web já estiver compilado com esses módulos.

Como proteger o servidor da Web Apache

Proteger o seu servidor web é muito importante, significa permitir que outros vejam apenas as informações pretendidas e proteger seus dados e restringir o acesso.

Essas são coisas comuns que aumentam a segurança de seus servidores da web Apache.

1) Ocultar a versão do Apache e as informações do sistema operacional:

O Apache exibe sua versão e o nome do sistema operacional com erros, conforme mostrado na captura de tela abaixo.

Um hacker pode usar essas informações para lançar um ataque usando as vulnerabilidades publicamente disponíveis na versão específica do servidor ou sistema operacional.

A fim de evitar que o servidor da web Apache exiba essas informações, temos que modificar

opção de assinatura do servidor disponível no arquivo de configuração do apache. Por padrão, ele está ativado, precisamos desativá-lo.

vim /etc/httpd/conf/httpd.conf
ServerSignature Off ServerTokens Prod

Também configuramos ServerTokens Prod que diz 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 efetivo.

service httpd restart

2) Desativar lista de diretórios

Se o diretório raiz do seu documento não tiver um arquivo de índice, por padrã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.

 Options -Indexes 

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 likemod_imap, mod_include, mod_info, mod_userdir, mod_autoindex, visto que dificilmente são usados ​​por quaisquer servidores 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 quiser ter certeza de que os arquivos que estão fora do diretório raiz da web não estão acessíveis, certifique-se de que o diretório seja restrito com a opção Permitir e Negar em seu arquivo de configuração do servidor web.

 Options None AllowOverride None Order deny,allow Deny from all 

Depois de restringir o acesso fora do diretório raiz da web, você não conseguirá acessar nenhum arquivo localizado em qualquer outra pasta em 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 da web de DOS (ou seja, negação de serviço), você deve habilitar o módulo mod_evasive. É um módulo de terceiros que detecta o ataque Dos e evita que o ataque cause tantos danos quanto faria se fosse deixado para trás. Ele pode ser baixado aqui.

Baixe o arquivo acima

6) Usando mod_security para melhorar a segurança do apache

Este módulo funciona como um firewall para o Apache e permite monitorar o tráfego em tempo real. Também evita que o servidor da web contra ataques de força bruta. O módulo mod_security pode ser instalado com o gerenciador de pacotes padrão de sua distribuição.

7) Limitar o tamanho do pedido

O Apache não tem nenhuma restrição quanto ao tamanho total da solicitação http que poderia levar a um ataque DoS. Você pode limitar o tamanho da solicitação de uma diretiva LimitRequestBody do Apache com a tag de diretório. O valor pode ser definido de 0 a 2 GB (ou seja, 2147483647 bytes) de acordo com sua necessidade.

 LimitRequestBody 512000 

Formato de registro Apache

Os logs do Apache fornecem informações detalhadas que ajudam a detectar problemas comuns com o servidor.

Para criar logs de acesso, mod_log_configmodule deve ser 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: Criação e formatação de 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.

 ServerAdmin This email address is being protected from spambots. You need JavaScript enabled to view it. 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 

Dois tipos de formato de registro do Apache

  • Formato de registro comum
  • Formato de registro combinado.

Você pode habilitá-los editando o arquivo de configuração do apache, por exemplo, 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 é a hora em que o servidor terminou de processar a solicitação.
  • % r é a linha de solicitação do cliente. ('GET / 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.
  • O agente do usuário é 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 o seu primeiro servidor de produção da web

1. Para ter um servidor da web de produção em execução, você precisa de um servidor dedicado (Instância física / virtual ou nuvem) executando Linux / Unix, Windows, MacOS etc.

2. O servidor da Web deve ter um conexão de rede direta e um endereço IP estático configurado nele.

3. Ele precisa ter todos os módulos necessário para a execução de páginas da web. Se um servidor da web processa páginas PHP, ele precisa ter o módulo PHP ativado.

  1. Também precisa ter um bom Antivírus aplicativo configurado e em execução para proteger o servidor da 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, para obter o máximo benefício deles.
  2. Se você tiver centenas de domínios a serem hospedados em seu servidor da 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.
  3. Se o seu servidor da web foi configurado para serviços de hospedagem compartilhada, os usuários em seu servidor da web precisam ser restritos . Um usuário de hospedagem compartilhada deve ter o mínimo de privilégios de usuário para que ele não danifique arquivos importantes e quebre o servidor inteiro. O Apache não fornece tal funcionalidade e precisa de diferentes aplicativos de terceiros e customização do sistema operacional para conseguir isso.
  4. Se você está adicionando um novo domínio no seu servidor web, ele precisa editar centenas de arquivos de configuração para habilitar todos os recursos para o domínio adicionado.
  5. Se um dos domínios hospedados exigir configuração diferente de PHP do que o resto dos domínios, implementar isso no servidor da web Apache central é muito complexo e precisa de customização de seu servidor da web em grande medida.
  6. Um servidor web de produção precisa de um firewall para bloquear o tráfego indesejado que pode causar alta carga em seu servidor. Implementando IPTABLE regras com linha de comando são muito complexas. Ele precisa de experiência no ambiente central Linux / Unix para escrever regras de firewall eficazes para bloquear o tráfego indesejado. IPTABLE é baseado no módulo netfilter; é um firewall no nível do sistema operacional que permite a um administrador criar regras para o tráfego de entrada / saída no servidor.
  7. Um servidor web de produção requer vários aplicativos diferentes, como O email , FTP para upload de arquivo, Sistema de Nome de Domínio 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 bastante complexa e requer a edição de centenas de arquivos de configuração, customizando cada aplicação para atender o resultado desejado. Solucionar problemas de qualquer configuração incorreta será muito difícil para iniciantes.

A solução usando Cpanel ou software semelhante

Cpanel fornece uma maneira gráfica de gerenciar seu servidor web . Destina-se a fornecer serviços de hospedagem em massa fáceis de usar e configurar. cPanel reduziu as barreiras técnicas para a entrada no gerenciamento de hospedagem e servidor web. Ele torna a tarefa complexa mais fácil, fornece muitas interfaces da web úteis e fáceis de usar que realizam 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ê deve selecionar / pesquisar manualmente o módulo que é necessário. cPanel fornece a 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 o seu aplicativo da web.

Uma tarefa que precisa de experiência no núcleo de hospedagem baseada em Linux / Unix, como instalação de SSLs, recompilação do Apache com diferentes módulos PHP, atualização da Web Security, configuração de regras IPTABLE eficazes, adição de usuários ftp, criação de contas de correio para cada domínio, varredura de sua raiz de documentos com antivírus e criar bancos de dados é fácil de completar com cPanel.

Ele fornece muitos scripts que corrigem, instalam e solucionam problemas de tarefas administrativas comuns.

Ele fornece uma 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 ftp, bancos de dados, registros DNS e outros aplicativos.

Ele também fornece uma documentação robusta e tem uma grande comunidade de usuários onde você pode discutir e obter solução para seus problemas.

Assim, pode-se dizer que cPanel é a melhor aplicação para gerenciar seu servidor web com as funcionalidades requeridas. 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 para cPanel como Plesk, ISPConfig, Ajenti, Kloxo, Open Panel, Zpanel etc.