Servidor · 10 min read · Jan 20, 2026

O Servidor Perfeito - Ubuntu 15.10 (Wily Werewolf) com Apache, PHP, MySQL, PureFTPD, BIND, Postfix, Dovecot e ISPConfig 3 - Página 2

8. Instalar Apache2, PHP5, phpMyAdmin, FCGI, suExec, Pear e mcrypt

Apache2, PHP5, phpMyAdmin, FCGI, suExec, Pear e mcrypt podem ser instalados da seguinte forma:

apt-get install apache2 apache2-doc apache2-utils libapache2-mod-php5 php5 php5-common php5-gd php5-mysql php5-imap phpmyadmin php5-cli php5-cgi libapache2-mod-fcgid apache2-suexec-pristine php-pear php-auth php5-mcrypt mcrypt php5-imagick imagemagick libruby libapache2-mod-python php5-curl php5-intl php5-memcache php5-memcached php5-ming php5-ps php5-pspell php5-recode php5-sqlite php5-tidy php5-xmlrpc php5-xsl memcached

Você verá a seguinte pergunta:

Web server to reconfigure automatically: <-- apache2   
Configure database for phpmyadmin with dbconfig-common? <-- Yes  
Password of the database's administrative user: <-- Digite a senha root do MySQL aqui e confirme digitando-a novamente na próxima tela  
MySQL application password for phpmyadmin: <-- Pressione enter

Em seguida, execute o seguinte comando para habilitar os módulos do Apache suexec, rewrite, ssl, actions e include (mais dav, dav_fs e auth_digest se você quiser usar WebDAV):

a2enmod suexec rewrite ssl actions include cgi
a2enmod dav_fs dav auth_digest

E habilite o módulo mcrypt no PHP:

php5enmod mcrypt

Reinicie o Apache depois:

service apache2 restart

Se você quiser hospedar arquivos Ruby com a extensão .rb em seus sites criados através do ISPConfig, você deve comentar a linha application/x-ruby rb em /etc/mime.types:

nano /etc/mime.types
[...]  
#application/x-ruby                             rb  
[...]  

(Isto é necessário apenas para arquivos .rb; arquivos Ruby com a extensão .rbx funcionam imediatamente.)

Reinicie o Apache depois:

service apache2 restart

8.1 Cache de Opcode APCu PHP

APCu é um cache de opcode PHP gratuito para armazenar em cache e otimizar o código intermediário PHP. É altamente recomendável ter um desses instalados para acelerar sua página PHP.

APCu pode ser instalado da seguinte forma:

apt-get install php5-apcu

Agora reinicie o Apache:

service apache2 restart

8.2 PHP-FPM

Para usar PHP-FPM com Apache, precisamos do módulo mod_fastcgi do Apache (por favor, não confunda isso com mod_fcgid - eles são muito semelhantes, mas você não pode usar PHP-FPM com mod_fcgid). Podemos instalar PHP-FPM e mod_fastcgi da seguinte forma:

apt-get install libapache2-mod-fastcgi php5-fpm

Certifique-se de habilitar o módulo e reiniciar o Apache:

a2enmod actions fastcgi alias   
service apache2 restart

8.3 Versões Adicionais do PHP

A partir do ISPConfig 3.0.5, é possível ter várias versões do PHP em um servidor (selecionáveis através do ISPConfig) que podem ser executadas através do FastCGI e PHP-FPM. Para saber como construir versões adicionais do PHP (PHP-FPM e FastCGI) e como configurar o ISPConfig, consulte este tutorial: Como Usar Múltiplas Versões do PHP (PHP-FPM & FastCGI) Com ISPConfig 3 (Ubuntu 12.10) (funciona para Ubuntu 15.10 também).

8.4 Instalar SuPHP (opcional, não recomendado)

SuPHP não está mais disponível para Debian Jessie. O modo suphp não deve mais ser usado no ISPConfig, pois existem modos PHP melhores como php-fpm e php-fcgi disponíveis. Se você realmente precisar do suphp por razões de legado, siga os passos deste capítulo para compilá-lo manualmente:

apt-get install apache2-dev build-essential autoconf automake libtool flex bison debhelper binutils
cd /usr/local/src  
wget http://suphp.org/download/suphp-0.7.2.tar.gz  
tar zxvf suphp-0.7.2.tar.gz  
wget -O suphp.patch https://lists.marsching.com/pipermail/suphp/attachments/20130520/74f3ac02/attachment.patch  
patch -Np1 -d suphp-0.7.2 < suphp.patch  
cd suphp-0.7.2  
autoreconf -if  
./configure --prefix=/usr/ --sysconfdir=/etc/suphp/ --with-apr=/usr/bin/apr-1-config --with-apache-user=www-data --with-setid-mode=owner --with-logfile=/var/log/suphp/suphp.log  
make  
make install  

Crie o diretório de configuração do suphp e o arquivo suphp.conf:

mkdir /var/log/suphp  
mkdir /etc/suphp  
nano /etc/suphp/suphp.conf
[global]  
;Caminho para o arquivo de log  
logfile=/var/log/suphp/suphp.log  
  
;Nível de log  
loglevel=info  
  
;Usuário que o Apache está executando  
webserver_user=www-data  
  
;Caminho que todos os scripts devem estar  
docroot=/var/www  
  
;Caminho para chroot() antes de executar o script  
;chroot=/mychroot  
  
; Opções de segurança  
allow_file_group_writeable=false  
allow_file_others_writeable=false  
allow_directory_group_writeable=false  
allow_directory_others_writeable=false  
  
;Verifique se o script está dentro do DOCUMENT_ROOT  
check_vhost_docroot=true  
  
;Enviar mensagens de erro menores para o navegador  
errors_to_browser=false  
  
;Variável de ambiente PATH  
env_path=/bin:/usr/bin  
  
;Umask a ser definida, especifique em notação octal  
umask=0022  
  
; UID mínimo  
min_uid=100  
  
; GID mínimo  
min_gid=100  
  
[handlers]  
;Manipulador para scripts php  
x-httpd-suphp="php:/usr/bin/php-cgi"  
  
;Manipulador para scripts CGI  
x-suphp-cgi=execute:!self  
umask=0022

Em seguida, adicionaremos um arquivo de configuração para carregar o módulo suphp no apache:

echo "LoadModule suphp_module /usr/lib/apache2/modules/mod_suphp.so" > /etc/apache2/mods-available/suphp.load

E então abra /etc/apache2/mods-available/suphp.conf…

nano /etc/apache2/mods-available/suphp.conf

… e adicione o seguinte conteúdo:

  
        AddType application/x-httpd-suphp .php .php3 .php4 .php5 .phtml  
        suPHP_AddHandler application/x-httpd-suphp

      
        suPHP_Engine on  
    

    # Por padrão, desabilitar suPHP para aplicações web empacotadas no debian, pois os arquivos  
    # são de propriedade do root e não podem ser executados pelo suPHP devido ao min_uid.  
      
        suPHP_Engine off  
    

# # Use um arquivo de configuração php específico (um diretório que contém um arquivo php.ini)  
#       suPHP_ConfigPath /etc/php5/cgi/suphp/  
# # Diz ao mod_suphp para NÃO lidar com solicitações do tipo .  
#       suPHP_RemoveHandler   

Habilite o módulo suphp no apache:

a2enmod suphp

Reinicie o Apache depois:

service apache2 restart

9. Instalar Mailman

Desde a versão 3.0.4, o ISPConfig também permite que você gerencie (crie/modifique/exclua) listas de discussão do Mailman. Se você quiser usar esse recurso, instale o Mailman da seguinte forma:

apt-get install mailman

Selecione pelo menos um idioma, por exemplo:

Languages to support: <– pt (Português)
Missing site list <– Ok

Antes de podermos iniciar o Mailman, uma primeira lista de discussão chamada mailman deve ser criada:

newlist mailman

root@server1:~# newlist mailman
Digite o email da pessoa que está gerenciando a lista: <– endereço de email do administrador, por exemplo, [email protected]
Senha inicial do mailman: <– senha do administrador para a lista mailman
Para terminar de criar sua lista de discussão, você deve editar seu /etc/aliases (ou
equivalente) adicionando as seguintes linhas, e possivelmente executando o
`newaliases’ programa:

## mailman mailing list
mailman: “|/var/lib/mailman/mail/mailman post mailman”
mailman-admin: “|/var/lib/mailman/mail/mailman admin mailman”
mailman-bounces: “|/var/lib/mailman/mail/mailman bounces mailman”
mailman-confirm: “|/var/lib/mailman/mail/mailman confirm mailman”
mailman-join: “|/var/lib/mailman/mail/mailman join mailman”
mailman-leave: “|/var/lib/mailman/mail/mailman leave mailman”
mailman-owner: “|/var/lib/mailman/mail/mailman owner mailman”
mailman-request: “|/var/lib/mailman/mail/mailman request mailman”
mailman-subscribe: “|/var/lib/mailman/mail/mailman subscribe mailman”
mailman-unsubscribe: “|/var/lib/mailman/mail/mailman unsubscribe mailman”

Pressione enter para notificar o proprietário do mailman… <– ENTER

root@server1:~# Abra /etc/aliases depois… nano /etc/aliases … e adicione as seguintes linhas: [...] ## mailman mailing list mailman: "|/var/lib/mailman/mail/mailman post mailman" mailman-admin: "|/var/lib/mailman/mail/mailman admin mailman" mailman-bounces: "|/var/lib/mailman/mail/mailman bounces mailman" mailman-confirm: "|/var/lib/mailman/mail/mailman confirm mailman" mailman-join: "|/var/lib/mailman/mail/mailman join mailman" mailman-leave: "|/var/lib/mailman/mail/mailman leave mailman" mailman-owner: "|/var/lib/mailman/mail/mailman owner mailman" mailman-request: "|/var/lib/mailman/mail/mailman request mailman" mailman-subscribe: "|/var/lib/mailman/mail/mailman subscribe mailman" mailman-unsubscribe: "|/var/lib/mailman/mail/mailman unsubscribe mailman" Execute newaliases depois e reinicie o Postfix: service postfix restart Finalmente, devemos habilitar a configuração do Mailman no Apache: ln -s /etc/mailman/apache.conf /etc/apache2/conf-available/mailman.conf Isso define o alias /cgi-bin/mailman/ para todos os vhosts do Apache, o que significa que você pode acessar a interface de administração do Mailman para uma lista em http:///cgi-bin/mailman/admin/, e a página da web para usuários de uma lista de discussão pode ser encontrada em http:///cgi-bin/mailman/listinfo/. Em http:///pipermail você pode encontrar os arquivos de lista de discussão. Reinicie o Apache depois: service apache2 restart Em seguida, inicie o daemon do Mailman: service mailman start ## 10. Instalar PureFTPd e Quota PureFTPd e quota podem ser instalados com o seguinte comando: apt-get install pure-ftpd-common pure-ftpd-mysql quota quotatool Edite o arquivo /etc/default/pure-ftpd-common… nano /etc/default/pure-ftpd-common … e certifique-se de que o modo de início esteja definido como standalone e defina VIRTUALCHROOT=true: [...] STANDALONE_OR_INETD=standalone [...] VIRTUALCHROOT=true [...] Agora configuramos o PureFTPd para permitir sessões FTP e TLS. FTP é um protocolo muito inseguro porque todas as senhas e todos os dados são transferidos em texto claro. Ao usar TLS, toda a comunicação pode ser criptografada, tornando o FTP muito mais seguro. Se você quiser permitir sessões FTP e TLS, execute echo 1 > /etc/pure-ftpd/conf/TLS Para usar TLS, devemos criar um certificado SSL. Eu o crio em /etc/ssl/private/, portanto, primeiro crio esse diretório: mkdir -p /etc/ssl/private/ Depois, podemos gerar o certificado SSL da seguinte forma: openssl req -x509 -nodes -days 7300 -newkey rsa:2048 -keyout /etc/ssl/private/pure-ftpd.pem -out /etc/ssl/private/pure-ftpd.pem Nome do País (código de 2 letras) [AU]: <– Digite o Nome do Seu País (por exemplo, “BR”).
Nome do Estado ou Província (nome completo) [Some-State]: <– Digite o Nome do Seu Estado ou Província.
Nome da Localidade (ex: cidade) []: <– Digite sua Cidade.
Nome da Organização (ex: empresa) [Internet Widgits Pty Ltd]: <– Digite o Nome da Sua Organização (por exemplo, o nome da sua empresa).
Nome da Unidade Organizacional (ex: seção) []: <– Digite o Nome da Sua Unidade Organizacional (por exemplo, “Departamento de TI”).
Nome Comum (ex: SEU nome) []: <– Digite o Nome de Domínio Totalmente Qualificado do sistema (por exemplo, “server1.exemplo.com”).
Endereço de Email []: <– Digite seu Endereço de Email. Altere as permissões do certificado SSL: chmod 600 /etc/ssl/private/pure-ftpd.pem Em seguida, reinicie o PureFTPd: service pure-ftpd-mysql restart Edite /etc/fstab. O meu se parece com isso (adicionei, usrjquota=quota.user, grpjquota=quota.group, jqfmt=vfsv0 à partição com o ponto de montagem /): nano /etc/fstab # /etc/fstab: informações do sistema de arquivos estático. # # Use 'blkid' para imprimir o identificador universalmente único para um # dispositivo; isso pode ser usado com UUID= como uma maneira mais robusta de nomear dispositivos # que funciona mesmo se discos forem adicionados e removidos. Veja fstab(5). # # /dev/mapper/server1--vg-root / ext4 errors=remount-ro,usrjquota=quota.user,grpjquota=quota.group,jqfmt=vfsv0 0 1 # /boot estava em /dev/sda1 durante a instalação UUID=9b8299f1-b2a2-4231-9ba1-4540fad76b0f /boot ext2 defaults 0 2 /dev/mapper/server1--vg-swap_1 none swap sw 0 0 Para habilitar quota, execute estes comandos: mount -o remount / quotacheck -avugm quotaon -avug O que mostrará a seguinte saída: root@server1:/# quotacheck -avugm quotacheck: Scanning /dev/dm-0 [/] done quotacheck: Cannot stat old user quota file //quota.user: No such file or directory. Usage will not be subtracted. quotacheck: Cannot stat old group quota file //quota.group: No such file or directory. Usage will not be subtracted. quotacheck: Cannot stat old user quota file //quota.user: No such file or directory. Usage will not be subtracted. quotacheck: Cannot stat old group quota file //quota.group: No such file or directory. Usage will not be subtracted. quotacheck: Checked 11518 directories and 83893 files quotacheck: Old file not found. quotacheck: Old file not found. root@server1:/# quotaon -avug /dev/dm-0 [/]: group quotas turned on /dev/dm-0 [/]: user quotas turned on ## 11. Instalar Servidor DNS BIND BIND pode ser instalado da seguinte forma: apt-get install bind9 dnsutils ## 12. Instalar Vlogger, Webalizer e AWstats Vlogger, webalizer e AWstats podem ser instalados da seguinte forma: apt-get install vlogger webalizer awstats geoip-database libclass-dbi-mysql-perl Abra /etc/cron.d/awstats depois… nano /etc/cron.d/awstats … e comente tudo neste arquivo: #MAILTO=root #*/10 * * * * www-data [ -x /usr/share/awstats/tools/update.sh ] && /usr/share/awstats/tools/update.sh # Gerar relatórios estáticos: #10 03 * * * www-data [ -x /usr/share/awstats/tools/buildstatic.sh ] && /usr/share/awstats/tools/buildstatic.sh ## 13. Instalar Jailkit Jailkit é necessário apenas se você quiser chroot usuários SSH. Ele pode ser instalado da seguinte forma (importante: Jailkit deve ser instalado antes do ISPConfig - não pode ser instalado depois!): apt-get install build-essential autoconf automake1.11 libtool flex bison debhelper binutils cd /tmp wget http://olivier.sessink.nl/jailkit/jailkit-2.17.tar.gz tar xvfz jailkit-2.17.tar.gz cd jailkit-2.17 ./debian/rules binary Agora você pode instalar o pacote Jailkit.deb da seguinte forma: cd .. dpkg -i jailkit_2.17-1_*.deb rm -rf jailkit-2.17* ## 14. Instalar fail2ban Isso é opcional, mas recomendado, porque o monitor do ISPConfig tenta mostrar o log: apt-get install fail2ban Para fazer o fail2ban monitorar o PureFTPd e o Dovecot, crie o arquivo /etc/fail2ban/jail.local: nano /etc/fail2ban/jail.local [pureftpd] enabled = true port = ftp filter = pureftpd logpath = /var/log/syslog maxretry = 3 [dovecot-pop3imap] enabled = true filter = dovecot-pop3imap action = iptables-multiport[name=dovecot-pop3imap, port="pop3,pop3s,imap,imaps", protocol=tcp] logpath = /var/log/mail.log maxretry = 5 [postfix-sasl] enabled = true port = smtp filter = postfix-sasl logpath = /var/log/mail.log maxretry = 3 Em seguida, crie os seguintes dois arquivos de filtro: nano /etc/fail2ban/filter.d/pureftpd.conf [Definition] failregex = .*pure-ftpd: \(.*@\) \[WARNING\] Authentication failed for user.* ignoreregex = nano /etc/fail2ban/filter.d/dovecot-pop3imap.conf [Definition] failregex = (?: pop3-login|imap-login): .*(?:Authentication failure|Aborted login \(auth failed|Aborted login \(tried to use disabled|Disconnected \(auth failed|Aborted login \(\d+ authentication attempts).*rip=(?P\S*),.* ignoreregex = Adicione a linha ignoreregex ausente no arquivo postfix-sasl: echo "ignoreregex =" >> /etc/fail2ban/filter.d/postfix-sasl.conf Reinicie o fail2ban depois: service fail2ban restart

Share: X/Twitter LinkedIn

Receba novas postagens na sua caixa de entrada

Sem spam. Cancele a assinatura a qualquer momento.