Respostas:
Você precisa fazer o seguinte:
apt-cache showpkg <pachagename>
O comando acima exibirá a lista de versões disponíveis para este pacote. Em seguida, selecione a versão necessária e faça o seguinte.
apt-get install <packagename>=<complete version name>
Exemplo:
apt-cache showpkg apache2
apt-get install apache2=2.2.14-5ubuntu8.7
Como instalar o Apache 2.2 em uma distribuição do Ubuntu que não o possui nos repositórios.
Exigências
Você precisa ter o pacote build-essentials instalado para fazer isso.
~# sudo apt-get install build-essential
Para dar ao Apache a capacidade de compactar a saída nos navegadores que a suportam, você precisa instalar o zlib. Faça o download da versão atual da página inicial do zlip (zlib-1.2.11.tar.gz no momento da gravação), extraia-a, navegue até a pasta extraída, construa e instale.
wget http://www.zlib.net/zlib-1.2.11.tar.gz
tar -xvf zlib-1.2.11.tar.gz
cd zlib-1.2.11/
./configure --prefix=/usr/local
make
sudo make install
Instale o Apache 2.2
Faça o download da versão atual da página de download do Apache (httpd-2.2.32.tar.gz no momento da gravação), extraia-a, navegue até a pasta extraída, construa e instale.
wget http://www-eu.apache.org/dist/httpd/httpd-2.2.32.tar.gz
tar -xvf httpd-2.2.32.tar.gz
cd httpd-2.2.32/
./configure --prefix=/usr/local/apache2 --enable-mods-shared=all --enable-deflate --enable-proxy --enable-proxy-balancer --enable-proxy-http
make
sudo make install
Inicie o Apache:
sudo /usr/local/apache2/bin/apachectl start
Verifique se está tudo bem
Navegue para http: // localhost no seu navegador, onde você verá uma mensagem dizendo "Funciona!".
Como alternativa, você pode fazer isso através do terminal:
wget -qO- http://localhost | grep "It works!"
O que deve gerar algo assim no terminal:
<html><body><h1>It works!</h1></body></html>
Crie "serviço" para o Apache2
sudo cp /usr/local/apache2/bin/apachectl /etc/init.d/apache22
sudo chmod +x /etc/init.d/apache22
Dica: você pode chamar o apachectl com o serviço sudo apache22 agora.
Faça o Apache iniciar no momento da inicialização
sudo sed -i '2i #\n### BEGIN INIT INFO\n# Provides: apache2\n# Required-Start: $remote_fs\n# Required-Stop: $remote_fs\n# Default-Start: 2 3 4 5\n# Default-Stop: 0 1 6\n# Description: apache2\n# Short-Description: The Apache webserver\n### END INIT INFO' /etc/init.d/apache22
sudo /usr/sbin/update-rc.d apache22 defaults
Secure Apache
sudo service apache22 stop
sudo adduser --system apache
sed -i -e 's/User daemon/User apache/g' /usr/local/apache2/conf/httpd.conf
sed -i -e 's/Group daemon/Group nogroup/g' /usr/local/apache2/conf/httpd.conf
sudo service apache22 start
Verifique novas configurações
ps -aux | grep httpd
Se a saída do terminal do último comando mostrar algumas linhas começando com "apache", tudo estará OK.
Configure seu (s) site (s)
Se você deseja configurar seu apache para apenas um site, basta editar o httpd.conf
nano /usr/local/apache2/conf/httpd.conf
Os parâmetros essenciais que você pode querer modificar são:
ServerName www.example.com:80
DocumentRoot "/usr/local/apache2/htdocs"
<Directory "/usr/local/apache2/htdocs">
Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
Se você deseja configurar mais de um site, consulte httpd-vhosts.conf
nano /usr/local/apache2/conf/httpd.conf
Você precisará adicionar uma seção <Diretório> dentro do <VirtualHost> semelhante ao acima, mas para a raiz do documento do VitualHost. Por exemplo:
<VirtualHost *:80>
ServerAdmin webmaster@dummy-host.example.com
DocumentRoot "/usr/local/apache2/docs/dummy-host.example.com"
ServerName dummy-host.example.com
ServerAlias www.dummy-host.example.com
ErrorLog "logs/dummy-host.example.com-error_log"
CustomLog "logs/dummy-host.example.com-access_log" common
<Directory "/usr/local/apache2/docs/dummy-host.example.com">
Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
/etc/init.d/apache2
arquivo com conteúdo radicalmente diferente.
sudo service apachectl stop
não interrompe o serviço.
Veja o tutorial do ubuntu sobre fixação de pacotes :
Editar arquivo /etc/apt/preferences
O arquivo 'preferências' é o local onde ocorre a fixação. Para fixar um pacote, defina sua Prioridade de PIN para um número maior. Aqui está um exemplo:
Package: apache2
Pin: release n=raring
Pin-Priority: 1000
Teste antes de executar apt-get update
ou apt-get install
comapt-cache policy apache2
Veja man apt_preferences
para detalhes. Eu escolhi raring
a liberação do pinning porque dessa forma você ainda receberá atualizações no ramo 2.2.x. Não esqueça que você precisa disponibilizar o pacote para o APT adicionando raring
URLs do repositório.
Atualização :
Assim como o raring
EOL, você pode usar os pacotes ainda suportados precise
ou arquivados raring
em http://old-releases.ubuntu.com .
Usar isso como /etc/apt/sources.list.d/raring.list
permitirá instalar pacotes mais antigos:
deb http://old-releases.ubuntu.com/ubuntu/ raring main restricted universe multiverse
deb-src http://old-releases.ubuntu.com/ubuntu/ raring main restricted universe multiverse
deb http://old-releases.ubuntu.com/ubuntu/ raring-updates main restricted universe multiverse
deb-src http://old-releases.ubuntu.com/ubuntu/ raring-updates main restricted universe multiverse
deb http://old-releases.ubuntu.com/ubuntu/ raring-backports main restricted universe multiverse
deb-src http://old-releases.ubuntu.com/ubuntu/ raring-backports main restricted universe multiverse
deb http://old-releases.ubuntu.com/ubuntu/ raring-proposed main restricted universe multiverse
deb-src http://old-releases.ubuntu.com/ubuntu/ raring-proposed main restricted universe multiverse
raring
. Obviamente, se você deseja usar a precise
versão, também /etc/apt/preferences
deve ser alterado de acordo.
Para instalar o apache2.2, use o seguinte processo:
Em uma distribuição posterior (por exemplo, 16.04), baixei o 2.2.31 do site Apache.
Eu o construí usando a seguinte configuração:
./configure --enable-so --enable-ssl --with-included-apr --enable-mods-shared=all --enable-load-all-modules --enable-rewrite --enable-proxy --enable-proxy_connect --enable-proxy_http --enable-proxy_ajp --enable-authn_alias --with-npm=prefork --enable-proxy_balancer --enable-proxy_ftp --enable-cache --enable-suexec --enable-disk_cache > conf.txt
Então, é claro, aprimorando os arquivos httpd.conf e ssl.conf.
Depois disso, basta executar o ./httpd -k start
E funciona!
note que eu adicionei o apache2.4 via apt-get, mas nunca o removi. Isso significa que, após o início do sistema, preciso interromper o processo apache2. E então eu sou capaz de iniciar o apache2.2. Eu tive que instalar o apache2.4 para usar o apachectl, mas depois o dissolvi porque eu uso ./httpd
Você atualizou do Ubuntu 13.04 para 13.10? Não há como recuperar o Apache 2.2 sem sair dos repositórios de pacotes do Ubuntu. É melhor corrigir a configuração do Apache para que funcione com o 2.4.