Ubuntu Makineye HHVM kurulumu


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.


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

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

; 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

bu ayari yaptiktan sonra

sudo service hhvm restart
sudo /usr/bin/update-alternatives --install /usr/bin/php php /usr/bin/hhvm 60

 

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.

    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;
     }

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.

Reklamlar

Bir Cevap Yazın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Log Out / Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Log Out / Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Log Out / Değiştir )

Google+ fotoğrafı

Google+ hesabınızı kullanarak yorum yapıyorsunuz. Log Out / Değiştir )

Connecting to %s