Instalação do PostgreSQL com Apache 2, PHP 5, OpenSSL no Debian Wheezy 7.7 64 bits com systemd e chroot

Instalação praticamente completa, feita majoritariamente em linha de comando.

[ Hits: 29.193 ]

Por: Buckminster em 10/11/2014


Apache 2



Estando dentro do chroot ainda. Instalando as dependências:

# aptitude install debhelper lsb-release libpcre3-dev libssl-dev libcap-dev liblua5.1-dev libxml2-dev autotools-dev
# aptitude install libaprutill-dev libaprl-dev
# aptitude install autoconf

# cd /usr/src
# wget mirror.nbtelecom.com.br/apache/httpd/httpd-2.4.10.tar.gz
# tar -xzvf httpd-2.4.10.tar.gz
# cd httpd-2.4.10
# cd srclib

# wget http://mirror.netcologne.de/apache.org/apr/apr-1.5.1.tar.gz
# tar -xzvf apr-1.5.1.tar.gz
# mv apr-1.5.1 apr

# wget http://mirror.netcologne.de/apache.org/apr/apr-util-1.5.4.tar.gz
# tar -xzvf apr-util-1.5.4.tar.gz
# mv apr-util-1.5.4 apr-util

# wget http://zlib.net/zlib-1.2.8.tar.gz
# tar xvfz zlib-1.2.8.tar.gz
# mv zlib-1.2.8 zlib

# wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.36.tar.gz
# tar xvfz pcre-8.36.tar.gz
# mv pcre-8.36 pcre

Instalando o OpenSSL:

# wget https://www.openssl.org/source/openssl-1.0.1j.tar.gz
# tar xfz openssl-1.0.1j.tar.gz
# cd openssl-*
# ./config --prefix=/usr zlib-dynamic --openssldir=/etc/ssl shared
# make depend
# make
# make test
# make install

Configurando o Apache 2:

# mkdir /opt/apache2
# cd ../..
# ./buildconf

# ./configure --prefix=/opt/apache2 --enable-file-cache --enable-cache --enable-cache-disk --enable-so --enable-isapi --enable-session --enable-ssl=shared --enable-imagemap --enable-rewrite --enable-alias --enable-cgi --enable-lua=shared --enable-suexec=shared --with-suexec-caller=apache --enable-mods-shared=all --enable-auth-basic --enable-authn-file --enable-authnz-fcgi --enable-mpms-shared=all --enable-pie --disable-include --enable-deflate --enable-headers --enable-expires --with-mpm=event --enable-fcgid --with-included-apr --with-z=/usr/src/http-2.4.10/srclib/zlib-1.2.8

Entre no arquivo httpd-2.4.10/support/ab.c e adicione a seguinte linha na seguinte posição:

#define AP_AB_BASEREVISION "2.3"
#define OPENSSL_NO_SSL2  # Acrescente essa linha (fica na linha 99, mais ou menos) quase no início do arquivo para prevenir o erro de "SSLv2 não encontrado".

Volte ao diretório httpd-2.4.10.

# make
# make install

Terminará:

  make[1]: Saindo do diretório `/usr/src/httpd-2.4.10'
  Em caso de erro em alguma etapa execute "make clean" estando dentro de httpd-2.4.10, apague e recrie a pasta /opt/apache2 e refaça a operação.


Módulo mod_fcgid:

# cd ..
# wget mirror.nbtelecom.com.br/apache//httpd/mod_fcgid/mod_fcgid-2.3.9.tar.gz

O módulo mod_fcgid serve para resolver o problema de upload de arquivos grandes quando o módulo FastCGI estiver em uso.

# tar xvfz mod_fcgid-2.3.9.tar.gz
# cd mod_fcgid-*
# APXS=/opt/apache2/bin/apxs ./configure.apxs
# make
# make install
# cd ..

Entre no arquivo httpd.conf (vim /opt/apache2/conf/httpd.conf) e acrescente na seguinte posição:

#ServerName www.example.com:80
ServerName localhost:80  #acrescente.

Salve e saia. Iniciando o Apache 2:

# /opt/apache2/bin/apachectl start

Ou:

# /opt/apache2/bin/apachectl graceful

Ou:

# /opt/apache2/bin/apachectl -k start

Caso der algum erro, leia a mensagem, ela indicará a linha onde está o erro no arquivo httpd.conf. Entre nele e comente a linha e tente iniciar o Apache de novo até não dar erro.

As opções são as seguintes: start|restart|graceful|graceful-stop|stop|configtest

Ou crie alias (opcional).
Entre no arquivo /etc/bash.bashrc e coloque no final:

#
alias iniciar-apache2='/opt/apache2/bin/apachectl graceful'
alias parar-apache2='/opt/apache2/bin/apachectl stop'
alias reiniciar-apache2='/opt/apache2/bin/apachectl restart'

Salve, saia e reinicie.
Depois, para iniciar o Apache 2, é só digitar: iniciar-apache2

Se quiser, crie um link simbólico do arquivo apachectl para /etc/init.d, é outra maneira.

Caso queira colocar o Apache iniciando com o sistema:

# vim /etc/rc.local

E coloque antes de "exit 0":

/opt/apache2/bin/apachectl start

Testando:

lynx http://localhost (apt-get install lynx)

Ou, abra seu navegador de interface gráfica e digite: localhost

Deverá aparecer: Não deu certo!
No meu caso, apareceu isso daí em cima porque eu modifiquei o arquivo HTML.
Normalmente aparecerá: It works!

indicando que o Apache está funcionando na máquina local.

Diretórios:
  • ServerRoot - /opt/apache2
  • DocumentRoot - /opt/apache2/htdocs
  • Apache Config File - /opt/apache2/conf/httpd.conf
  • Other Config Files - /opt/apache2/conf/extra/
  • SSL Config File - /opt/apache2/conf/extra/httpd-ssl.conf
  • ErrorLog - /opt/apache2/logs/error_log
  • AccessLog - /opt/apache2/logs/access_log
  • cgi-bin - /opt/apache2/cgi-bin (enabled by default, but some of the bundled scripts are 644 - ativado por padrão, são 644 scripts)
  • binaries (apachectl) - /opt/apache2/bin

Manual (opcional)

Caso queira ter o manuel do Apache 2 em Português offline:

Instalando o Java:

# apt-get update
# apt-get install oracle-java8-installer #Isso instalará PPAs do Ubuntu no Debian dentro do arquivo que será criado /etc/apt/sources.list.d/webupd8team-java.list.
# apt-get install oracle-java8-set-default #Setando as variáveis de ambiente do Java.
# apt-key adv --keyserver keyserver.ubuntu.com --recv-keys EEA14886

Depois acesse:
E clique em: Eu tenho Java?
E siga as instruções e verifique se a instalação foi a contento.
Ou, digite no terminal:

# java -version

Faça o download do manuel em Português aqui.
Descompacte, renomeie para manuel e copie para a pasta /opt/apache2/htdocs e depois acesse: localhost/Manuel

Tu podes também criar um arquivo na máquina real para iniciar o Apache dentro do chroot durante o boot do sistema, mas veja bem, daí tu não precisas colocar o Apache para iniciar no chroot, a escolha é tua.

Para isso, saia do chroot e crie um novo arquivo:

# exit
# vim /etc/init.d/apachechroot #Dê o nome que quiser.

Dentro deste arquivo, adicione o seguinte:

#!/bin/sh
mount --bind /proc/ /var/chroot/proc
chroot /var/chroot /opt/apache2/bin/apachectl start

Salve, saia e dê permissão de execução a este script que acabamos de criar e use o update-rc.d para adicioná-lo à sequência de inicialização:

# chmod +x /etc/init.d/apachechroot
# update-rc.d apachechroot start 29 2 3 4 5 .

Aconselho a desinstalar ou desabilitar o Apache no sistema real para evitar confusões.

Página anterior     Próxima página

Páginas do artigo
   1. Introdução
   2. chroot
   3. PostgreSQL
   4. Apache 2
   5. PHP 5
   6. Conclusão
Outros artigos deste autor

Instalação do PAP (PostgreSL, Apache2 e PHP7) no Debian Jessie

Instalação do Comodo Antivirus para Linux (CAVL) resolvendo o problema de dependências

Instalação e configuração do Chrony

ClamAV, o kit de ferramentas antivírus

Enviar mensagem ao usuário trabalhando com as opções do php.ini

Leitura recomendada

Acessando computadores remotos protegidos por NAT ou firewall com túnel SSH reverso direcionado por DNS dinâmico

Personalidades do mundo Open Source

Montando um workstation de desenvolvimento web em GNU/Linux

Compactação de Arquivos

Como fazer uma distribuição Linux (parte 2)

  
Comentários
[1] Comentário enviado por danniel-lara em 11/11/2014 - 08:18h

Parabéns muito bom o artigo
principalmente a parte do chroot

[2] Comentário enviado por Buckminster em 11/11/2014 - 13:38h


[1] Comentário enviado por danniel-lara em 11/11/2014 - 08:18h:

Parabéns muito bom o artigo
principalmente a parte do chroot


Obrigado conterrâneo.

[3] Comentário enviado por Tacioandrade em 14/11/2014 - 00:00h

Amigo uma duvida sobre o chroot, gostaria de instalar o chroot apenas para alguns usuários do sistema, para que ao invés do ftp o meu cliente possa enviar os arquivos via sftp para seu /home/usuário.

No seu caso o /var/chroot/dev por exemplo vai ser usado por todos os usuários do sistema que logarem via ssh como o /dev padrão, seria isso?


Agradeço desde já. =)

[4] Comentário enviado por Buckminster em 14/11/2014 - 06:48h


[3] Comentário enviado por Tacioandrade em 14/11/2014 - 00:00h:

Amigo uma duvida sobre o chroot, gostaria de instalar o chroot apenas para alguns usuários do sistema, para que ao invés do ftp o meu cliente possa enviar os arquivos via sftp para seu /home/usuário.

No seu caso o /var/chroot/dev por exemplo vai ser usado por todos os usuários do sistema que logarem via ssh como o /dev padrão, seria isso?


Agradeço desde já. =)


Sim. No artigo o chroot encapsula toda instalação que for colocada dentro dele.

Para o que tu quer fazer teria que criar o usuário dentro do chroot. Veja os links abaixo para te dar uma idéia:

http://www.thegeekstuff.com/2012/03/chroot-sftp-setup

https://wiki.archlinux.org/index.php/SFTP_chroot

http://fabricafiles.blogspot.com.br/2010/04/vsftpd-com-usuarios-em-chroot.html

[5] Comentário enviado por Tacioandrade em 14/11/2014 - 13:41h


[4] Comentário enviado por buckminster em 14/11/2014 - 06:48h:


[3] Comentário enviado por Tacioandrade em 14/11/2014 - 00:00h:

Amigo uma duvida sobre o chroot, gostaria de instalar o chroot apenas para alguns usuários do sistema, para que ao invés do ftp o meu cliente possa enviar os arquivos via sftp para seu /home/usuário.

No seu caso o /var/chroot/dev por exemplo vai ser usado por todos os usuários do sistema que logarem via ssh como o /dev padrão, seria isso?


Agradeço desde já. =)

Sim. No artigo o chroot encapsula toda instalação que for colocada dentro dele.

Para o que tu quer fazer teria que criar o usuário dentro do chroot. Veja os links abaixo para te dar uma idéia:

http://www.thegeekstuff.com/2012/03/chroot-sftp-setup

https://wiki.archlinux.org/index.php/SFTP_chroot

http://fabricafiles.blogspot.com.br/2010/04/vsftpd-com-usuarios-em-chroot.html


Perfeito cara era exatamente isso que eu queria. =D No caso pensei em dar um ssh básico inicialmente com o nano, ls, etc para meus "clientes", porem olhando isso vi que poderia abrir falhas de segurança, como por exemplo poder para que o usuário usasse algum exploit para subir de permissões e quem sabe danificar o servidor.

Obrigado mesmo pelos tutoriais ajudará demais.

PS: Estou montando um mini curso para o evento de nginx com múltiplos domínios + SFTP + Fail2Ban, assim que terminar farei um tutorial e colocarei aqui no Viva o Linux. =D

[6] Comentário enviado por Buckminster em 15/11/2014 - 23:51h

Tacioandrade;

de nada.

Será bem vindo teu tutorial.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts