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 [email protected] 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. ***Na última versão do script notei que foi gerado uma senha aleatória para o admin do ISPConfig, verifique na tela do instalador, logo abaixo das linhas que mostram a instalação do painel por algo assim “Admin password [5s4a0a7b]”. Esta é a senha.

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 [email protected]

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 [email protected] e solicite uma análise gratuita!