Mac OS X Nginx PHP 5.3 ve percona-server (mysql) kurulumu

Bu yazıda Mac OS X üzerine Nginx ve PHP5.3 (özellikle php5.3, daha yenisi değil) kurmayı anlatmaya çalışacağım.

İnternetteki dökümanlar genelde konu güncel iken yazıldığı için, siz bir yazılım dilinin daha önceki versiyonlarına ait kurulumlar yapmak istediğinizde, varsayılan paket yöneticisi tarafından hep en son sürümü kurulmakta, ve bu da bizim o anki ihtiyaçlarımızı karşılamamaktadır.

Ben de birkaç tane projedeki php 5.3 gereksinimim sebebiyle böyle bir şey yapmak durumunda kaldım. (aslında vagrant daha güzel bir çözüm tabi ki dileyen araştırabilir.)

Öncelikle Mac’inizde homebrew (http://brew.sh/) yüklü değilse, bunu yüklememiz gerekiyor. Bunun için konsolunuzda

ruby -e "$(curl -fsSL https://raw.github.com/Homebrew/homebrew/go/install)"

komutunu çalıştırmanız gerekiyor.

Nginx kurulumu

brew install nginx

Bu kadar basit 🙂
Nginxi başlatmak için

nginx

komutunu yazmanız yeterli. (Evet konsola sadece nginx yazacağız, ubuntu gibi değil) Ancak sudo olarak çalıştırmanız gerekebilir.
Php kurulumu

php yi Nginx ile iletişim kurabilmesi için 2 şekilde kurabiliriz. 1. yöntem cgi ile. 2. yöntem ise, php-fpm ile. php-fpm ile kurmak daha mantıklı, çünkü fcgi process manager ile yönetilmeyen bir cgi kullanımı aynı anda çok fazla processi handle etmenizi yani stress test vb toolları çalıştırdığınız kısımlarda size problem çıkartabilir. Ben de bu ve birkaç sebepten dolayı php-fpm ile kurmayı anlatacağım. Ancak cgi ile kurmak isteyen için de sadece 1 parametre değişiyor 🙂

brew install php53 --with-mysql --with-suhosin --with-intl --with-imap --with-fpm

sondaki —with-fpm kısmı yerine –with-cgi yazarsanız da cgi ile kurmuş olursunuz.

Mac OS X içerisinde PHP, Ruby, Python gibi dillerin CLI (konsol üzerinden çalıştırılabilir) versiyonları ile birlikte geldiği için şu anda halen konsolda php -v yazdığınızda php 5.4.24 veya benzeri başka bir versiyonu görürsünüz. Ancak web arayüzünden (Yani browserdan nginx ile) girdiğinizde ilgili php 5.3 sürümünü çalıştırmış olacağız.

Eğer siz konsoldan da php 5.3 çalıştırmak istiyorsanız,

export PATH=/usr/local/Cellar/php53/5.3.28/bin:$PATH

şeklinde komut çalıştırmanız gerekiyor. (sudo ile çalıştırmanız icap edebilir).
Ancak bu şekilde yaparsanız da bilgisayarınızı yeniden açtığınızda (ya da konsoldaki oturumu kapattığınızda) bu ayar kaybolacaktır. Bunu kaybetmemek için bu komutu /usr/local/Cellar/php53/5.3.28/bin i sudo ile /etc/paths e yazmalısın.

Mac OS X üzerinde php-fpm ubuntudaki gibi /etc/init.d/php-fpm start stop, vb.. şeklinde kullanılamıyor. Bu yüzden kullanımı biraz farklı.
Php-fpm yi hemen başlatmak için

launchctl load ~/Library/LaunchAgents/homebrew.mxcl.php53.plist

Bilgisayarınız her açıldığında otomatik başlasın istiyorsanız da

ln -sfv /usr/local/opt/php53/*.plist ~/Library/LaunchAgents

şeklinde işlem yapmanız gerekiyor.

Şimdi sıra php-fpm.conf dosyasını bulup, buradaki ayarlardaki loglara veya dosyalara izin vermek kısmında.
php-fpm.confu bulup ilgili pid ve log dosyasını ve access log dosyasını yazabilmesi için yetki vb verip o gerekli klasörleri oluşturursan gerisi tamamdır. (Yine ubuntunun aksine, /var/run/php-fpm.pid yerine phpnin kendi klasörüne yapmanız daha mantıklı olacak ben bu şekilde yaptım. Log için de aynı yeri belirttim.)

 

percona-server kurulumu

Nginx kadar basit aslında.

brew install percona-server

Percona server’i hemen başlatmak için

launchctl load ~/Library/LaunchAgents/homebrew.mxcl.percona-server.plist

Bilgisayar her başladığında başlatmak için ise,

ln -sfv /usr/local/opt/percona-server/*.plist ~/Library/LaunchAgents

komutlarını çalıştırmanız gerekiyor.

Bu yazı nginx ayarları, php ayarları ve mysql ayarlarının nasıl yapıldığı ile ilgili olmadığı için o detayları burada paylaşmıyorum. Ancak ihtiyacı olan tabi ki danışabilir.

Umarım yararlı olur.

Cpanel Nginx Admin Plugin Bandwidth problem

Cpanel’inizi nginx admin plugini ile birlikte kullanıyorsanız, bu noktada, bandwidth hesaplamalarında bir saçmalık oluyor(access_log’ları epey eksik yazıyor). Sebebi de, Cpanel’in logrotate işlemi sonrasında nginx üzerinden tıpkı apache gibi yapılan loglama işlemleri için belleğinde tuttukları file descriptor’ların (dosya tutucu pointer diye düşünebilrisiniz) rotate işlemi sonrasında kaybolmasından kaynaklanıyordu.

Çözümü için logrotate işleminin akabinde çalışacak bir hook eklemeniz gerekiyor. Bu hook nginx’i reload etmesi yeterli oluyor. (restart’a gerek yok)

İşyerinden bir arkadaşım durumu tespit etmişti, bana da yazmak düştü.

partition not found grub rescue hatası ve çözümü

İçerisinde Ubuntu ve Windows 7 işletim sistemleri dual boot olarak yüklü bilgisayarda, açılış sırasında aldığımız grub rescue hatasını aşağıdaki şekilde çözdük;

Boot ayarlarından USB’ye öncelik verdik ve içerisinde Ubuntu bulunan usb ile bilgisayarı başlattık. Install etmeden çalıştırdık. Ardından terminali açtık. Aşağıdaki komutları çalıştırdıktan sonra bilgisayarı restart ettik.

 sudo add-apt-repository ppa:yannubuntu/boot-repair && sudo apt-get update
 sudo apt-get install -y boot-repair && boot-repair

Bu şekilde sorunu halletmiş olduk.

nginx virtual host ayarları (nginx vhost) -ubuntu

Nginx’in kurulumuna buradaki yazımızdan ulaşabilirsiniz : ubuntu nginx kurulumu (Ubuntu 12.04)

Sanal sunucu yani virtual host ayarlarının nasıl yapılacağına bakalım şimdi.

Örnek olarak, web sitelerimi barındırdığım dizin /home/khantunckale/sites
Bunun içerisinde test diye bir klasörümüz olsun, içerisinde de index.html olsun.

cd /home/khantunckale/sites
mkdir test
gedit test/index.html /*düzenleyip içine bişeyler yazalım*/

Amacımız, buradaki index.html dosyasını browserımız üzerinden http://www.test/ olarak çağırmak.

Şimdi nginx ayarlarını yapalım.

Önce ayarları yapmak için nginx’in sites-available klasörüne gidiyoruz.

cd /etc/nginx/sites-available

Default config dosyasının bir kopyasını oluşturuyoruz.

cp default test 

Ardından bu dosyayı bir editör ile açıp düzenleyelim. (gedit, nano vs.) Ben kendi ayarlarımı şu şekilde yaptım.

server {
    server_name www.test;
    access_log /home/khantunckale/sites/test/access.log;
    error_log /home/khantunckale/sites/test/error.log;
    root /home/khantunckale/sites/test/public_html;

    location / {
        index  index.html index.htm index.php;
    }

    location ~ \.php$ {
        include /etc/nginx/fastcgi_params;
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME /host/web/emfw/public_html$fastcgi_script_name;
    }
}

server_name : sitemizi çağırdığımız adres.
root : sitenin index dosyasının olduğu dizin.
access_log ve error_log parametreleri de yukarıda göründüğü üzere loglarla ilgilidir.

Bu dosyayı kaydettiğiniz zaman, sitemiz sadece uygun durumda olur (available). Sitemizi aktifleştirmek için, sites-enabled klasörüne bir sembolink link yaratmamız gerekiyor. O yüzden şu komutu çalıştırmalıyız.

ln -s /etc/nginx/sites-available/test /etc/nginx/sites-enabled/test

Ardından da service nginx restart diyelim.

linux hardware bilgileri detayları (inxi)

inxi, donanımınız ile ilgili detayları gösteren bir shell scriptdir.

Bir shell script olduğu için, bu scripti kullanıcılara ait programların olduğu dizine (usr/local/bin) koyarak, kurulumunu yapmış oluruz. Kullanabilmek için ek olarak gawk paketini de kurmamız gerekmekte.

Aşağıdaki komutları uyguladığımızda kurulum tamamlanır;

apt-get install gawk
cd /usr/local/bin && wget -Nc smxi.org/inxi && chmod +x inxi

Kullanımı ise şu şekilde; eğer tüm sistem bileşenleri ile ilgili bilgiyi aklmak istiyorsak inxi -F , sadece CPU bilgisini almak istiyorsak inxi -f , network adaptörü ile ilgili bilgiyi almak istiyorsak inxi -n , kullandığımız makinenin bilgilerini almak istiyorsak inxi -M komutları ile görebiliyoruz.

Parametre listesinin tamamı burada mevcut; https://code.google.com/p/inxi/wiki/inxi