Tutorial Debian 9: ISPConfig com NginX e Múltiplas Versões do PHP

Neste tutorial mostrarei como instalar o Debian 9 “Stretch” em um servidor cloud, seja ele VPS ou dedicado, seguindo o padrão aqui do site com ISPConfig e NginX. A grande novidade é que vamos configurar o painel contendo múltiplas versões do PHP, ao final teremos as versões 5.6, 7,0 e 7,1 podendo-se adicionar outras pelo método demonstrado aqui.

Além do PHP 7 ainda teremos o MariaDB como padrão (MariaDB é um fork do MySQL)  e o UFW instalado para ser usado em conjunto com o ISPConfig e o Fail2Ban, o que é um aprimoramento da configuração que usamos em nosso último tutorial de Debian 8. A versão do NginX também teve um upgrade para a 1.1x.

Com o mesmo setup que eu publico nos tutoriais (Linux Debian + ISPConfig e NginX) atendo hoje aproximadamente 1.000 sites distribuídos em mais de 130 servidores de clientes, sendo pelo menos 60% destes sites WordPress e os demais lojas virtuais Magento, Opencart, Prestashop, WooCommerce e sites PHP que usam os mais diversos frameworks como CodeIgniter e Laravel, e ainda ferramentas de Marketing como Mautic e Mailwizz. Presto consultoria e faço o gerenciamento de servidores para grandes lojas virtuais atualmente. Mas logicamente que para conseguir gerenciar tudo isso é necessário um sistema de monitoramento avançado (NOC) com firewall monitorado (SOC) e otimizações que vão muito além do escopo dos tutoriais. Para saber mais sobre os serviços do Fator Binário envie um email para contato@fatorbinario.com e agende uma chamada por Skype para avaliação do seu projeto (a avaliação não será cobrada).

Para o deploy do ISPConfig e as demais ferramentas será necessário contratar um servidor dedicado ou VPS. Hoje eu instalo, configuro e gerencio servidores nas maiores empresas do mercado. Atendo servidores na Amazon, OVH, Online, Contabo, Digital Ocean, Linode, Vultr, Locaweb, e muitas outras.. e posso assegurar que tanto o painel como os apps publicados em meus tutoriais funcionam bem em qualquer uma delas.

Neste tutorial usarei um servidor VPS na Locaweb que recentemente começou a vender este serviço. Logo que eles lançaram os planos VPS havia uma certa instabilidade mas ultimamente tenho configurado servidores para sites concorridos na Locaweb e, acompanhando pelo NOC, notei uma estabilidade maior, parecida com as demais empresas.

Algumas das vantagens de se usar a Locaweb são:

  • Servidores no Brasil, a latência é de 20ms para a maioria dos estados comparado com os 150ms até Nova York. Operar o console ou fazer upload de arquivos pelo FTP é muito rápido
  • Pagamento em Reais e formas de pagamento locais diversas
  • Empresa Brasileira
  • O preço dos servidores é mais baixo que os da Digital Ocean. Clique neste link aqui e note que o servidor de R$ 35 tem 2 CPUs comparado com o de preço similar da Digital ($10) que só tem uma CPU

Com o Debian 9, Nginx, PHP 7 e uma hospedagem no Brasil eu posso garantir que o seu site irá “voar” de tão rápido. E caso ainda não queira assinar o serviço deles por motivos de atendimento ou suporte saiba sempre que pode contar com o Fator Binário, em menos de 3 anos já foram mais de 3 mil comentários nos tutoriais aqui do site, confira em outros artigos.

Você pode assinar a Locaweb pelo link abaixo ou pelo banner no painel esquerdo do site, assim estará ajudando o Fator Binário.

CONTRATE O SERVIDOR CLICANDO NESTE LINK

Tutorial Debian 9 Stretch x64: ISPConfig 3.x, NginX e Múltiplas versões do PHP

* O servidor recomendado para esta instalação é o de R$ 35,90 da Locaweb (1Gb RAM e 2 vCPUs), mas poderá ser instalado no de R$ 17,90 se desabilitar as ferramentas de email (Amavis e Clamav) depois da instalação.

Deploy do sistema Linux Debian 9.x Stretch

A Na página servidores.locaweb.com.br selecione o servidor contratado ou clique em “Novo Servidor” para contratar outro. Note que na Locaweb também podemos fazer resize do VPS.

Nas opções de setup selecione Debian 9.x X64 (versão 64 bits do Linux Debian Stretch, o “x” em 9.x representa qualquer subversão do Debian 9). E na opção de senha marque “Por senha” e digite a senha que será usada pelo superusuário root.

B Após o deploy do VPS já podemos acessar o console SSH para prosseguir com a instalação do ISPConfig. Clique neste link para um tutorial ensinando como acessar o servidor e editar arquivos remotos com WinSCP e Putty.

*Em algumas empresas de hospedagem de servidores o procedimento para criar a senha root pode ser diferente da citada neste artigo.

Configurações pré-instalação

Antes de começarmos a instalar o ISPConfig é necessário executar alguns comandos para preparar o sistema e evitar avisos e erros do script. Para isso acesse o console SSH com o super usuário root e siga atentamente os passos abaixo.

A Edite o arquivo /etc/apt/sources.list e certifique-se que nas linhas apontando para os repositórios exista a opção “non-free” ao final de cada uma. Salve o arquivo caso tenha modificado.

B Digite os seguintes comandos para atualizar a lista de pacotes, fazer upgrade deles para as últimas versões disponíveis e verificar a versão do Debian.

*Note que neste tutorial escreverei vários comandos separados por ponto e vírgula ou “&&”, que funcionarão da mesma maneira como se fossem digitados um de cada vez. No comando abaixo por exemplo são 4 comandos em uma única linha.

> apt-get update && apt-get -y upgrade; cat /etc/debian_version; getconf LONG_BIT

C Reconfigure o interpretador de comandos de Dash para Bash, caso contrário o script poderá falhar. Digite o comando abaixo e escolha <NO>.

> dpkg-reconfigure dash

D Instale o sincronizador de timezone e o pacote snmp-mips para evitar logs de erros desnecessários. Quando perguntado a região e o timezone selecione <America> e <Sao Paulo> ou o seu fuso horário caso seja diferente.

> apt-get -y install ntp ntpdate; dpkg-reconfigure tzdata

> apt-get -y install snmp-mibs-downloader

E É importante instalar também o Jailkit para colocar os usuários shell em chroot, executando este passo antes do script pois há um bug no instalador automático que não permite a compilação do pacote.

> apt-get -y install build-essential autoconf automake libtool flex bison debhelper binutils

> cd /tmp; apt-get install python; wget --no-check-certificate http://olivier.sessink.nl/jailkit/jailkit-2.19.tar.gz; tar xvfz jailkit-2.19.tar.gz; cd jailkit-2.19; echo 5 > debian/compat && ./debian/rules binary && cd .. && dpkg -i jailkit_2.19-1_*.deb && rm -rf jailkit-2.19*; /etc/init.d/jailkit status

F Durante a instalação poderá ocorrer um erro de falta de memória se o servidor tiver somente 512mb de RAM. Para evitar isso adicione SWAP ao sistema.

#Verifique se a SWAP já não foi criada no deploy do sistema com o comando:
> free -m

#Caso a linha de SWAP estiver com todos os valores zerados adicione-a com o comando:
> fallocate -l 1G /swapfile && chmod 600 /swapfile && mkswap /swapfile && swapon /swapfile; free -m

#E por último adicione o mount da SWAP ao fstab:
> printf '\n/swapfile none swap sw 0 0\n' | tee -a /etc/fstab; mount -a
Instalação do ISPConfig 3

O script usado para a instalação do ISPConfig é mantido por Matteo Temporini, o mesmo do Debian Jessie. Após a instalação será necessário várias tunagens, otimizações e acertos que não estão no script mas que você poderá encontrar aqui no Fator Binário.

A Baixe e execute o script de instalação do ISPConfig 3:

> cd /tmp; wget --no-check-certificate -O installer.tgz https://github.com/servisys/ispconfig_setup/tarball/master; tar zxvf installer.tgz; cd servisys-ispconfig*

> bash install.sh

B Eu sempre configuro servidores com o NginX ao invés do Apache em meus tutoriais, responda atentamente as perguntas na tela seguindo os passos abaixo. Caso decida usar opções diferentes daquelas citadas aqui talvez o resultado esperado não seja o mesmo.

a) Is this correct? (y/n): y

b) MySQL: Please specify a root password: <digite uma senha forte para o admin do MySQL>

c) Webserver: Select webserver type: <nginx>

d) By default ISPConfig comes with php 7, do you want to install also php 5.6 version?: <yes>

e) Do you want to install HHVM?: <no>

f) You want to install phpMyAdmin during install?: <yes>

g) You want to update Antivirus Database during install?: <no>

h) Setup user quota?: <yes>

i) Would you like full unattended setup of expert mode for ISPConfig?: <standard>

j) Would you like to install Jailkit?: <yes>

k) Select your webmail client: <roundcube>

l) SSL Configuration (Não use acentuação ou caracteres especiais nas respostas):
- Country (ex. EN) : BR
- STATE (ex. Italy): SAO PAULO
- Locality (ex. Udine): SAO PAULO
- Organization (ex. Company L.t.d.): Nome_do_seu_site
- Organization Unit (ex. IT Department): TI

Aguarde...

m) Please choose the web server that should be automatically configured to run phpMyAdmin: <NAO SELECIONAR NADA> (usaremos o NginX)

n) Configure database for phpmyadmin with dbconfig-common?: <yes>

o) MySQL application password for phpmyadmin: <DEIXAR EM BRANCO> será gerada uma senha automaticamente

Aguarde o término da instalação...

C Imediatamente após instalar acesse o painel do ISPConfig e troque a senha que por padrão é “admin“. A URL para acesso é https://IP_DO_SERVIDOR:8080 e o usuário é “admin” também.

Para trocar a senha acesse: “Tools” e em seguida “Password and Language“. Configure o idioma para “pt-BR“.

E ainda no painel ative o firewall em: “Sistema” / “Firewall“. Só precisa confirmar as portas padrões que estão lá. E note que nesta versão do sistema estaremos usando o UFW ao invés do IPTables somente.

Versões adicionais do PHP

Durante o script selecionamos a instalação do PHP 5.6 que foi configurado como alternativa ao 7.0 (padrão). Ambas versões foram instaladas mas queremos também a 7.1 que é a melhor e mais atual para Magento 2 e outros CMS como WordPress e Joomla, e também instalaremos os módulos adicionais que não foram configurados pelo script.

*NOTA: A última versão instalada substituirá o link de comando /usr/bin/php para ela. Então ao final deste tutorial quando for necessário usar uma versão específica use o comando dela, por exemplo: /usr/bin/php5.6. E lembre-se também de apontar o caminho da versão correta quando configurar crons (Mautic por exemplo).

A Módulos adicionais para PHP 7.0. O comando abaixo irá adicionar a maioria dos módulos requeridos por sites e lojas virtuais.

# Módulos adicionais PHP 7.0

> apt-get -y install php7.0-apc php7.0-apcu php7.0-bcmath php7.0-bz2 php7.0-dba php7.0-dom php7.0-memcache php7.0-memcached php7.0-mysqli php7.0-mysqlnd php7.0-soap

B Adicione o PHP 7.1 ao sistema e os módulos necessários.

# PHP 7.1 e módulos

> apt-get -y install php7.1 php7.1-common php7.1-cli php7.1-cgi php7.1-xsl php7.1-fpm php7.1-mysql php7.1-gd php7.1-imap php-pear php7.1-mcrypt php7.1-curl php7.1-intl php7.1-pspell php7.1-recode php7.1-sqlite3 php7.1-tidy php7.1-xmlrpc php7.1-zip php7.1-mbstring php7.1-imap php7.1-mcrypt php7.1-snmp php7.1-xmlrpc php7.1-xsl

> apt-get -y install php7.1-apc php7.1-bcmath php7.1-bz2 php7.1-dba php7.1-dom php7.1-mysqli php7.1-mysqlnd php7.1-soap

C Configure todos os 3 php.ini que estão em /etc/php/VERSAO_PHP/fpm/php.ini em cada um dos diretórios de acordo com o necessário para o servidor (memória, timezone, max_execution_time, etc..), e em seguida reinicie os PHPs.

> /etc/init.d/php5.6-fpm restart; /etc/init.d/php7.0-fpm restart; /etc/init.d/php7.1-fpm restart

D Por último só precisamos adicionar as versões PHP no painel do ISPConfig para que esteja disponível quando criarmos os sites.

Acesse o painel e navegue até “Sistema” / “Versões adicionais do php“. Clique em “Adicionar nova versão do PHP” e preencha conforme abaixo. Note que adicionaremos as 3 versões.

# PHP 5.6

#Aba [Nome]
Nome do PHP: PHP-5.6

#Aba [Configuracoes FastCGI]
Caminho do binário FastCGI: /usr/bin/php-cgi5.6
Caminho do diretório do php.ini: /etc/php/5.6/cgi

#Aba [Configuracoes PHP-FPM]
Caminho do script de inicialização do PHP-FPM: /etc/init.d/php5.6-fpm
Caminho do diretório do php.ini: /etc/php/5.6/fpm
Caminho do diretório de faixas (pool) do PHP-FPM: /etc/php/5.6/fpm/pool.d

# PHP 7.0

#Aba [Nome]
Nome do PHP: PHP-7.0

#Aba [Configuracoes FastCGI]
Caminho do binário FastCGI: /usr/bin/php-cgi7.0
Caminho do diretório do php.ini: /etc/php/7.0/cgi

#Aba [Configuracoes PHP-FPM]
Caminho do script de inicialização do PHP-FPM: /etc/init.d/php7.0-fpm
Caminho do diretório do php.ini: /etc/php/7.0/fpm
Caminho do diretório de faixas (pool) do PHP-FPM: /etc/php/7.0/fpm/pool.d

# PHP 7.1

#Aba [Nome]
Nome do PHP: PHP-7.1

#Aba [Configuracoes FastCGI]
Caminho do binário FastCGI: /usr/bin/php-cgi7.1
Caminho do diretório do php.ini: /etc/php/7.1/cgi

#Aba [Configuracoes PHP-FPM]
Caminho do script de inicialização do PHP-FPM: /etc/init.d/php7.1-fpm
Caminho do diretório do php.ini: /etc/php/7.1/fpm
Caminho do diretório de faixas (pool) do PHP-FPM: /etc/php/7.1/fpm/pool.d

Após adicionar as versões elas aparecerão como opção na aba “Geral” da configuração dos sites. Sempre selecione a versão para o site lá, nunca deixe como “Default”.

Reinicie o sistema

Após finalizar a instalação é importante reiniciar o servidor. Execute o seguinte comando:

> shutdown -r now

NOTAS:

Haverá outros artigos seguidos deste orientando como tunar as configurações, que serão parecidos com os já publicados no Tutorial de Debian 8, você poderá seguir as instruções pós instalação naquelas publicações.

Fator Binário: Monitoramento 24/7 com tunagens de performance e firewall otimizado para cada tipo de projeto e servidor. Sites de notícia, lojas virtuais, instalação de ferramentas para campanha (email marketing). Servidores e sites otimizados para SEO e performance. Mensalidades acessíveis para agências de marketing e desenvolvedores. Contate-nos pelo email contato@fatorbinario.com

Gerenciamento em infraestrutura de Servidores Cloud VPS e Dedicados. Planos mensais acessíveis e consultoria diferenciada para agências de marketing. Envie um email para contato@fatorbinario.com e solicite uma análise gratuita!

728x90a
  • *Não é necessário cadastrar-se no site para comentar nos tutoriais.

  • Mariane

    Oi, Luis. Estou rodando o comando apt-get -y install build-essential autoconf automake libtool flex bison debhelper binutils> apt-get -y install build-essential autoconf automake libtool flex bison debhelper binutils e ele está me retornando isso: E: Unable to locate package install.
    Segui tudo certinho desde o começo.
    Obrigada.

  • Oi Mariane, era um Typo no comando. Faz um refresh na página do tutorial e copie/cole ele novamente. Obrigado por avisar.

  • Mariane

    Gentil você, Luis ahahahaha
    Era só ter falado assim: “leia o comando e veja o que tem de errado”. Eu nem vi que ele estava duplicado. Só vi agora que fui olhar com calma. Como dizem, a pressa é inimiga da perfeição.
    Não dá pra configurar um server resolvendo problemas de plano de saúde no telefone. Dá nisso.
    Obrigada.

  • Agencia websites

    Boa noite Luis, primeiramente gostaria de parabenizar você por dividir o seu conhecimento conosco.
    Estou iniciando a minha VPS vou utilizar o WordPress nos sites e contas de e-mails para os meus clientes, gostaria da sua opinião
    quais programas devo instalar na minha vps ou se você tem algum tutorial para mim ajudar.

  • Isso é bem relativo. Geralmente configurando o servidor seguindo os meus tutoriais e colocando os sites para funcionar você não precisa de muitos softwares adicionais no servidor.

    Aqui no site tem tutoriais de Mautic, Piwik, e muitas outras ferramentas mas servidor que vai hospedar sites não é uma boa prática misturar com os demais.

    Leia alguns artigos que publiquei e vá postando suas dúvidas que irei te ajudando conforme você aprende.

  • Mario Silva

    Muito bom excelente, você tem previsão para sair os proximos tutoriais?

  • Ainda não mas a Mariane do comentário abaixo está achando os caminhos para usar as configurações do Debian 8 neste tutorial, respondi ela em outros artigos hoje cedo.

    Estou preparando um material que será pago no site e que vai muito além do que já se viu por aqui. É uma parceria com um dos melhores gestores de marketing e SEO que atendo, mas também vai levar um tempo até lançar.

  • Juan Chaves

    @fatorbinario:disqus blz meu jovem! vejo que vc indica para não instala o HHVM, qual seria o motivo, incompatibilidade? outra duvida o tutorial de configuração do servidor de email https://fatorbinario.com/tutorial-debian-8-x64-com-ispconfig-e-nginx-servidor-de-email/ dar para fazer no debian 9? vlw abraço

  • O HHVM era bem superior ao PHP quando lançaram, o PHP 5.6 é bem similar em performance, e o PHP 7 é superior, então não tem porque ficar inventando.

    Quanto ao tutorial de email, você não precisa fazer a configuração manual do DKIM, o ISPConfig tem ele incorporado ao painel.

  • wanderson santos

    Eu instalei o painel IspConfig na digitalocean no plano de $10,00. Na instalação do IspConfig deu tudo certo só que eu fui instalar o wordpress no painel IspConfig esta dando esse erro aqui:

    ERROR 503 – Service Unavailable!

    The following error occurred:

    The Service is not available at the moment due to a temporary overloading or maintenance of the server. Please try again later.

    Please contact the webmaster with any queries.

    Se alguem pode me ajudar a consertar esse erro que ta dando

  • Para instalar o site siga este tutorial, crie o usuario em jail SSH e mande o comando lá:
    https://fatorbinario.com/tutorial-debian-8-x64-com-ispconfig-e-nginx-instalacao-do-site/

  • wanderson santos

    Agora não aparece o erro 503 mais agora eu instalo o wordpress e aparece a pagina da Debian, não aparece a pagina do wordpress instalado só aparece a pagina da Debian instalada no dominio

  • Delete o index.html padrão que vem no diretório do site.

  • Wanderson

    obrigado pela dica que voce deu, eu consegui remover a pagina da Debian que tava aparecendo, só que ta dando outro problema que eu não to conseguindo resolver, esta aparecendo essa página no meu dominio, se voce sabe como eu posso consertar isso:

    Index of /

    [ICO] Name Last modified Size Description
    Apache/2.4.25 (Debian) Server at EDITADO Port 80

  • Se fez o servidor com NginX digite no console:
    > /etc/init.d/apache2 stop
    > /etc/init.d/nginx restart

  • Wanderson

    Desculpe por estar te em comodando de novo. Eu tenho um WordPress instalado no meu painel IspConfig, só que ta dando um erro 404 no banco de dados do WordPress. Quando eu tento acessar o banco de dados do WordPress aparece esse erro:

    404 Not Found

    nginx/1.10.3

  • Como assim 404 no banco de dados? Você fala no phpMyAdmin?

  • Wanderson

    Sim, é no phpmyadmin, ai quando eu tento acessar meu dando de dados phpmyadmin da esse erro:

    404 Not Found

    nginx/1.10.3

  • Tente acessar por http://IP-DO-SERVIDOR:8081/phpmyadmin (Note que não é https). E para criar uma URL customizada de acesso veja o tutorial de Lets Encrypt que está na capa do site.

  • Wanderson

    obrigado, Deu certo, agora consigo acessar meu banco de dados banco de dados phpmyadmin pela porta 8081

  • Wanderson

    se tem como me dar uma ajuda de novo porque eu to tendo outro problema no Email. Eu criei um Email só que quando vai acessar a pagina para fazer login no Email aparece o mesmo problema do phpmyadmin:

    404 Not Found

    nginx/1.10.3

    eu ja tentei entrar com a porta 8080 ou a 8081 e não estou conseguindo

  • Segue aquele tutorial de Lets Encrypt que tem tudo nele incluindo o /webmail

  • Wanderson

    Como eu posso instalar um cestificado SSL pro painel IspConfig?

  • Wanderson, desculpe ae cara.. mas todas suas últimas perguntas podem ser respondidas naquele tutorial de Lets Encrypt que te falei. Acho que você nem abriu ele ainda, está na capa do site.

  • Jonatan

    Olá, tudo bem ? Tenho 2 dúvidas:

    O tutorial de firewall que está no debian, principalmente a parte de Ddos, posso seguir normalmente?

    Outra dúvida, estou utilizando o sparpost, mas a maioria dos e-mails estão sendo enviados para a pasta SPAM, principalmente o Hotmail. Qual outro SMPT externo você recomenda? Ou todos também irão sofrer com SPAM?

  • Para o firewall siga o mesmo para Debian 8 mas veja as observações e perguntas feitas nos comentários, tem os fix nelas.

    Os emails ainda estão chegando como SPAM ou porque o seu dominio é novo ou porque ele já esteve envolvido com SPAM. A Microsoft é muito restritiva. Mas se quiser opções tente a Mandril (pago), sendgrid ou SES da Amazon. Mas se quiser continue na SparkPost mesmo porque eles estão banindo contas abusivas lá e a entrega deve melhorar ainda mais.

  • Jonatan

    Entendi. Muito obrigado pela resposta.

    Eu possuo um vps na VULTR com as configurações do debian 8 do seu tutorial, se eu subir um site em prestashop com esse tutorial do stretch + mariadb + php 7.1 sentirei muita diferença de performance?

    Utilizo também o cloudflare, caso eu opte pela localweb compensa manter o clouflare?

  • O Prestashop é o mais lento dos gerenciadores de loja virtual, mas sim, o PHP 7 executa pelo menos com o dobro de performance e usando metade dos recursos comparado com o 5.6.

    Sempre que possivel use a CloudFlare pois além de CDN eles ainda fornecem gratuitamente firewall além de esconderem o IP do servidor, o que é ótimo para lojas virtuais. Com CloudFlare ligada qualquer site tem economia de uns 60% na utilização de recursos de servidor.

  • Jonatan

    Desculpa encher o saco denovo rsrs.

    Tentei fazer a instalação do servidor, mas de começo ele já não acessou o email através do IP. Pulei para a parte do Let’s encrypt, mas deu esse erro ” Type: unauthorized Detail: Invalid response from: ”

    Esse erro pode ser causado pelo arquivo vps.vhost? Nesse arquivo encontrei esses trechos de código:

    /var/lib/php5-fpm/ispconfig.sock;

    fastcgi_pass unix:/var/run/php5-fpm.sock;

    fastcgi_pass unix:/var/run/php5-fpm.sock;

    Tentei modificar esse arquivo pro php-7.1 mas também não deu certo.

  • O problema parece estar relacionado com o caminho para o sock mesmo..

    Vou olhar esta semana ainda. Mas enquanto isso navegue até o diretório /etc/nginx/sites-available e veja lá para aonde aponta o sock no arquivo vhost que foi escrito pelo script do instalador. Quando eu criei essas diretivas fiz uma compilação daquelas no diretório.

  • Jonatan

    No caso teria de alterar também no ISPconfig em Sistema> Configuração do servidor> Aba sites >Configuração do php > Alterar para 7.1 que por padrão é 7.0 ?

  • Boa pergunta. Mas eu não alteraria o painel para abrir com o 7, ainda existem muitas incompatibilidades a resolver.