Lighttpd, Mysql, Php, Eaccelerator ile OpenAds Ad Server kurulumu.
Warning: mysqli_query(): (HY000/3): Error writing file '/tmp/MYHs0XUq' (Errcode: 28 - No space left on device) in /usr/share/nginx/html/syslogs/wp-includes/class-wpdb.php on line 2349
OpenAds, Ad Server diye tabir edilen bir reklam serverı yazılımıdır. Bu yazılım ile, sitenizde yayınladığınız reklam bannerlarını yönetebilir, bannerlerin ne sıkılıkla, hangi tarihler arası gösterileceği vs. gibi konularda gelişmiş bir yönetim sağlayabilirsiniz.
OpenAds'in yayınlanmış olan son sürümünden önceki Phpads olarak anılan 2.0 sürümünü kurarak, yüksek hit alan bir kaç site üzerindeki performansını inceleme şansım olmuştu. php ile kodlanmış olan bu yazılım, Apache ve mysql üzerinde çalışıyor ve performansı gerçekten oldukça iyi.
Bu entryde de FreeBSD üzerinde yapmış olduğum OpenAds son sürümü olan 2.4 kurulumunun notlarını paylaşacağım.
Daha önce Apache üzerine kurduğum ve tecrübe ettiğim için, Apache'ye alternatif olduğu söylenen lighttpd isimli bir başka web server üzerine OpenAds kurdum. Ancak henüz performans değerlendirmesi yapamadım. Performans değerlendirmesinden sonra bu entry'i editleyeceğim.
BİLEŞENLER
- lighttpd-1.4.18_1
- Mysql-server-5.0.45_1
- Php5-5.2.5
- eaccelerator-0.9.5.2
KURULUM VE YAPILANDIRMA
Önce lighty ile başlıyoruz.
lighttpd
Lighttpd'i, bir çok yönden Apache'den daha performanslı olduğu iddia edilen bir web server yazılımı. FastCGI ile php çalıştırarak, epey performans elde edildiği söyleniyor. Wikipedia ve Youtube da Lighttpd kullanmaktaymış.
Kurulumu porttan yaptım ve kurulum seçeneklerinde Mysql'i enable ettim.
# cd /usr/ports/www/lighttpd # make install clean
Kurulumdan sonra, lighttpd'nin açılışta otomatik olarak çalışması için, rc.conf'a ilgili enable satırını giriyoruz.
# echo lighttpd_enable="YES" >> /etc/rc.conf
Daha sonra, lighttpd.conf üzerinde gerekli düzenlemeleri yapıyoruz.
NOT: Bu adımdaki işlemler, sisteminizde php'nin kurulu olduğunu varsaymaktadır. Eğer değilse, bir sonraki adımda anlatıldığı şekilde php kurulumu yapın ve sonra bu noktadan devam edin |
/usr/local/etc/ altında bulunan öntanımlı olarak, lighttpd.conf.sample ismi ile gelen conf dosyasının adını, lighttpd.conf olarak değiştiriyoruz.
# cd /usr/local/etc # cp lighttpd.conf.sample lighttpd.conf
lighttpd.conf dosyasını favori editorumuz ile açıp; server.modules kısmında bulunan “mod_fastcgi” isimli modülün başındaki # işaretini kaldırarak modülü devreye alıyoruz ediyoruz. Sonra aynı dosya içine aşağıdaki satırları giriyoruz.
fastcgi.server = ( ".php" => (( "bin-path" => "/usr/local/bin/php-cgi", "socket" => "/tmp/php.socket", "max-procs" => 1, "bin-environment" => ( "PHP_FCGI_CHILDREN" => "16", "PHP_FCGI_MAX_REQUESTS" => "10000" ) )))
Not: php-cgi pathinin tam olarak neresi olduğunu öğrenebilmek için, aşağıda anlatıldığı üzere php kurulumunu yaptıktan sonra
where is komutunu kullanabilirsiniz. FreeBSD'de default olarak “/usr/local/bin/php-cgi”‘dir.
# whereis php-cgi php-cgi: /usr/local/bin/php-cgi
lighttpd.conf dosyasına eklemiş olduğumuz satırlarla ilgili bir iki dikkat edilmesi gereken husus var. Eğer, cache vs. işlemleri için eacceleretor gibi bir opcode cacher kuracak isek;
“max-procs” => 1 satırının, örnekteki gibi 1 olması gerekiyor.
“PHP_FCGI_CHILDREN” => “16” satırı ise, çalıştırılacak child adedini belirtiyor, sistem kaynaklarına ve yük durumuna göre bunu arrtırabilirsiniz.
Yapılandırma tamam gibi görünüyor. Ancak ben /usr/local/etc/rc.d altında bulunan lighttpd startup scriptini çalıştırdığım zaman, aşağıdaki gibi bir sonuç aldım.
# /usr/local/etc/rc.d/./lighttpd start (configfile.c.1136) base-docroot doesn't exist: /usr/local/www/data/ (server.c.591) setting default values failed
lighttpd.conf dosyasında, server.document-root olarak /usr/local/www/data/ dizini tanımlı, daha önceden bu dizin yaratılmadığı için ilgili dizinin olmamasından dolayı sorun çıkartıyor. Yani, Apache'de olduğu gibi kendisi oluştırmadığı için manuel olarak oluşturmanız ve www kullanıcı/grubuna atamanız gerekiyor. (conf dosyası içinde default user ve group www olarak tanımlı; değiştirebilirsiniz.)
# mkdir /usr/local/www/data # chown www /usr/local/www/data # chgrp www /usr/local/www/data/
Tekrar çalıştırıyoruz ve bir başka sorunla karşılaşıyoruz.
# /usr/local/etc/rc.d/./lighttpd start (mod_accesslog.c.535) opening access-log failed: Permission denied /var/log/lighttpd.access.log (server.c.895) Configuration of plugins failed. Going down.
Bu sefer de, ilgili log dosyasına erişemediği için start etmedi. log dosyalarını oluşturmamız ve www'ye atamamız gerekiyor.
# touch /var/log/lighttpd.access.log # chown www /var/log/lighttpd.access.log # chgrp www /var/log/lighttpd.access.log # touch /var/log/lighttpd.error.log # chown www /var/log/lighttpd.error.log # chgrp www /var/log/lighttpd.error.log
Bir daha denediğimizde, sorunsuz çalışacak olması gerekiyor.
# /usr/local/etc/rc.d/./lighttpd start Starting lighttpd.
Şimdi, 80. portun bind edilip edilmediğine bakabilir, document root'un altına basit bir html atıp serverın çalışığ çalışmadığını kontrol edebilirsiniz.
PHP
Gene portstan php bve extensionlarını kuruyoruz.
# cd /usr/ports/lang/php5 # make install clean
Php kurulum seçeneklerinden, FastCGI'ı seçmeyi unutmuyoruz.
# cd /usr/ports/lang/php5-extensions # make install clean
Bu kurulumda da, OpenAds için gerekli olan Session, Mysql ve FTP özelliklerini seçiyoruz.
php.ini dosyasında OpenAds ve daha sonra da eaccelerator icin bir takım düzenlemeler yapılması gerekiyor. php.ini-recommended isimli kurulumda default gelen dosyanın adını php.ini yapalım.
# cp /usr/local/etc/php.ini-recommended /usr/local/etc/php.ini
OpenAds'in maintanence işlemi için php.ini'deki “register_argc_argv” opsiyonunun ON duruma getirilmesi gerekir. ini dosyamızı editleyelim ve Off olan bu değeri On yapalım. eaccelerator düzenlemeleri için bu dosyaya sonra geri döneceğiz.
Php'inin düzgün çalışığ çalışmadığını anlamak için; /usr/local/www/data dizini altında, info.php şeklinde bir dosya açıp, içerisine
yazıp kaydedip çıkalım; ve “http://ip.ad.re.si/info.php” şeklinde info.php dosyasını çağıralım, php düzgün çalışıyorsa, php ve php modülleri ile ilgili kapsamlı bir info sayfası görürsünüz.
Php kurulumundan sonra sırada Mysql var.
Mysql
Ports for the win!
# cd /usr/ports/databases/mysql50-server/ # make install clean
Mysql kurulumu bittikten sonra, OpenAds için bir database olusturmak ve bu DB için bir de user belirlemek gerekiyor.
Mysql'e bağlanalım
Mysql default olarak root passwordunu boş bırakır, kurulumdan sonra bir şifre belirlemelisiniz. Şimdi bu işlemi de yapalım.
# mysql -u root mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('newpwd'); mysql> SET PASSWORD FOR 'root'@'%' = PASSWORD('newpwd');
DB ve User yaratıp, db'ye bu user için hak verelim.
mysql> CREATE DATABASE openads; mysql> GRANT all ON openads.* TO username@localhost IDENTIFIED BY 'password'; mysql> flush privileges; mysql> quit
Mysql işlemi de tamam.
EACCELERATOR
Eaccelerator de ports'da bulunuyor.
# cd /usr/ports/www/eaccelerator # make install clean
şeklinde kurulumumuzu yapıyoruz.
Kurulumdan sonra /usr/local/etc altındaki php.ini dosyasına aşağıdaki satırları giriyoruz.
zend_extension="/usr/local/lib/php/20060613/eaccelerator.so" eaccelerator.shm_size="32" eaccelerator.cache_dir="/tmp/eaccelerator" eaccelerator.enable="1" eaccelerator.optimizer="1" eaccelerator.check_mtime="1" eaccelerator.debug="0" eaccelerator.filter="" eaccelerator.shm_max="0" eaccelerator.shm_ttl="0" eaccelerator.shm_prune_period="0" eaccelerator.shm_only="0" eaccelerator.compress="1" eaccelerator.compress_level="9"
Zend_extension'un yeri versiyona göre değişiyor. Bu nedenle path'in doğru girmek için kısaca,
# find / -name eaccelerator.so
komutu ile dosyayı aratabilir ve pathi öğrenebilirsiniz.
Son olarak, php.ini içinde pathini belirttiğimiz cache dizinini oluşturuyoruz.
# mkdir /tmp/eaccelerator # chmod 777 /tmp/eaccelerator
Eaccelerator'un devreye girebilmesi için normalde server restartı gerekiyor, ancak Lighttpd kullanılıyorsa sadece ana FastCGI serverı killememiz yeterli. Lighttpd restart ile kökünden halledelim.
# /usr/local/etc/rc.d/./lighttpd restart
Lighttpd sorunsuz şekilde restart olduktan sonra, eaccelerator'un devreye girip girmediğini anlamak için;
php -v komutunu çalıştırabiliriz. Çıktıda aşağıdakine benzer bir eAccelerator satırı olmalı.
Zend Engine v2.2.0, Copyright (c) 1998-2007 Zend Technologies with eAccelerator v0.9.5.2, Copyright (c) 2004-2006 eAccelerator, by eAccelerator
Bir sonraki aşama, OpenAds kurulumu ki, oldukça basit bir kurulumu var.
http://www.openads.org/ adresinden Openads'in son sürümünü indirin ve Lighttpd'nin document root dizini olan /usr/local/www/data/ dizininin altına zip dosyasını açın.
Sonra bir browser açarak, http://ip.ad.re.si/ adresini çağırın. Bu şekilde Openads'in kurulum adımları başlayacak ve önergeleri izleyerek kurulumu tamamlayabileceksiniz. Epey kolay :)
Son olarak, Openads'in DB'nizi maintanence eden php dosyasını her saat başı çalıştırmak için crontab'ınıza aşağıdaki satırı girin.
0 * * * * fetch -o /dev/null http://ip.ad.re.si/maintenance/maintenance.php
Hepsi bu.
Bu yazılar da ilginizi çekebilir:
- Eaccelerator hit: httpd-error.log
- Lighttpd Virtual Hosting (vhost) Yapılandırması
- CentOS üzerine php5 ve Mysql destekli Lighttpd Kurulumu
- eAccelerator Kurulumu
- OpenX 2.8 Ad Server Kurulumu
Would be nice if this were in english.
[Cevapla]
Ofc i can post it in english..
However, you don’t need to read whole article, just follow the commands and copy paste them.
That’s all…
[Cevapla]
çok işime yaradı tsk edrm
[Cevapla]