Instalando dependências:
# aptitude install debhelper lsb-release libpcre3-dev libssl-dev libcap-dev libxml2-dev autotools-dev
# aptitude install libaprutil1-dev libapr1-dev
# aptitude install autoconf libtool-bin perl
Baixando e descompactando o Apache2
Desde o artigo de 2016 a única coisa que mudou foram as versões, por exemplo, do Apache-2.4.18 para 2.4.48 e as bibliotecas demais programas também foram atualizados nas suas versões. No Buster a versão do Apache na instalação automática é a 2.4.38.
# cd /usr/src
# wget https://ftp.unicamp.br/pub/apache//httpd/httpd-2.4.48.tar.gz
(sim, na linha acima tem duas barras depois de Apache)
# tar -xzvf httpd-2.4.48.tar.gz
Baixando e organizando os pacotes necessários para os módulos extras
APR (APACHE PORTABLE RUNTIME)
A missão do projeto Apache Portable Runtime (APR) é criar e manter bibliotecas de software que fornecem uma interface consistente e previsível para implementações específicas da plataforma (Sistema Operacional) utilizada. O objetivo principal é fornecer uma API para que os desenvolvedores possam codificar e ter a certeza de que o seu software funcionará independentemente da plataforma (Sistema Operacional) em que ele foi construído. Quando um SO não suporta determinada função, a APR define uma substituta. Além disso, a APR pode fazer com que um programa seja verdadeiramente portável entre várias plataformas.
# cd httpd-2.4.48/srclib
# wget https://downloads.apache.org/apr/apr-1.7.0.tar.gz
# tar -xzvf apr-1.7.0.tar.gz
Movendo (renomeando), é necessário, pois segundo o manual do Apache2 não é aconselhável ter números de versão nos nomes das pastas:
# mv apr-1.7.0 apr
# wget https://downloads.apache.org/apr/apr-util-1.6.1.tar.gz
# tar -xzvf apr-util-1.6.1.tar.gz
# mv apr-util-1.6.1 apr-util
Biblioteca de descompressão Zlib:
# wget http://zlib.net/zlib-1.2.11.tar.gz
# tar xvfz zlib-1.2.11.tar.gz
# mv zlib-1.2.11 zlib
PCRE - PERL COMPATIBLE REGULAR EXPRESSIONS (biblioteca para o uso de expressões regulares)
Entre em /usr/src:
# cd /usr/src
# wget http://ftp.cs.stanford.edu/pub/exim/pcre/pcre2-10.37.tar.gz
# tar xvfz pcre2-10.37.tar.gz
# cd pcre2-10.37
# ./configurte
# make
# make install
Criando o diretório onde será instalado o Apache2:
# mkdir /opt/apache2
Configurando o Apache 2:
# cd /usr/src/httpd-2.4.48
Construindo as bibliotecas baixadas anteriormente:
# ./buildconf
E depois:
# ./configure --prefix=/opt/apache2 --exec-prefix=/opt/apache2 --enable-file-cache --enable-cache --enable-cache-disk --enable-so --enable-isapi --enable-session --enable-session-cookie --enable-ssl=shared --enable-imagemap --enable-rewrite --enable-alias --enable-cgi --enable-suexec=shared --enable-mods-shared=all --enable-auth-basic --enable-authn-file --enable-authnz-fcgi --enable-ssl --enable-mpms-shared=all --enable-pie --enable-include --enable-deflate --enable-headers --enable-expires --enable-fcgid --with-libxml2=/usr --with-suexec-caller=apache --with-pcre=/usr --with-mpm=event --with-included-apr --with-z=/usr/src/http-2.4.48/srclib/zlib
Não vou, no momento, explicar o que são cada um desses parâmetros, depois tem um link para o manual do Apache2 onde se pode ver os parâmetros ou depois da instalação digite "man apache2".
Deverá terminar:
config.status: executing default commands
Server Version: 2.4.48
Install prefix: /opt/apache2
C compiler: gcc
CFLAGS: -g -02 -pthread
CPPFLAGS: -DLINUX -D_REENTRANT -D_GNU_SOURCE
LDFLAGS:
LIBS:
C preprocessor: gcc -E
# make
Deverá terminar:
make[2]: Leaving directory '/usr/src/httpd-2.4.48/support'
make[1]: Leaving directory '/usr/src/httpd-2.4.48'
# make install
Deverá terminar:
mkdir /opt/apache2/manual
make[1]: Leaving directory '/usr/src/httpd-2.4.48'
Em caso de erro em alguma etapa execute "make clean" estando dentro de httpd-2.4.48, apague e recrie a pasta /opt/apache2 e refaça a operação a partir do ./buildconf. Depois de instalado, caso quiser configurar outros parâmetros, não necessita excluir o /opt/apache2, basta executar a partir do ./configure que os arquivos já configurados permanecerão. Isso vale para todo e qualquer programa instalado manualmente usando ./configure, make e make install.
O módulo mod_fcgid serve para resolver o problema de upload de arquivos grandes quando o módulo FastCGI estiver em uso e também proporciona iniciar um número suficientes de instâncias do programa CGI para lidar com várias requisições simultâneas.
Voltando para /usr/src:
# cd ..
# wget https://ftp.unicamp.br/pub/apache//httpd/mod_fcgid/mod_fcgid-2.3.9.tar.gz
(sim, na linha acima tem duas barras depois de apache)
# tar xvfz mod_fcgid-2.3.9.tar.gz
# cd mod_fcgid-2.3.9
APXS - APACHE EXTENSION TOOL
É uma ferramenta para compilação e instalação de módulos para o Apache2:
Dentro de mod_fcgid-2.3.9, execute:
# APXS=/opt/apache2/bin/apxs ./configure.apxs
# make
# make install
Voltando para /usr/src:
# cd ..
Entre no arquivo httpd.conf (vim /opt/apache2/conf/httpd.conf) e descomente as seguintes linhas:
LoadModule session_module modules/mod_session.so #linha ~144
LoadModule rewrite_module modules/mod_rewrite.so #linha ~180
Acrescente localhost ou o IP da sua máquina que responderá pelo servidor Web, na linha 227 ou aproximada. Caso dê uma diferença no número da linha no seu arquivo, não se preocupe, é normal:
#ServerName www.example.com:80
ServerName localhost:80
ServerName 127.0.0.1:80
Verifique se as linhas ~175 (LoadModule dir_module modules/mod_dir.so) e ~183 (LoadModule php_module modules/libphp.so) estão descomentadas, se não estiverem, descomente-as.
Salve e saia. Iniciando o Apache 2 (não dará nenhuma mensagem de retorno):
# /opt/apache2/bin/apachectl start
Abra o navegador e digite:
http://localhost
ou
http://ip_do_servidor_web
Deverá aparecer "It works!".
Para o Apache iniciar com o sistema, abra o arquivo
rc.local:
# vim /etc/rc.local
(é neste arquivo que se colocam as linhas para os programas que você quer que iniciem com o sistema)
e coloque dentro, antes de exit 0, assim:
...
/opt/apache2/bin/apachectl start
exit 0
Criando um alias para o comando
/opt/apache2/bin/apachectl.
Entre no arquivo:
# vim ~/.bashrc
Acrescente no final:
alias apache2='/opt/apache2/bin/apachectl'
Salve e saia do arquivo.
Execute:
# source ~/.bashrc
Esse comando efetiva as mudanças sem precisar reiniciar.
Teste digitando no terminal:
# apache2 stop
Abra o navegador e teste. Deverá dar uma mensagem de que o navegador não conseguiu se conectar com localhost.
# apache2 start
Dê um refresh na página localhost. Deverá aparecer It Works.
# apache2 restart
Esses comandos com aliases retornam uma saída somente quando der erro. Para criar novos aliases, siga o mesmo método.
Por exemplo, no arquivo
~/.bashrc tenho o seguinte no final:
alias apache2="/opt/apache2/bin/apachectl"
alias postgres="/etc/init.d/postgresql"
O nome do alias é você quem decide, apache2, postgres etc. Para quem trabalha muito com a linha de comando, utilizar alias é uma ótima ajuda.
Deixo aqui o manual do Apache versão 2.4:
https://downloads.apache.org/httpd/docs/httpd-docs-2.4.33.en.pdf