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

Por: Buckminster em 10/11/2014


Conclusão



E assim chegamos ao final dessa jornada, após essa montoeira de comandos digitados. O cara fortalece os dedos digitando, são os ossos do ofício.

systemd

Com o aparecimento de computadores com múltiplas CPUs e com espera de rede se tornando um problema, foi inventado um sistema de paralelizar a execução dos scripts de inicialização, o que trouxe consigo a enorme complexidade de ter que estabelecer dependências entre os scripts para garantir que sejam executados em paralelo.

O systemd é criação de Lennart Poettering, que é funcionário da Red Hat e contribuidor do Fedora. Uma das primeiras funcionalidades trazidas pelo Systemd, foi exatamente o uso de Control Groups. Cada serviço iniciado pelo systemd fica dentro de um cgroup próprio, o que significa, por exemplo, que todos os processos criados por um serviço podem ser terminados com certeza quando o serviço for parado. Também significa que, apesar de o Apache estar consumindo muita CPU ou memória, o servidor SSH ainda tem tempo suficiente da CPU para aceitar a conexão e tratar do problema, pois o Linux tenta ser justo com os diferentes cgroups.

Parâmetros de configuração do Apache 2:
  • --enable-file-cache :: habilita o arquivo de cache suportado pelo módulo mod_file_cache.
  • --enable-cache :: habilita o cache.
  • --enable-cache-disk :: habilita o cache de disco.
  • --enable-so :: habilita o módulo mod_so que permite que os módulos possam ser compilados como Dynamic Shared Objects (DSOs).
  • --enable-isapi :: habilita o módulo mod_isapi que dá suporte à API de extensões Internet Server extension.
  • --enable-session :: habilita o módulo mod_session. Os módulos de sessão fazem uso de cookies HTTP e como tal podem ser vítimas de ataques Cross Site Scripting. Esteja avisado dos riscos antes de ativar a funcionalidade de sessão no servidor.
  • --enable-ssl :: habilita o suporte ao SSL.
  • --enable-imagemap :: habilita o módulo de processamento aos arquivos .map. Mapas de imagem podem fornecer uma interface gráfica para um web site. Quando for clicado com o mouse em uma imagem de mapa, as coordenadas desse clique são enviadas para o servidor. O servidor pode decidir que página retornar com base na localização do clique.
  • --enable-rewrite :: O módulo mod_rewrite usa um motor de reescrita baseado em regras com base em parser de expressão regular PCRE para reescrever as URLs solicitadas. Por padrão o mod_rewrite mapeia uma URL para um caminho do sistema de arquivos. No entanto, também pode ser utilizado para redirecionar uma URL para outra URL ou para invocar um proxy interno.
  • --enable-alias :: As diretrizes contidas neste módulo permitem a manipulação e o controle das URLs assim como os pedidos que chegam ao servidor. As diretivas Alias e ScriptAlias são utilizadas para mapear URLs e caminhos de arquivos. Isso permite que o conteúdo que não está diretamente sob o DocumentRoot sirva como parte da árvore de documentos web. A diretiva ScriptAlias tem o efeito adicional de marcar o diretório de destino como contendo apenas scripts CGI.
  • --enable-cgi :: O CGI é um recurso que fornece uma interface de portabilidade entre linguagens diversas que fornecem conteúdo para a web de forma simples e transparente. Sua simplicidade torna o desenvolvimento mais fácil, pois não existe a necessidade de aprender uma nova linguagem de programação. É possivel até criar um programa em C++, compila-lo e utilizar sua saída para fornecer seus dados para a internet.
  • --enable-lua=shared :: Este módulo permite que o servidor entenda scripts escritos na linguagem de programação Lua.
  • --enable-suexec=shared :: O recurso suEXEC fornece aos usuários do Apache a capacidade de executar programas CGI e SSI sob IDs de usuário diferentes da ID de usuário do servidor. Normalmente quando um programa CGI ou SSI é executado, ele é executado como o mesmo usuário do servidor web.
  • --with-suexec-caller=apache :: hablita o módulo chamador do suexec.
  • --enable-mods-shared=all :: Define uma lista de módulos dinâmicos compartilhados. Esses módulos tem que ser carregado dinamicamente usando a diretiva LoadModule.
  • --enable-auth-basic :: Este módulo permite o uso de autenticação básica HTTP para restringir o acesso dos usuários nos provedores de dados. Autenticação Digest HTTP é fornecida pelo mod_auth_digest. Este módulo deverá normalmente ser combinado com pelo menos um módulo de autenticação, tal como mod_authn_file e um módulo de autorização, tal como mod_authz_user.
  • --enable-authn-file :: Este módulo fornece autenticação front-end tais como mod_auth_digest e mod_auth_basic para autenticar usuários com senhas em texto puro. Funcionalidade semelhante é fornecida pelo mod_authn_dbm.
  • --enable-authnz-fcgi :: Este módulo permite que os aplicativos FastCGI autentiquem usuários e autorizem o acesso aos recursos. Ele suporta FastCGI genérico que participa de uma única fase para autenticação e autorização, bem como suporta autenticadores e autorizadores que participam em uma ou ambas as fases específicas do httpd.
  • --enable-mpms-shared=all :: O Multi-Processing Module (MPM) é projetado para permitir mais requisições simultâneas do servidor e permite que ele passe alguns trabalhos de processamento que suportam threads, liberando os principais tópicos para novos pedidos. Implementa multi-processos do servidor multi-threaded híbrido.
  • --enable-pie :: habilita o suporte à "Position Independent Executables". Arquivos executáveis podem ser carregados em locais não-fixos, tornando-os mais difíceis de serem explorados.
  • --disable-include :: Desativa o módulo fornecido pelo mod_include.
  • --enable-deflate :: O módulo mod_deflate fornece o filtro de saída que permite a compressão dos arquivos antes de serem enviados ao cliente através da rede.
  • --enable-headers :: Este módulo fornece diretrizes para controlar e modificar os cabeçalhos de resposta das solicitações HTTP. Os cabeçalhos podem ser mesclados, substituídos ou removidos.
  • --enable-expires :: Este módulo controla a configuração de expiração dos cabeçalhos HTTP e a diretiva máxima de vencimento do cabeçalho HTTP nas respostas do servidor. A data de vencimento pode definir-se em relação a um ou outro momento em que o arquivo de origem foi modificado pela última vez ou com o tempo de acesso do cliente.
  • --with-mpm=event :: vide: --enable-mpms-shared=all.
  • --enable-fcgid :: vide: --enable-authnz-fcgi.
  • --with-included-apr :: O projeto Apache Portable Runtime (APR) cria e mantém bibliotecas de software que fornecem uma interface previsível e consistente para implementações específicas da plataforma subjacente. O objetivo principal é fornecer uma API para que desenvolvedores de software possam codificar independentemente da plataforma em que seu software foi construído, aliviando-os da necessidade de codificar as condições especiais para contornar deficiências ou recursos específicos da plataforma.
  • --with-z=/usr/src/http-2.4.10/srclib/zlib-1.2.8 :: habilita a biblioteca de compressão ZLIB.

Parâmetros de configuração do PHP 5:
  • --with-apxs2=/opt/apache2/bin/apxs :: o apxs é uma ferramenta para a construção e instalação de módulos de extensão para o servidor HyperText Transfer Protocol (HTTP). É feita a construção de um objeto dinâmico partilhado (DSO) de um ou mais arquivos de origem ou de objetos que depois podem ser carregados no servidor Apache através da diretiva LoadModule do mod_ssl.
  • --with-pgsql=/usr :: indica o caminho de suporte ao PostgreSQL.
  • --with-pdo-pgsql=/usr :: indica o caminho de suporte ao PDO do PostgreSQL.
  • --with-xsl=/usr :: adiciona o pacote de suporte ao XSL indicando o caminho das bibliotecas.
  • --with-jpeg-dir=/usr :: adiciona o pacote de suporte à JPEG indicando o caminho das bibliotecas.
  • --with-png-dir=/usr :: adiciona o pacote de suporte à PNG indicando o caminho das bibliotecas.
  • --with-zlib-dir=/usr :: zlib é uma biblioteca multiplataforma de compressão de dados como uma generalização do algoritmo DEFLATE usado em seu programa de compressão de dados gzip.
  • --enable-mbstring :: habilita o suporte ao mbstring (Unicode library Standard) do PHP.
  • --with-pcre-dir :: Perl Compatible Regular Expressions, também conhecida pela sigla PCRE, é uma biblioteca escrita para linguagem C que implementa expressões regulares inspirada na interface externa do Perl.
  • --with-pear :: PEAR é uma biblioteca que possui vários recursos. Um dos mais utilizados é o PEAR DB, que é utilizado para abstração de banco de dados. É uma plataforma e um sistema de distribuição para a codificação de componentes em PHP.
  • --with-tsrm-pthreads :: habilita as threads padrão POSIX.
  • --with-fpm-systemd :: integra o PHP ao Systemd.
  • --enable-ftp :: ativa o suporte à FTP.
  • --enable-exif :: habilita o suporte a exif. (Exchangeable Image File Format) é uma especificação seguida por fabricantes de câmeras digitais que gravam informações sobre as condições técnicas de captura da imagem junto ao arquivo da imagem propriamente dita na forma de metadados etiquetados.
  • --enable-intl :: habilita as funções de internacionalização do PHP.
  • --enable-opcache :: habilita as extensões de cache do PHP.
  • --enable-pdo :: habilita o suporte à biblioteca PDO (PHP Data Object).

Maiores informações:

No Apache e no PHP: ./configure --help

Ou: E:
Para aprender a criar usuários no Postgres:

Referências


Página anterior    

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

Antivírus ClamAV com proteção em tempo real

Encapsulando BIND 9 e Apache 2 para obter maior segurança

Manual traduzido do Squid - Parte 2

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

Como utilizar de forma correta os repositórios e pacotes Backports

Leitura recomendada

Babytrans, o Babylon for Linux

MEncoder - Criando Programa Gráfico Para Conversão

FreeIPA - uma solução integrada de identidade e autenticação para ambientes de rede Linux/UNIX

Porque o PC popular é ruim?

Instalando o Dynebolic sem instalador

  
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