terça-feira, 22 de abril de 2014

HHVM + Nginx no Ubuntu 13.10

A maioria dos tutoriais que li sobre o assunto primeiramente traziam como utilizar Hack, o que seria essa linguagem, quais os benefícios que ela traz, etc.

Pretendo aqui ir direto ao ponto e explicar como configurar a HHVM com o Nginx, pois este foi um ponto em que sofri um pouco, principalmente por ser um iniciante em sistemas Linux.

Instalando a HHVM


A versão do Ubuntu utilizada para este tutorial foi a 13.10, se você for ao site da Hack irá encontrar versões da HHVM para diversas outras distribuições, incluindo a Ubuntu 12.04, 13.04 e 14.04. Além disso é possível baixar o código fonte da HHVM para ser compilado manualmente.

Aqui foi escolhido utilizar a versão 3.0.1 Pré-Compilada, pelo fato de ser a recomendada e por estar disponível para o Ubuntu 13.10. Existe também versões Pré-Compiladas para o Ubuntu 12.04 e Debian 7. Basicamente os passos para instalação são os mesmos mudando somente o local do repositório.

Seguindo em frente, primeiramente é necessário fazer o download da HHVM.
$ wget -O - http://dl.hhvm.com/conf/hhvm.gpg.key | sudo apt-key add - echo deb http://dl.hhvm.com/ubuntu saucy main | sudo tee /etc/apt/sources.list.d/hhvm.list
$ sudo apt-get update
$ sudo apt-get install hhvm

Configurando a HHVM


É necessário realizar configurações na para utilizar a HHVM.
Primeiramente é necessário configurar o arquivo server.ini que se encontra em /etc/hhvm/server.ini. O mesmo deve se parecer com isso:

; php options

pid = /var/run/hhvm/pid

; hhvm specific

hhvm.server.port = 9000
hhvm.server.type = fastcgi
hhvm.server.source_root = /caminho/para/seu/site
hhvm.server.default_document = index.php
hhvm.log.level = Error
hhvm.log.use_log_file = true
hhvm.log.file = /var/log/hhvm/error.log
hhvm.repo.central.path = /var/run/hhvm/hhvm.hhbc 
Se for de sua preferência você pode alterar o local de armazenamento dos arquivos de log. Para realizar essa alteração o caminho para o novo local de armazenamento deve existir, caso contrário seus logs não serão armazenados.

Para conhecimento nas versões posteriores à versão 2.5 da HHVM  o arquivo a ser configurado é chamado de server.ini porém para versões anteriores à 2.4 o arquivo a ser configurado é chamado de server.hdf. Caso seja de interesse utilizar uma versão anterior à 2.4 pode ser visualizado exemplo de configuração no artigo "Building a Better PHP — Part 1: HHVM and Hack ".

Agora é necessário reiniciar a HHVM, que ao menos no Ubuntu deve seguir os seguintes passos para reiniciar.
$ sudo killall hhvm
$ sudo service hhvm start
Além dessa configuração é necessário incluir o arquivo .hhconfig na raiz do seu projeto para que a HHVM identifique o local para realizar a verificação de seu código, buscando erros.

Instalando Nginx


Nginx é um servidor web rápido, leve e com diversas possibilidades de configuração para melhor performance. Fornecendo um servidor proxy HTTP e um servidor proxy de email. Iremos utilizar o Nginx para utilizar a HHVM com FastCGI.

Primeiramente vamos instalar o Nginx:
$ sudo apt-get install nginx
$ sudo mkdir /caminho/para/seu/site$ sudo chown seu_usuario:daemon /caminho/para/seu/site

Configurando Nginx


Na instalação já é incluído arquivo com configuração para utilizar a HHVM, este se encontra em /etc/nginx/hhvm.conf. Por motivos de organização vamos movê-lo para /etc/nginx/sites-available/ :
$ cd /etc/nginx/
$ sudo mv hhvm.conf sites-available/
Agora deve-se alterar o arquivo hhvm.conf para que ele fique com a seguinte estrutura:
 server {
  server_name hhvm.dev;

  root /caminho/para/www;
  index index.php;

  location ~ \.(hh|php)$ {
    fastcgi_pass 127.0.0.1:9000;
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME /caminho/para/seu/site$fastcgi_script_name;
    include fastcgi_params;
  }
}
Feito as alterações agora podemos criar um link para /etc/nginx/site-enabled/ que referência o arquivo hhvm.conf.
$ sudo ln -s /etc/nginx/sites-available/hhvm.conf /etc/nginx/sites-enabled/hhvm
Opcionalmente você pode desativar as configurações padrão do Nginx apagando o link para o arquivo de configuração default que se encontra dentro de /etc/nginx/sites-enabled/.
$ sudo rm /etc/nginx/sites-enabled/default
Agora é necessário reiniciar o Nginx.
$ sudo service nginx restart
Após realizar essa configuração você pode ir até Hack Plugin para Vim e um Hello World.

Fontes: Nginx, Ngix Oficial, Building a Better PHP — Part 1: HHVM and Hack

2 comentários:

  1. Olá pessoal.
    Estou concluindo meu TCC no curso de Sistemas de Informação pela Universidade do Estado da Bahia.

    Meu trabalho tem como apresentar resultados de comparações feitas em aplicaões desenvolvidas com PHP e HACK.

    Vou deixar um link de um formulário que traz algumas perguntas sobre PHP e HACK onde usarei as respostas como material para meu trabalho.

    Grato.

    https://docs.google.com/forms/d/1iq5b8YXLXdBO89iOFKU7GtZfXH72gLi17UVqIXW6gkM/viewform?usp=send_form

    ResponderExcluir
  2. Olá pessoal.
    Estou concluindo meu TCC no curso de Sistemas de Informação pela Universidade do Estado da Bahia.

    Meu trabalho tem como apresentar resultados de comparações feitas em aplicaões desenvolvidas com PHP e HACK.

    Vou deixar um link de um formulário que traz algumas perguntas sobre PHP e HACK onde usarei as respostas como material para meu trabalho.

    Grato.

    https://docs.google.com/forms/d/1iq5b8YXLXdBO89iOFKU7GtZfXH72gLi17UVqIXW6gkM/viewform?usp=send_form

    ResponderExcluir