LINUX, TI E MUITO MAIS!
Cadastre-se agora e receba gratuitamente o ebook do Curso Linux Ubuntu, dicas imperdíveis para ter sucesso com Linux
Insira seu email no campo ao lado para receber AGORA o Ebook!

4 Passos Simples para Criar um Servidor Web Poderoso com LINUX Utilizando NGINX e HHVM

Mesmo você sendo ou não um administrador de servidores LINUX experiente, entregar velocidade de acesso ao seu site ou a sites de seus clientes é primordial, certo?

servidor-web-poderoso-nginx-hhvm

Ninguém gosta de ficar esperando para um site carregar, e se você pretende entregar uma solução completa para seu cliente, que seja muito, mas muito robusta, considere a implantação de um servidor LINUX rodando o servidor web NGINX.

NGINX é muito superior a outros servidores WEB quando o assunto é entregar páginas e arquivos estáticos, estou falando de arquivos .html, .css, .jpg etc.

APRENDA A DOMINAR O LINUX

Aprenda a dominar o LINUX de uma vez por todos, pegue sua cópia

  • Ferramentas para instalar softwares adicionais
  • Shell do LINUX passo a passo, e muito mais...
  • Mas e quanto ao php?
  • Será que podemos deixar um servidor LINUX rodando NGINX tão rápido quanto o nosso usuário gostaria?

Bom, a resposta para essa pergunta é: HHVM

oque-e-o-hhvm

Com o HHVM (Hiphop Virtual Machine) que é um compilador just-in-time desenvolvido pelo Facebook para executar aplicações que são escritas em PHP e linguagem Hack.

HHVM é mais rápido do que o motor tradicional PHP da Zend e é usado pelo Facebook para servir bilhões de solicitações da web por dia.

HHVM pode elevar 9x a taxa de transferência de solicitações da web, e reduzir em 5x no consumo de memória em comparação com o motor Zend PHP 5.2 + APC

Isso é simplesmente sensacional, você poderá ter a mesma tecnologia utilizada pelo Facebook para entregar suas páginas, é uma solução testada todos os dias.

Se você quer saber  como configurar um servidor WEB com LINUX, que pode ser 9x mais rápido que a solução atual que você utiliza hoje, fique atento nos próximos parágrafos deste artigo.

Com toda certeza um servidor WEB veloz é sonho de qualquer dono de site, institucional ou um ecommerce não importa muito, o usuário final nunca tem 30 segundos para esperar o carregamento de um site.

Nos dias de hoje 30 segundos para carregar um site é muito tempo, não é mesmo? Você também não gosta de acessar um site lento? … bom eu pelo menos não gosto.

Configurar um servidor de alta performance começou a ficar mais fácil quando o NGINX surgiu no mercado, com uma proposta totalmente diferenciada do servidor web apache.

Como instalar o Servidor WEB Nginx no Linux

Antes de fazer a instalação do servidor web NGINX no DEBIAN 8, vamos destacar algumas das vantagens desse servidor.

Segundo a netcraft o servidor WEB de alta performance o NGINX tem hoje mais de 16% do mercado de servidores WEB, perdendo é claro para o mais utilizado no mundo que é o apache.

vangatens-ngnix

  • O NGINX (engine x) é um servidor HTTP e um Proxy reverso
  • Serve páginas estáticas e suporta também FASTCGI (php)
  • Proxy reverso com cachê
  • Load balance
  • Streamming de FLV e MP4
Leia também ...   Duelo de titãs: qual é o melhor sistema operacional? Linux ou Windows

Em um experimento usando o Apache 2.x e NGINX, para servir uma página HTML, temos o seguinte resultado:

  • Apache: 4 processos WORKER, 30% CPU, 17MB de memória, conseguiu abrir 6.500 requests por segundo.
  • Nginx: apenas 1 processo,15% CPU, 1MB de memória, conseguiu abrir 11.500 requests por segundo.

Agora vamos tratar de instalar o nosso servidor web, que irá possibilitar alta performance em nossas aplicações, para esse laboratório irei instalar o seguinte:

  • Servidor LINUX Debian 8
  • Servidor WEB NGINX
  • HHVM (Hiphop Virtual Machine) para interpretar a minha aplicação WEB.
  • Banco de dados MariaDB, em substituição ao Mysql.
  • CMS WordPress, que claro é escrito em PHP

A instalação do DEBIAN 8 será totalmente abstraída desse artigo por motivos óbvios, é um assunto bem mais amplo, mas eu sugiro você participar da primeira aula do PROFISSIONAIS LINUX, onde eu trato bem esse assunto.

Toda a instalação aqui pode sim ser replicada em UBUNTU SERVER, os comandos são os mesmos, e você tiver alguma dúvida com relação a algum comandos, eu acho que você pode pegar uma cópia desse ebook, o ebook do Curso Linux Ubuntu.

Agora vamos lá, vamos começar a instalar o nosso servidor WEB.

# apt-get update
# apt-get install nginx unzip

Você já pode também iniciar o servidor WEB NGINX para ter certeza que a instalação deu certo.

# systemctl start nginx

Agora acesso o ip de seu servidor WEB com o seu navegador preferido.

nginx-instalar-no-linux

 

Como instalar o banco de dados MariaDB no Linux

Eu vou instalar o MariaDB no lugar do MySQL, para tirar proveito do seu melhor desempenho e funções adicionais. MariaDB é um fork do MySQL Database Server mantida pelo original MySQL Developers.

Claro que hoje existem muitas razões para utilizar o MariaDB, mas eu não irei comentar muito sobre isso nesse artigo, pois o foco aqui realmente é o servidor WEB.

Vamos  lá:

#apt-get install mariadb-client mariadb-server

Pode também iniciar o servidor de banco de dados MariaDB.

#systemctl iniciar mysql

Agora já podemos criar um login para o MariaDB com o comando “mysql”, o comando irá solicitará a senha que você definiu durante a instalação do MariaDB.

# mysql -u root -p

Isso mesmo, é tudo igual ao mysql!

O próximo passo é criar um novo banco de dados, que será utilizado pelo nosso CMS WordPress, você pode escolher qualquer nome, mas para facilitar eu irei chamar o banco de dados de wordpress.

Iremos precisar de um usuário para esse banco de dados do wordpress, eu irei chamar ele dele userwp.

Vamos lá então:

# mysql -u root -p ( entre com a senha do usuário root para acessar o console do MariaDB)

Para criar o banco de dados no MariaDB:

# create database wordpress;

Agora vamos criar um usuário para esse banco e criar também os privilégios.

create userwp@localhost identified by '#userwp#'; # esse #userwp# é a senha do usuário.
grant all privileges on wordpress.* to userwp@localhost identified by '#userwp#';
flush privileges;

Pronto, já podemos sair do console do mysql com o “q”.

Leia também ...   Como agendar um script PHP usando Crontab no Linux

Como instalar o HHVM no LINUX

Como já comentamos aqui nesse artigo, o HHVM (Hiphop Virtual Machine) que é um compilador just-in-time desenvolvido pelo Facebook para executar aplicações que são escritas em PHP e linguagem Hack.

Para instalar vamos precisar adicionar ao nosso apt-get um novo repositório, se você ficar com dúvidas nesse ponto, recomendo ler esse ebook.

# wget -O - http://dl.hhvm.com/conf/hhvm.gpg.key | apt-key add -
 # echo deb http://dl.hhvm.com/debian jessie main | tee /etc/apt/sources.list.d/hhvm.list
 # apt-get update
apt-get install hhvm

HHVM vem com um script install_fastcgi.sh,  para facilitar a configuração dele em conjunto com o Nginx. Execute o comando abaixo:

# /usr/share/hhvm/install_fastcgi.sh

E para adicionar o serviço do hhvm para iniciar com o servidor, execute mais esse comando:

# defaults hhvm update-rc.d

HHVM devem ser executado em /usr/bin/php mesmo se você já tenha um php-cli instalado, então teremos que usar o comando do Debian o update-alternatives, para reconfigurar o PHP padrão do nosso servidor LINUX:

# /usr/bin/update-alternatives --install /usr/bin/php php /usr/bin/hhvm 60

Com isso, já podemos iniciar o serviço do hhvm

# systemctl start hhvm

Próximo passo é testar o HHVM com o Nginx, para isso vamos criar um arquivo de teste.

Crie novo arquivo com o nome  info.php no diretório  /var/www/html, assim:

# echo "<? echo 'HipHop';  ?>" > /var/www/html/info.php

Agora acesse o seu navegador: http://ip_do_seu_servidor/info.php. Quando você ver a palavra  HipHop, ok! o HHVM está funcionando corretamente.

No terminal você também pode testar assim:

# php /var/www/html/info.php
# php -v

Como Instalar o WordPress

Então, o Wordpres tem a famosa instalação em 5 minutos, a nossa instalação talvez seja feita aqui em 30 segundos mas é bom seguir essa sequência.

Vamos lá:

# cd /var/www/html/
# wget wordpress.org/latest.zip
# unzip latest.zip

O comando unzip extraiu o WordPress para o sub-diretório chamado “wordpress” , vamos mover todos os arquivos do WordPress para o diretório  /var/www/html/.

# cd /var/www/html/
# mv wordpress/* .
# rm -rf wordpress/

Em seguida, altere o DONO dos arquivos do WordPress para a www-data. Normalmente, todos os arquivos no  diretório /var/www/html  são de propriedade do  www-data, tanto o usuário quanto o grupo.

#find . -type d -exec chown www-data:www-data {} \;
#find . -type f -exec chown www-data:www-data {} \;

Renomeie o arquivo wp-config-sample.php para wp-config.php. 

Agora vamos editar o arquivo com o editor vim para definir o nome do banco de dados, usuário e senha que foi criada durante a configuração do banco de dados wordpress.

# cd /var/www/html/
# mv wp-config-sample.php wp-config.php
# vim wp-config.php
# rm -f index.nginx.html 

Abaixo as informações para acesso ao banco de dados, que devem ser modificadas no arquivo.

DB_NAME = wordpress
DB_USER = userwp
DB_PASSWORD = #userwp#

Agora edite o arquivo virtualhost do nginx em /etc/nginx/sites-available/default e adicione o index.php   como arquivo de index padrão

Leia também ...   Como anda o Curso de Linux Ubuntu Online ?

Essa configuração instrui Nginx para usar o arquivo index.php como o arquivo padrão quando o site é acessado.

# vim /etc/nginx/sites-available/default

Procure pela linha: index conforme abaixo:

index index.php index.html ... ;

Agora pode reiniciar o servidor web nginx.

# systemctl restart nginx

Agora pronto, tente acessar o ip do seu servidor LINUX, http://ip_do_seu_servidor  novamente, você será redirecionado para o instalador do WordPress. Siga as instruções do instalador para concluir.

instalacao-wordpress-nginx-HHVM-01

instalacao-wordpress-nginx-HHVM-02

instalacao-wordpress-nginx-HHVM-03

instalacao-wordpress-nginx-HHVM-04

Ok,  seu wordpress está instalado com HHVM e Nginx em um servidor LINUX Debian 8.

Vamos relembrar todas as dicas desse artigo:

  • Necessidade de um servidor WEB de alta performance, avalie sempre o NGINX;
  • NGINX é uma ótima solução de servidor web que pode ser inclusive utilizado em conjunto com o apache;
  • NGINX trabalha melhor com arquivos estáticos, para arquivos dinâmicos podemos usar fastCGI, como foi o caso do HHVM aqui nesse artigo;
  • O banco de dados MariaDB tende a substituir o Mysql, por ser um fork não existe grande problemas na migração e até mesmo a adoção desse banco de dados, avalie sempre a sua aplicação;
  • O HHVM é a grande atração aqui deste artigo, desenvolvido pelo Facebook para executar aplicações que são escritas em PHP e linguagem Hack, hoje é uma ótima solução para aplicações PHP de grande porte;
  • A instalação do WordPress é muito simples, porém o CMS como um todo é muito poderoso, apesar de consumir muito recurso do servidor, ele utilizado com essa solução que apresentamos aqui no artigo pode ser o responsável por grandes sites.

Você conhece alguém que adoraria receber essas dicas?

Então faça um favor para ela (e para mim) e compartilhe esse artigo.

Você pode compartilhá-lo no Facebook, Twitter, Google+ ou até mesmo copiar a URL desse artigo e enviar para quem precisa dele.

E, para finalizar, eu adoraria saber a sua opinião sobre esse artigo.

Deixe um comentário logo abaixo sobre o que você mais gostou nesse artigo, ou sobre alguma dica extra que você deseja compartilhar conosco ou até mesmo alguma crítica sobre esse texto.

Forte abraço.

Pedro Delfino

Sobre pedrodelfino

Trabalha com tecnologia da informação, usando Linux a mais de 13 anos. Autor do Ebook Curso Linux Ubuntu.

  • Dione Ribas

    Olá Pedro delfino !!! venho fazendo testes faz tempo com essa configuração em meu servidor web , tudo configurado URL amigável , upload liberado pra arquivos maiores no wordpress , mas tenho um problema em fazer upload de filmes pra meu servidor da ERRO DE HTTP , mas algum videos vai sem problema tem alguma dica ai?

    • Pedro Delfino

      Olá Diones … vai depender muito do tamanho desses arquivos, qual seria o tamanho? essa configuração pode ser feita no php.ini

      memory_limit = 32M
      upload_max_filesize = 24M
      post_max_size = 32M

  • Dione Ribas

    Olá Pedro delfino !!! venho fazendo testes faz tempo com essa configuração em meu servidor web , tudo configurado URL amigável , upload liberado pra arquivos maiores no wordpress , mas tenho um problema em fazer upload de filmes pra meu servidor da ERRO DE HTTP , mas algum videos vai sem problema tem alguma dica ai?

  • Romualdo Costa

    Ótimo artigo. Fiz isso ano passado com um blog muito acessado, mas infelizmente algum plugin do WordPress apresentou incompatibilidade com a HHVM. Hoje uso Nginx e PHP-FPM.

  • Herivelton Francischetti Pires

    Olá…
    É possível também utilizar páginas criadas em Java?
    Geralmente eu utilizo o TomCat, é possível com o NGINX?

    Obrigado!

  • Rafael Calaça

    Muito bom seu tutorial, mas tem uma coisinha que precisa corrigir Pedro, quando voce pede para adicionar a sintaxe index.php ao arquivo “default” que é o site publicado, faltou dizer que precisar mudar o diretorio de root do site para /var/www/html. Mas muito bom mesmo.

  • Gostei bastante do artigo ! Me interesso muito por servidores linux !!!

  • Pedro!!! Pq eu não achei seu artigo antes!!?? Eu achei alguns artigos na gringa e me virei com eles mas o seu aqui tá redondinho!

    Me diz uma coisa: Quais são as configurações para o para esta setup nginx + hhvm + fastCGI + MariaDB + WP não ficar cacheando os CSS, JS e imagens no ambiente de DEV LOCAL..
    É que trabalho com este ambiente numa VM Ubuntu Server 14Lts e vou testando via Browser no sistema nativo Windows.

    coloquei o sendfile off no nginx.conf, mas ainda tenho que ficar esvaziando o cache do navegador para ver os resultados das modificações no Browser. Tem ideia de como deixar sem esse cache pra desenvolvimento local?

  • Continuo sem saber pq meu email está vinculado ao seu site

    • profissionaislinux

      Por favor, entre em contato com atendimento@e-tinet.com para eu te informar em qual página vc se inscreveu, ou simplesmente use o link de descadastrar bem abaixo do email.

  • Samuel

    Qual a vantagem de usar o HHVM se o PHP7 trouxe melhorias de desempenho?

  • Sergio Aguiar

    Tentei instalar no Ubuntu 16 mas encontrei os seguintes erros ao instalar o hvm:

    Lendo listas de pacotes… Pronto
    Construindo árvore de dependências
    Lendo informação de estado… Pronto
    Alguns pacotes não puderam ser instalados. Isto pode significar que
    você solicitou uma situação impossível ou, se você está usando a
    distribuição instável, que alguns pacotes requeridos não foram
    criados ainda ou foram retirados da “Incoming”.
    A informação a seguir pode ajudar a resolver a situação:

    Os pacotes a seguir têm dependências desencontradas:
    hhvm : Depende: libboost-filesystem1.55.0 mas não é instalável
    Depende: libboost-program-options1.55.0 mas não é instalável
    Depende: libboost-system1.55.0 mas não é instalável
    Depende: libboost-regex1.55.0 mas não é instalável
    Depende: libgnutls-deb0-28 mas não é instalável
    Depende: libicu52 mas não é instalável
    Depende: libjpeg62-turbo mas não é instalável
    Depende: libmysqlclient18 mas não é instalável
    Depende: libvpx1 mas não é instalável
    Depende: libboost-thread1.55.0 mas não é instalável
    Depende: libboost-context1.55.0 mas não é instalável
    Depende: libgoogle-glog0 mas não é instalável
    Depende: libzip2 mas não é instalável
    E: Impossível corrigir problemas, você manteve (hold) pacotes quebrados.
    s# apt-get install hhvm
    Lendo listas de pacotes… Pronto
    Construindo árvore de dependências
    Lendo informação de estado… Pronto
    Alguns pacotes não puderam ser instalados. Isto pode significar que
    você solicitou uma situação impossível ou, se você está usando a
    distribuição instável, que alguns pacotes requeridos não foram
    criados ainda ou foram retirados da “Incoming”.
    A informação a seguir pode ajudar a resolver a situação:

    Os pacotes a seguir têm dependências desencontradas:
    hhvm : Depende: libboost-filesystem1.55.0 mas não é instalável
    Depende: libboost-program-options1.55.0 mas não é instalável
    Depende: libboost-system1.55.0 mas não é instalável
    Depende: libboost-regex1.55.0 mas não é instalável
    Depende: libgnutls-deb0-28 mas não é instalável
    Depende: libicu52 mas não é instalável
    Depende: libjpeg62-turbo mas não é instalável
    Depende: libmysqlclient18 mas não é instalável
    Depende: libvpx1 mas não é instalável
    Depende: libboost-thread1.55.0 mas não é instalável
    Depende: libboost-context1.55.0 mas não é instalável
    Depende: libgoogle-glog0 mas não é instalável
    Depende: libzip2 mas não é instalável
    E: Impossível corrigir problemas, você manteve (hold) pacotes quebrados.

    Alguma dica?

    Obrigado

  • Fabiano Martins

    Fiz tudo como o Tuto manda, mas quando vou testar o arquivo info.php no navegador a mensagem não é exibida, ele exibe erro 502.
    Já no console ele apresenta a imagem corretamente, o que pode ser?

Aula Online: Aprenda a Dominar o Linux De Uma Vez Por Todas

x

Aprenda a Dominar o Linux De Uma Vez Por Todas

Você vai aprender passo a passo como dominar o LINUX de uma vez por todas e descobrir os 4 pilares para ser um Profissional EXPERT.