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: 27.472 ]

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

Compilação do Kernel

Como um monte de letras de um código fonte transforma-se em voltagens?

Manual do IPtables - Comentários e sugestões de regras

DHCP com controle de IP e compartilhamento no Debian Squeeze

Compilação e instalação do Vim e habilitando a copiar e colar com o mouse

Leitura recomendada

Compartilhando o Terminal

Assembler no Linux

Eu aprendi!

Como Funciona a Resolução de Dependências no Gslapt

Sincronizando o Nokia 2630 com o Evolution no Linux

  
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