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.