Pesquisa de site

Como configurar um servidor web Apache


Aprenda a hospedar seu próprio site com Apache, um servidor web sólido, conhecido e fácil de configurar.

Hospedei meus próprios sites há muitos anos. Desde que mudei do OS/2 para o Linux, há mais de 20 anos, tenho usado o Apache como meu software de servidor. O Apache é sólido, bem conhecido e bastante fácil de configurar para uma instalação básica. Na verdade, não é muito mais difícil configurar para uma configuração mais complexa, como vários sites.

A instalação e configuração do servidor web Apache devem ser realizadas como root. A configuração do firewall também precisa ser realizada como root. O uso de um navegador para visualizar os resultados deste trabalho deve ser feito como um usuário não root. (Eu uso o usuário student no meu host virtual.)

Instalação

Nota: Este artigo foi atualizado usando o Fedora 33 com Apache 2.4.46. Se você usar uma distribuição diferente ou uma versão diferente do Fedora, seus comandos e os locais e conteúdo dos arquivos de configuração poderão ser diferentes. No entanto, as linhas de configuração que você precisa modificar são as mesmas, independentemente da distribuição.

O servidor web Apache é fácil de instalar. Com um comando, você pode instalá-lo e todas as dependências necessárias:

$ dnf install httpd

Todos os arquivos de configuração do Apache estão localizados em /etc/httpd/conf e /etc/httpd/conf.d. Os dados dos sites que você executará com o Apache estão localizados em /var/www por padrão, mas você pode alterar isso se desejar.

Configuração

O arquivo de configuração principal do Apache é /etc/httpd/conf/httpd.conf. Ele contém muitas instruções de configuração que não precisam ser alteradas para uma instalação básica. Na verdade, apenas algumas alterações devem ser feitas neste arquivo para colocar um site básico em funcionamento. O arquivo é muito grande, então, em vez de sobrecarregar este artigo com um monte de coisas desnecessárias, mostrarei apenas as diretivas que você precisa alterar.

Primeiro, reserve um tempo e navegue pelo arquivo httpd.conf para se familiarizar com ele. Uma das coisas que gosto nas versões Red Hat da maioria dos arquivos de configuração é o número de comentários que descrevem as diversas seções e diretivas de configuração nos arquivos. O arquivo httpd.conf não foge à regra, pois é bastante bem comentado. Use estes comentários para entender o que o arquivo está configurando.

O primeiro item a ser alterado é a instrução Listen, que define o endereço IP e a porta na qual o Apache deve escutar as solicitações de página. No momento, você só precisa disponibilizar este site para a máquina local, então use o endereço localhost. A linha deve ficar assim quando você terminar:

Listen 127.0.0.1:80

Com esta diretiva definida para o endereço IP do localhost, o Apache escutará apenas conexões do host local. Se quiser que o servidor web escute conexões de hosts remotos, você usaria o endereço IP externo do host.

A diretiva DocumentRoot especifica a localização dos arquivos HTML que compõem as páginas do site. Essa linha não precisa ser alterada porque já aponta para o local padrão. A linha deve ficar assim:

DocumentRoot "/var/www/html"

O RPM de instalação do Apache cria a árvore de diretórios /var/www. Se você quiser alterar o local onde os arquivos do site estão armazenados, este item de configuração é usado para fazer isso. Por exemplo, você pode querer usar um nome diferente para o subdiretório www para tornar a identificação do site mais explícita. Isso pode ser assim:

DocumentRoot "/var/mywebsite/html"

Estas são as únicas alterações de configuração do Apache necessárias para criar um site simples. Para este pequeno exercício, apenas uma alteração foi feita no arquivo httpd.conf—a diretiva Listen. Todo o resto já está configurado para produzir um servidor web funcional.

Porém, uma outra mudança é necessária: abrir a porta 80 em nosso firewall. Eu uso iptables como meu firewall, então altero /etc/sysconfig/iptables para adicionar uma instrução que permita o protocolo HTTP. O arquivo inteiro fica assim:

# sample configuration for iptables service
# you can edit this manually or use system-config-firewall
# please do not ask us to add additional ports/services to this default configuration
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT

A linha que adicionei é a terceira de baixo, que permite o tráfego de entrada na porta 80. Agora recarrego a configuração alterada do iptables.

[root@testvm1 ~]# cd /etc/sysconfig/ ; iptables-restore iptables

Crie o arquivo index.html

O arquivo index.html é o arquivo padrão que um servidor web exibirá quando você acessar o site usando apenas o nome de domínio e não um nome de arquivo HTML específico. No diretório /var/www/html, crie um arquivo com o nome index.html. Adicione o conteúdo Hello World. Você não precisa adicionar nenhuma marcação HTML para que isso funcione. A única função do servidor web é fornecer um fluxo de dados de texto, e o servidor não tem ideia de qual é a data ou como renderizá-la. Ele simplesmente transmite o fluxo de dados para o host solicitante.

Depois de salvar o arquivo, defina a propriedade como apache.apache.

[root@testvm1 html]# chown apache.apache index.html

Inicie o Apache

O Apache é muito fácil de iniciar. As versões atuais do Fedora usam systemd. Execute os seguintes comandos para iniciá-lo e verificar o status do servidor:

[root@testvm1 ~]# systemctl start httpd
[root@testvm1 ~]# systemctl status httpd
● httpd.service - The Apache HTTP Server
   Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: disabled)
   Active: active (running) since Thu 2018-02-08 13:18:54 EST; 5s ago
     Docs: man:httpd.service(8)
 Main PID: 27107 (httpd)
   Status: "Processing requests..."
    Tasks: 213 (limit: 4915)
   CGroup: /system.slice/httpd.service
           ├─27107 /usr/sbin/httpd -DFOREGROUND
           ├─27108 /usr/sbin/httpd -DFOREGROUND
           ├─27109 /usr/sbin/httpd -DFOREGROUND
           ├─27110 /usr/sbin/httpd -DFOREGROUND
           └─27111 /usr/sbin/httpd -DFOREGROUND

Feb 08 13:18:54 testvm1 systemd[1]: Starting The Apache HTTP Server...
Feb 08 13:18:54 testvm1 systemd[1]: Started The Apache HTTP Server.

Os comandos podem ser diferentes no seu servidor. Em sistemas Linux que usam scripts de inicialização SystemV, os comandos seriam:

[root@testvm1 ~]# service httpd start
Starting httpd: [Fri Feb 09 08:18:07 2018]          [  OK  ]
[root@testvm1 ~]# service httpd status
httpd (pid  14649) is running...

Se você tiver um navegador como Firefox ou Chrome em seu host, poderá usar o URL localhost na linha de URL do navegador para exibir sua página da web, por mais simples que seja. Você também pode usar um navegador em modo de texto como o Lynx para visualizar a página da web. Primeiro, instale o Lynx (se ainda não estiver instalado).

[root@testvm1 ~]# dnf -y install lynx

Em seguida, use o seguinte comando para exibir a página da web.

[root@testvm1 ~]# lynx localhost

O resultado fica assim na minha sessão de terminal. Excluí grande parte do espaço vazio da página.

  Hello World

<snip>


Commands: Use arrow keys to move, '?' for help, 'q' to quit, '<-' to go back.
  Arrow keys: Up and Down to move.  Right to follow a link; Left to go back.
 H)elp O)ptions P)rint G)o M)ain screen Q)uit /=search [delete]=history list

Em seguida, edite seu arquivo index.html e adicione um pouco de marcação HTML para que fique assim:

<h1>Hello World</h1>

Agora atualize o navegador. Para Lynx, use a combinação de teclas Ctrl+R. Os resultados parecem um pouco diferentes. O texto é colorido, que é como o Lynx exibe os títulos se o seu terminal suportar cores, e agora está centralizado. Em um navegador GUI, o texto estaria em fonte grande.

                                   Hello World

<snip>


Commands: Use arrow keys to move, '?' for help, 'q' to quit, '<-' to go back.
  Arrow keys: Up and Down to move.  Right to follow a link; Left to go back.
 H)elp O)ptions P)rint G)o M)ain screen Q)uit /=search [delete]=history list

Pensamentos de despedida

Como você pode ver neste pequeno exercício, é fácil configurar um servidor web Apache. As especificações irão variar dependendo da sua distribuição e da versão do Apache fornecida por essa distribuição. No meu ambiente, este foi um exercício bastante trivial.

Mas há mais porque o Apache é muito flexível e poderoso. No próximo mês discutirei a hospedagem de vários sites usando uma única instância do Apache.

Este artigo foi publicado originalmente em 2018 e atualizado pelo editor.