Introdução ao Apache HTTPD
O pacote "Apache HTTPD" contém um
servidor "HTTP" de fonte aberto. Ele é útil para criar sítios "web"
locais de intranet ou executar grandes operações de serviço "web".
Esse pacote é conhecido por construir e funcionar corretamente
usando uma plataforma LFS 12.1.
Informação do Pacote
-
Transferência (HTTP): https://archive.apache.org/dist/httpd/httpd-2.4.58.tar.bz2
-
Transferência (FTP):
-
Soma de verificação MD5 da transferência:
30377ec4d7fb8361e1d1f2ab3158b467
-
Tamanho da transferência: 7,1 MB
-
Espaço em disco estimado exigido: 88 MB
-
Tempo de construção estimado: 0,3 UPC (Usando paralelismo=4)
Transferências Adicionais
Dependências do "Apache HTTPD"
Exigidas
Apr-Util-1.6.3 e pcre2-10.42
Opcionais
Brotli-1.1.0, Doxygen-1.10.0, jansson-2.14,
libxml2-2.12.5, Lua-5.4.6, Lynx-2.8.9rel.1 ou Links-2.29 ou
ELinks, nghttp2-1.59.0, OpenLDAP-2.6.7
(Apr-Util-1.6.3 precisa ser instalado com
suporte ldap), rsync-3.2.7, Berkeley
DB (obsoleto) e Distcache
Instalação do Apache HTTPD
Por motivos de segurança, executar o servidor como um(a) usuário(a)
e grupo sem privilégios é fortemente encorajado. Crie o seguinte
grupo e usuário(a) usando os seguintes comandos como "root
":
groupadd -g 25 apache &&
useradd -c "Servidor Apache" -d /srv/www -g apache \
-s /bin/false -u 25 apache
Construa e instale o "Apache
HTTPD" executando os seguintes comandos:
patch -Np1 -i ../httpd-2.4.58-blfs_layout-1.patch &&
sed '/dir.*CFG_PREFIX/s@^@#@' -i support/apxs.in &&
sed -e '/HTTPD_ROOT/s:${ap_prefix}:/etc/httpd:' \
-e '/SERVER_CONFIG_FILE/s:${rel_sysconfdir}/::' \
-e '/AP_TYPES_CONFIG_FILE/s:${rel_sysconfdir}/::' \
-i configure &&
sed -e '/encoding.h/a # include <libxml/xmlstring.h>' \
-i modules/filters/mod_xml2enc.c &&
./configure --enable-authnz-fcgi \
--enable-layout=BLFS \
--enable-mods-shared="all cgi" \
--enable-mpms-shared=all \
--enable-suexec=shared \
--with-apr=/usr/bin/apr-1-config \
--with-apr-util=/usr/bin/apu-1-config \
--with-suexec-bin=/usr/lib/httpd/suexec \
--with-suexec-caller=apache \
--with-suexec-docroot=/srv/www \
--with-suexec-logfile=/var/log/httpd/suexec.log \
--with-suexec-uidmin=100 \
--with-suexec-userdir=public_html &&
make
Esse pacote não vem com uma suíte de teste.
Agora, como o(a) usuário(a) "root
":
make install &&
mv -v /usr/sbin/suexec /usr/lib/httpd/suexec &&
chgrp apache /usr/lib/httpd/suexec &&
chmod 4754 /usr/lib/httpd/suexec &&
chown -v -R apache:apache /srv/www
Explicações do Comando
sed
'/dir.*CFG_PREFIX/s@^@#@'...: Força o utilitário
"apxs" a usar nomes absolutos de
caminho para módulos, quando instruído a fazê-lo.
sed -e '/HTTPD_ROOT/s
...: Corrige alguns caminhos.
sed -e '/encoding.h/a
...; Corrigir construção contra a libxml-2.12.x.
--enable-authnz-fcgi
:
Construa autenticação e autorização baseada no autorizador
"FastCGI" (módulo CGI rápido "mod_authnz_fcgi.so").
--enable-mods-shared="all
cgi"
: Os módulos deveriam ser compilados e usados como
"Dynamic Shared Objects" ("DSOs") de forma que possam ser incluídos
e excluídos a partir do servidor usando as diretivas de
configuração de tempo de execução.
--enable-mpms-shared=all
:
Essa chave garante que todos os "Multi Processing Modules" ("MPM")
sejam construídos como "Dynamic Shared Objects" ("DSOs"), de forma
que o(a) usuário(a) consiga escolher qual usar em tempo de
execução.
--enable-suexec
: Essa chave
habilita a construção do módulo "suEXEC" do "Apache" que pode ser usado para permitir que
os(as) usuários(as) executem conjuntos de comandos sequenciais
"CGI" e "SSI" sob "IDs" de usuário(a) diferentes do "ID" de
usuário(a) do servidor web chamante.
--with-suexec-*
: Essas
chaves controlam o comportamento do módulo "suEXEC", tais como a
raiz padrão do documento, "UID" mínimo que pode ser usado para
executar o conjunto de comandos sequenciais sob o "suEXEC". Por
favor, observe que, com "UID" mínimo de 100, você não consegue
executar conjuntos de comandos sequenciais "CGI" ou "SSI" sob o
s"uEXEC" como o(a) usuário(a) "apache
".
...
/usr/lib/httpd/suexec: Esses comandos colocam o
envólucro "suexec" no
local apropriado, já que ele não se destina a ser executado
diretamente. Eles também ajustam as permissões adequadas do
binário, tornando-o "setgid" do "apache
".
chown -R apache:apache
/srv/www: Por padrão, o processo de instalação
instala arquivos (documentação, mensagens de erro, ícones padrão,
etc.) com a titularidade de propriedade do(a) usuário(a) que
extraiu os arquivos a partir do arquivo "tar". Se quiser mudar a
titularidade de propriedade para outro(a) usuário(a), [então] você
deveria fazê-lo neste ponto. O único requisito é o de que os
diretórios de documentos precisam ser acessíveis pelo processo
"httpd" com
permissões ("r-x") e os arquivos precisam ser legíveis ("r--")
pelo(a) usuário(a) "apache
".
Configurando o Apache
Arquivos de
Configuração
/etc/httpd/httpd.conf
e
/etc/httpd/extra/*
Informação de Configuração
Veja-se file:///usr/share/httpd/manual/configuring.html
para instruções detalhadas relativas a personalizar o teu arquivo
de configuração do servidor de "HTTP" "Apache".
Não existe razão, pelo menos para sítios voltados para a
Internet, para não usar encriptação SSL. Configurar um sítio
seguro não custa nada, exceto instalar uma pequena ferramenta
adicional e alguns minutos de trabalho de configuração. Use esta
diretriz em https://wiki.linuxfromscratch.org/blfs/wiki/Securing_a_website
para criar certificados aceitos mundialmente e renová-los
regularmente.
Conjunto de Comandos
Sequenciais de Inicialização
Se você quiser que o servidor "Apache" inicie automaticamente quando o
sistema for inicializado, [então] instale o
conjunto de comandos sequenciais de inicialização "/etc/rc.d/init.d/httpd
" incluído no
pacote "blfs-bootscripts-20240209"
"":
make install-httpd