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.997 ]

Por: Buckminster em 10/11/2014


PHP 5



Estando ainda como chroot. Pare o Apache:

# /opt/apache2/bin/apachectl stop

Se não der mensagem de retorno, insista e execute o comando de novo até aparecer, mas não é necessário:

  httpd (no pid file) not running

Instalando o PEAR:

# aptitude install php-pear

Criando o diretório de instalação do PHP:

# mkdir /opt/php

Entrando no diretório de instalação padrão do Debian:

# cd /usr/src

Faça o download do PHP 5:

# wget -O php-5.6.2.tar.gz http://php.net/get/php-5.6.2.tar.gz/from/this/mirror

Descompacte:

# tar -xzvf php-5.6.2.tar.gz

Instalando os pacotes necessários para a configuração de alguns módulos do PHP 5.
Abra o terminal como root:

# aptitude install libicu-dev
# aptitude install libjpeg8-dev libpng12-dev libxslt1-dev
# cd /usr/src/php-5.6.2
# ./configure --help #Para ver as opções de configurações.

Configurando o PHP 5

Caso tu optou em não instalar o systemd, retire a opção --with-fpm-systemd, abaixo:

# ./configure --prefix=/opt/php --with-apxs2=/opt/apache2/bin/apxs --with-pgsql=/usr --with-pdo-pgsql=/usr --with-xsl=/usr --with-jpeg-dir=/usr --with-png-dir=/usr --with-zlib-dir=/usr --enable-mbstring --with-pcre-dir --with-pear --with-tsrm-pthreads --with-fpm-systemd --enable-ftp --enable-exif --enable-intl --enable-opcache --enable-pdo

Deverá terminar:

  Thank you for using PHP.
  E os config.status.


# make
# make test # Isso demora uns 20 minutos.

Terminará:

  You can then email it to qa-reports@lists.php.net later.
  Do you want to send this report now? [Yns]: Y


E digite seu e-mail.

# make install #Isso é rápido.

Em caso de erro em alguma etapa, execute: make clean, estando dentro de php-5.6.2, apague e recrie a pasta /opt/php e refaça a operação.

Se futuramente decidir mudar as opções de seu ./configure depois da instalação, somente repita os últimos 4 passos (./configure, make, make test e make install) e depois reinicie o Apache.

Copiando o php.ini:

# cp php.ini-production /opt/php/php.ini

Qualquer alteração a partir de agora, faça no arquivo /opt/php/php.ini e depois reinicie o Apache. Atente se for PHP para desenvolvimento ou produção, e copie o arquivo certo para teu caso (development ou production).

Vejamos o que diz o próprio PHP:

O PHP vem com dois arquivos INI. Um é recomendado para ser usado em ambientes de produção e outro é recomendado para ser utilizado em ambientes de desenvolvimento.

php.ini-production - contém configurações que possuem segurança, desempenho e melhores práticas em seu núcleo. Mas lembre-se, estas definições podem quebrar algumas compatibilidades com aplicativos de segurança mais antigos. Nós recomendamos usar o arquivo production.ini em ambientes de produção e teste.

php.ini-development - é muito semelhante ao arquivo de produção, exceto que ele é muito mais detalhado quando se trata de erros. Recomendamos o uso da versão de desenvolvimento apenas em ambientes de desenvolvimento. Erros mostrados para os usuários podem, inadvertidamente, vazar informações vitais.

Não irei colocar aqui as configurações do arquivo php.ini. Talvez faça isso em outro artigo.

E adicione no httpd.conf do Apache 2 nas seguintes posições:

#Listen 12.34.56.78:80
Listen 127.0.0.1:80  #Ou coloque o IP do teu servidor.

...


    DirectoryIndex index.html index.php default.php main.php


...

E no final do arquivo:

#
AddType application/x-httpd-php5 .php .html .phtml
AddType application/x-httpd-php .php .html .phtml .leproso #Nesta linha tu acrescenta as extensões que quiser para que o Apache as reconheça.
AddType application/x-httpd-php-source .phps
PHPIniDir "/opt/php"
#
# Parâmetros do fcgid
FcgidMaxProcesses 50
FcgidFixPathinfo 1
FcgidProcessLifeTime 0
FcgidTimeScore 3
FcgidZombieScanInterval 20
FcgidMaxRequestsPerProcess 0
FcgidMaxRequestLen 33554432
FcgidIOTimeout 120
#
#AddHandler fcgid-script .php  #Essa opção se descomentada provoca o aviso  "Forbidden You don't have permission to access /index.php on this server.", mas permite o acesso ao localhost através do index.html. Com essa opção descomentada tu podes configurar depois no httpd.conf o acesso para somente as pastas as quais que tu quer que sejam acessadas.
#Options +ExecCGI

#FCGIWrapper /opt/apache2/cgi-bin/php5 .php

Ou, coloque em cada vhost no Apache 2 em substituição às 3 últimas linhas acima:

Options Indexes ExecCGI
AddHandler fcgid-script .php
FCGIWrapper /opt/apache2/cgi-bin/php5 .php

Testando a instalação:

# cd /opt/apache2/htdocs
# vim index.php

Coloque dentro o seguinte conteúdo:

<?php
          phpinfo();
?>

Salve e saia do arquivo.

Inicie o Apache:

# /opt/apache2/bin/apachectl start

Abra o navegador e digite na URL: localhost/index.php

Deverá aparecer a página com as configurações do PHP: PHP Version 5.6.2

Verifique as duas primeiras opções das informações de System (Sistema) e Build Date (Data da Construção). Aqui ficou assim:

  System  Linux leproso 3.17.2 #1 SMP Tue Nov 4 10:41:03 BRST 2014 x86_64
  Build Date  Nov 7 2014 11:35:05


Mais abaixo procure por pdo_pgsql, pgsql e verifique se o POstgreSQL 9.3.5 foi devidamente reconhecido. Nesta página, tu podes também verificar se todos os módulos e funções utilizadas no ./configure estão corretamente identificados.

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

O Kernel Linux

Montagem de Cluster

Compilação do Squid 3 no Debian Wheezy

Como agendar um backup automático do PostgreSQL no Cron evitando o problema de senha

ClamAV, o kit de ferramentas antivírus

Leitura recomendada

Salada mista de Linux

Traduzindo mensagens no Linux

BC: A sua calculadora programável no Linux

Spreading Linux de fato! Case "Heavy-User"

Conky: Manual traduzido pt-BR

  
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