HHVM-Logo

Bugunlerde HHVM‘le epey hasir nesir oldugum icin, hizlica kurulumunu not alalim dedim.

PHP7 cikti ne HHVM‘i falan demeyin 🙂

Kurulumu Ubuntu 14.04 icin anlatiyorum, farkli surumler icin suradan dogru paketi edinebilirsiniz.

[code lang=”bash”]

sudo apt-get update
sudo apt-get install software-properties-common
sudo apt-key adv –recv-keys –keyserver hkp://keyserver.ubuntu.com:80 0x5a16e7281be7a449

# LTS kurmak icin
echo deb http://dl.hhvm.com/ubuntu trusty-lts-3.12 main | sudo tee /etc/apt/sources.list.d/hhvm.list
sudo apt-get update
sudo apt-get install hhvm
#reboot sonrasi otomatik baslamasi icin
sudo update-rc.d hhvm defaults

[/code]

Hah buraya kadar zaten standart islem yaptik, simdi gelelim HHVM’e ayar vermeye.
HHVM’i socket uzerinden kullanmak istiyorum bunun icin “hhvm.server.port” u kapatmak gerekiyor ve “hhvm.server.file_socket” belirlemek gerekiyor, bunun ikisi ayni anda aktif olmamali.

Not: date.timezone’u ayarliyoruz ancak hhvm restart’tan bir kac saniye sonra bozuluyor. 3.12+ sonrasi surumlerde duzeldigini soyleyenler var galiba, HHVM derlerken kullanilan kutuphanelere bagli olarak degisebiliyor.

> vim /etc/hhvm/server.ini

[code lang=”bash”]
; php options

pid = /var/run/hhvm/pid

; hhvm specific

;hhvm.server.port = 9000
hhvm.server.file_socket = /var/run/hhvm/hhvm.sock
hhvm.server.type = fastcgi
hhvm.server.default_document = index.php
hhvm.log.use_log_file = true
hhvm.log.file = /var/log/hhvm/error.log
hhvm.repo.central.path = /var/run/hhvm/hhvm.hhbc
hhvm.server.fix_path_info = true
date.timezone = Europe/Istanbul
[/code]

bu ayari yaptiktan sonra

[code lang=”bash”]
sudo service hhvm restart
sudo /usr/bin/update-alternatives –install /usr/bin/php php /usr/bin/hhvm 60
[/code]

 

NGINX ve FPM Fallback

(nginx + php5-fpm kullanildigini varsayiyorum)

Tum ayarlar tamam olduktan sonra HHVM’i artik php-fpm yerine kullanmak istiyorsak nginx ayarimizda “fastcgi_pass” degerini hhvm socketine yonlendirmemiz yeterli lakin HHVM bazen crash olabiliyor, bu gibi durumlarda uygulama sunucumuzun isini HHVM’siz yapabilmesi icin php-fpm’e fallback ayarlamak istiyoruz.

[code]
location ~ \.php$ {
fastcgi_intercept_errors on;
error_page 502 = @fallback;

try_files $uri =404;
fastcgi_pass unix:/var/run/hhvm/hhvm.sock;
fastcgi_index index.php;
include fastcgi_params;
}

location @fallback {
try_files $uri =404;

fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
}
[/code]

seklinde ayarlayip nginx’i reload yaptiginizda HHVM ile calismaya baslarsiniz.

Fallback’i test etmek icin phpinfo()’u gosteren bir dosyayi ekleyip hhvm servisini durdur/baslat yaparak farki gorebilirsiniz.

Bir baska not: Muhtemelen simdiye fixlemislerdir ancak HHVM ile mail gonderimlerinde sorun yasayabilirsiniz.

HHVM sitenizi 7x hizlandirmaz! (muhtemelen)

Bazen karsilastirma yazilarinda falan goruyorum, “HHVM sitemi 7x hizlandiracak” vs.. gibi yanlis anlasilmalar olabiliyor, PHP performansini belki bir kac kat hizlandirabilir ama yine database vs… gibi etmenleri goz onunde bulundurunca o kadar ucmayin 🙂

Benim gordugum (dinamik request karsilayan uygulama sunucularinda) sunucu yukunu yari yariya azaltabiliyor.

Sohbete katılın

1 yorum

Yorum Gönderin

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir