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 memcachedVocê 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 enterEm 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 cgia2enmod dav_fs dav auth_digestE habilite o módulo mcrypt no PHP:
php5enmod mcryptReinicie o Apache depois:
service apache2 restartSe 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 restart8.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-apcuAgora reinicie o Apache:
service apache2 restart8.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-fpmCertifique-se de habilitar o módulo e reiniciar o Apache:
a2enmod actions fastcgi alias
service apache2 restart8.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 binutilscd /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=0022Em 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.loadE 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 suphpReinicie o Apache depois:
service apache2 restart9. 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 mailmanSelecione 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 mailmanroot@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://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). # # 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: \(.*@ 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 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
Receba novas postagens na sua caixa de entrada
Sem spam. Cancele a assinatura a qualquer momento.