Servidor Perfeito · 9 min read · Feb 09, 2026
O Servidor Perfeito - Ubuntu 14.04 (nginx, BIND, MySQL, PHP, Postfix, Dovecot e ISPConfig 3) - Página 4
12 Instalar Postfix, Dovecot, MySQL, phpMyAdmin, rkhunter, binutils
Podemos instalar Postfix, Dovecot, MySQL, rkhunter e binutils com um único comando:
apt-get install postfix postfix-mysql postfix-doc mysql-client mysql-server openssl getmail4 rkhunter binutils dovecot-imapd dovecot-pop3d dovecot-mysql dovecot-sieve sudoVocê será solicitado a responder às seguintes perguntas:
Nova senha para o usuário “root” do MySQL: <– sua senha de root sql Repetir senha para o usuário “root” do MySQL: <– sua senha de root sql Tipo geral de configuração de e-mail: <– Site da Internet Nome do sistema de e-mail: <– server1.example.com Criar um certificado SSL autoassinado?: <– Sim
Em seguida, abra as portas TLS/SSL e de envio no Postfix:
vi /etc/postfix/master.cfDescomente as seções de envio e smtps da seguinte forma - adicione a linha -o smtpd_client_restrictions=permit_sasl_authenticated,reject a ambas as seções e deixe tudo o mais comentado:
| [...] submission inet n - - - - smtpd -o syslog_name=postfix/submission -o smtpd_tls_security_level=encrypt -o smtpd_sasl_auth_enable=yes -o smtpd_client_restrictions=permit_sasl_authenticated,reject # -o smtpd_reject_unlisted_recipient=no # -o smtpd_client_restrictions=$mua_client_restrictions # -o smtpd_helo_restrictions=$mua_helo_restrictions # -o smtpd_sender_restrictions=$mua_sender_restrictions # -o smtpd_recipient_restrictions=permit_sasl_authenticated,reject # -o milter_macro_daemon_name=ORIGINATING smtps inet n - - - - smtpd -o syslog_name=postfix/smtps -o smtpd_tls_wrappermode=yes -o smtpd_sasl_auth_enable=yes -o smtpd_client_restrictions=permit_sasl_authenticated,reject # -o smtpd_reject_unlisted_recipient=no # -o smtpd_client_restrictions=$mua_client_restrictions # -o smtpd_helo_restrictions=$mua_helo_restrictions # -o smtpd_sender_restrictions=$mua_sender_restrictions # -o smtpd_recipient_restrictions=permit_sasl_authenticated,reject # -o milter_macro_daemon_name=ORIGINATING [...] |
Reinicie o Postfix depois:
service postfix restartQueremos que o MySQL escute em todas as interfaces, não apenas no localhost, portanto editamos /etc/mysql/my.cnf e comentamos a linha bind-address = 127.0.0.1:
vi /etc/mysql/my.cnf| [...] # Em vez de skip-networking, o padrão agora é escutar apenas em # localhost, que é mais compatível e não menos seguro. #bind-address = 127.0.0.1 [...] |
Em seguida, reiniciamos o MySQL:
service mysql restartAgora verifique se a rede está habilitada. Execute
netstat -tap | grep mysqlA saída deve ser parecida com isso:
root@server1:~# netstat -tap | grep mysql
tcp 0 0 *:mysql *:* LISTEN 17300/mysqld
root@server1:~#13 Instalar Amavisd-new, SpamAssassin e Clamav
Para instalar amavisd-new, SpamAssassin e ClamAV, executamos
apt-get install amavisd-new spamassassin clamav clamav-daemon zoo unzip bzip2 arj nomarch lzop cabextract apt-listchanges libnet-ldap-perl libauthen-sasl-perl clamav-docs daemon libio-string-perl libio-socket-ssl-perl libnet-ident-perl zip libnet-dns-perlA configuração do ISPConfig 3 usa amavisd, que carrega a biblioteca de filtro do SpamAssassin internamente, então podemos parar o SpamAssassin para liberar um pouco de RAM:
service spamassassin stop
update-rc.d -f spamassassin remove14 Instalar Nginx, PHP5 (PHP-FPM) e Fcgiwrap
O Nginx está disponível como um pacote para Ubuntu que podemos instalar da seguinte forma:
apt-get install nginxSe o Apache2 já estiver instalado no sistema, pare-o agora…
service apache2 stop… e remova os links de inicialização do sistema do Apache:
update-rc.d -f apache2 removeInicie o nginx depois:
service nginx start(Se tanto o Apache2 quanto o nginx estiverem instalados, o instalador do ISPConfig 3 perguntará qual você deseja usar - responda nginx neste caso. Se apenas um desses dois estiver instalado, o ISPConfig fará a configuração necessária automaticamente.)
Podemos fazer o PHP5 funcionar no nginx através do PHP-FPM (PHP-FPM (FastCGI Process Manager) é uma implementação alternativa do PHP FastCGI com alguns recursos adicionais úteis para sites de qualquer tamanho, especialmente sites mais movimentados) que instalamos da seguinte forma:
apt-get install php5-fpmO PHP-FPM é um processo daemon (com o comando de início service php5-fpm start) que executa um servidor FastCGI no socket /var/run/php5-fpm.sock.
Para obter suporte ao MySQL no PHP, podemos instalar o pacote php5-mysql. É uma boa ideia instalar alguns outros módulos do PHP5 também, pois você pode precisar deles para suas aplicações. Você pode procurar por módulos PHP5 disponíveis assim:
apt-cache search php5Escolha os que você precisa e instale-os assim:
apt-get install php5-mysql php5-curl php5-gd php5-intl php-pear php5-imagick php5-imap php5-mcrypt php5-memcache php5-ming php5-ps php5-pspell php5-recode php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xsl snmpO módulo mcrypt do PHP5 deve ser habilitado manualmente:
php5enmod mcryptAPC é um cache de opcode PHP gratuito e de código aberto para armazenar em cache e otimizar o código intermediário do PHP. É semelhante a outros caches de opcode PHP, como eAccelerator e XCache. É fortemente recomendado ter um desses instalados para acelerar sua página PHP.
O APC pode ser instalado da seguinte forma:
apt-get install php-apcEm seguida, abra /etc/php5/fpm/php.ini…
vi /etc/php5/fpm/php.ini… e defina cgi.fix_pathinfo=0 e seu fuso horário:
| [...] cgi.fix_pathinfo=0 [...] date.timezone="Europe/Berlin" [...] |
(Você pode encontrar todos os fusos horários disponíveis nos diretórios /usr/share/zoneinfo e seus subdiretórios.)
Agora recarregue o PHP-FPM:
service php5-fpm reloadPara obter suporte a CGI no nginx, instalamos o Fcgiwrap.
O Fcgiwrap é um wrapper CGI que deve funcionar também para scripts CGI complexos e pode ser usado para ambientes de hospedagem compartilhada porque permite que cada vhost use seu próprio diretório cgi-bin.
Instale o pacote fcgiwrap:
apt-get install fcgiwrapApós a instalação, o daemon fcgiwrap já deve estar iniciado; seu socket é /var/run/fcgiwrap.socket. Se não estiver em execução, você pode usar o script service fcgiwrap para iniciá-lo.
É isso! Agora, quando você criar um vhost nginx, o ISPConfig cuidará da configuração correta do vhost.
14.1 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 PHP-FPM. Para aprender como construir versões adicionais do PHP (PHP-FPM) 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 14.04 também).
14.2 Instalar phpMyAdmin
Instale o phpMyAdmin da seguinte forma:
apt-get install phpmyadminVocê verá as seguintes perguntas:
Servidor web para reconfigurar automaticamente: <– selecione nenhum (porque apenas apache2 e lighttpd estão disponíveis como opções) Configurar banco de dados para phpmyadmin com dbconfig-common? <– Não
Agora você pode encontrar o phpMyAdmin no diretório /usr/share/phpmyadmin/.
Depois de instalar o ISPConfig 3, você pode acessar o phpMyAdmin da seguinte forma:
O vhost de aplicativos do ISPConfig na porta 8081 para nginx vem com uma configuração do phpMyAdmin, então você pode usar http://server1.example.com:8081/phpmyadmin ou http://server1.example.com:8081/phpMyAdmin para acessar o phpMyAdmin.
Se você quiser usar um alias /phpmyadmin ou /phpMyAdmin que possa usar de seus sites, isso é um pouco mais complicado do que para o Apache porque o nginx não tem aliases globais (ou seja, aliases que podem ser definidos para todos os vhosts). Portanto, você deve definir esses aliases para cada vhost do qual deseja acessar o phpMyAdmin.
Para fazer isso, cole o seguinte no campo Diretivas do nginx na aba Opções do site no ISPConfig:
| location /phpmyadmin { root /usr/share/; index index.php index.html index.htm; location ~ ^/phpmyadmin/(.+\.php)$ { try_files $uri =404; root /usr/share/; fastcgi_pass unix:/var/run/php5-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $request_filename; include /etc/nginx/fastcgi_params; fastcgi_param PATH_INFO $fastcgi_script_name; fastcgi_buffer_size 128k; fastcgi_buffers 256 4k; fastcgi_busy_buffers_size 256k; fastcgi_temp_file_write_size 256k; fastcgi_intercept_errors on; } location ~* ^/phpmyadmin/(.+\.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt))$ { root /usr/share/; } } location /phpMyAdmin { rewrite ^/* /phpmyadmin last; } |
Se você usar http s em vez de http para seu vhost, deve adicionar a linha fastcgi_param HTTPS on; à sua configuração do phpMyAdmin assim:
| location /phpmyadmin { root /usr/share/; index index.php index.html index.htm; location ~ ^/phpmyadmin/(.+\.php)$ { try_files $uri =404; root /usr/share/; fastcgi_pass unix:/var/run/php5-fpm.sock; fastcgi_param HTTPS on; # <-- adicione esta linha fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $request_filename; include /etc/nginx/fastcgi_params; fastcgi_param PATH_INFO $fastcgi_script_name; fastcgi_buffer_size 128k; fastcgi_buffers 256 4k; fastcgi_busy_buffers_size 256k; fastcgi_temp_file_write_size 256k; fastcgi_intercept_errors on; } location ~* ^/phpmyadmin/(.+\.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt))$ { root /usr/share/; } } location /phpMyAdmin { rewrite ^/* /phpmyadmin last; } |
Se você usar tanto http quanto https para seu vhost, precisa adicionar a seguinte seção à seção http {} em /etc/nginx/nginx.conf (antes de qualquer linha de inclusão) que determina se o visitante usa http ou https e define a variável $fastcgi_https (que usaremos em nossa configuração do phpMyAdmin) de acordo:
vi /etc/nginx/nginx.conf| [...] http { [...] ## Detectar quando HTTPS é usado map $scheme $fastcgi_https { default off; https on; } [...] } [...] |
Não se esqueça de recarregar o nginx depois:
service nginx reloadEm seguida, vá novamente para o campo Diretivas do nginx, e em vez de fastcgi_param HTTPS on; você adiciona a linha fastcgi_param HTTPS $fastcgi_https; para que você possa usar o phpMyAdmin para solicitações http e https:
| location /phpmyadmin { root /usr/share/; index index.php index.html index.htm; location ~ ^/phpmyadmin/(.+\.php)$ { try_files $uri =404; root /usr/share/; fastcgi_pass unix:/var/run/php5-fpm.sock; fastcgi_param HTTPS $fastcgi_https; # <-- adicione esta linha fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $request_filename; include /etc/nginx/fastcgi_params; fastcgi_param PATH_INFO $fastcgi_script_name; fastcgi_buffer_size 128k; fastcgi_buffers 256 4k; fastcgi_busy_buffers_size 256k; fastcgi_temp_file_write_size 256k; fastcgi_intercept_errors on; } location ~* ^/phpmyadmin/(.+\.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt))$ { root /usr/share/; } } location /phpMyAdmin { rewrite ^/* /phpmyadmin last; } |
15 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:
Idiomas a suportar: <– en (Inglês) Lista de sites ausentes <– Ok
Antes que possamos iniciar o Mailman, uma primeira lista de discussão chamada mailman deve ser criada:
newlist mailmanroot@server1:~# newlist mailman
Digite o e-mail da pessoa que está gerenciando a lista: <– endereço de e-mail do administrador, por exemplo, [email protected]
Senha inicial do mailman: <– senha do administrador para a lista do mailman
Para finalizar a criação da sua lista de discussão, você deve editar seu arquivo /etc/aliases (ou equivalente) adicionando as seguintes linhas, e possivelmente executando o programa newaliases:
lista de discussão mailman
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…
vi /etc/aliases… e adicione as seguintes linhas:
| [...] ## lista de discussão mailman 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
newaliasesdepois e reinicie o Postfix:
service postfix restartEm seguida, inicie o daemon do Mailman:
service mailman startDepois de instalar o ISPConfig 3, você pode acessar o Mailman da seguinte forma:
O vhost de aplicativos do ISPConfig na porta 8081 para nginx vem com uma configuração do Mailman, então você pode usar http://server1.example.com:8081/cgi-bin/mailman/admin/
Se você quiser usar o Mailman de seus sites, isso é um pouco mais complicado do que para o Apache porque o nginx não tem aliases globais (ou seja, aliases que podem ser definidos para todos os vhosts). Portanto, você deve definir esses aliases para cada vhost do qual deseja acessar o Mailman.
Para fazer isso, cole o seguinte no campo Diretivas do nginx na aba Opções do site no ISPConfig:
| location /cgi-bin/mailman { root /usr/lib/; fastcgi_split_path_info (^/cgi-bin/mailman/[^/]*)(.*)$; include /etc/nginx/fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param PATH_INFO $fastcgi_path_info; fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info; fastcgi_intercept_errors on; fastcgi_pass unix:/var/run/fcgiwrap.socket; } location /images/mailman { alias /usr/share/images/mailman; } location /pipermail { alias /var/lib/mailman/archives/public; autoindex on; } |
Isso define o alias /cgi-bin/mailman/ para seu vhost, o que significa que você pode acessar a interface de administração do Mailman para uma lista em http://
Em http://
Receba novas postagens na sua caixa de entrada
Sem spam. Cancele a assinatura a qualquer momento.