Archive for the ‘Özgür yazılım incelemeleri’ Category

lighttpd ne kadar ‘light’tır?

Saturday, March 14th, 2009

Bir süredir bu sunucu da dahil olmak üzere Debian üzerinde lighttpd kullanmaktayım. lighttpd ismi gibi kendisi de gerçekten light bir web sunucusu. FastCGI uygulaması olarak çalışan PHP ile de, Apache’den kat kat ‘light’ olduğunu söyleyebilirim. Özellikle bellek kullanımı lighttpd’i eşsiz kılıyor. Eğer fazla belleği bulunmayan bir sunucunuz varsa hiç düşünmeden lighttpd kullanın.

lighttpd’nin özelliklerine gelecek olursak boyundan büyük bir çok özelliği bulunmakta. Proxy modülünden, Apache’de sıkça kullanılan rewrite modülüne kadar bir çok modül bulunmakta. Modül listesini ve ayarları bu linkteki sayfada görebilirsiniz.

Bunun yanında, Apache (apache-mpm-prefork) gibi her seferinde yeni bir process yaratmayıp threadler ile çalışıyor. Böylece yine bellekten tasarruf sağlanmış olunuyor.

lighttpd orijinal olarak c10k (bir sunucuda 10000 paralel bağlantıyı idare etmek) problemi üzerine yazılmış bir web sunucusu.

1 MB’dan küçük olan bu devin popularitesi gün geçtikçe artıyor. Netcraft Ocak 2009 raporuna göre, 3 milyon site tarafından kullanılan lighttpd, en çok kullanılan 5. web sunucusu özelliğini taşıyor.

lighttpd vazgeçilmezi FastCGI

Biraz da lighttpd’nin vazgeçilmezi FastCGI‘ye değinmek istiyorum.

Normalde CGI uygulamaları gelen isteğe göre çalışırlar. Örneğin siz bir CGI uygulamasına istek gördüğünüzde, bilgisayar onu yeni bir uygulama olarak başlatır ve sizin isteğiniz işlendikten sonra çıktılar size ulaştırılır. CGI uygulamalarının mantığı budur.

FastCGI ise programın bir kez çalıştırılıp belleğe yüklenmesini sağlıyor. Böylece program her seferinde çalışmak zorunda kalmıyor ve bu da performans ve kaynak kullanımı artışı sağlıyor. FastCGI orijinal olarak C dili ile yazılmış olsa da, bir çok dile implementasyonu bulunmakta. lighttpd FastCGI desteği sayesinde, fastcgi uygulamalarınızı çalıştırabilir.

Özellikle yüksek trafik gerektiren uygulamalar FastCGI ile programlanırsa, performans artışı yaşanmaması içten bile değildir.

Bunun yanında bir FastCGI uygulamasında en önemki faktör bellek kullanımıdır. Eğer FCGI uygulamanızda bellek açıkları (memory leak) var ise, bellek her istekte biraz daha şişecektir. Bu nedenle bir FCGI uygulamasında bellek kontrolü çok önemlidir.

Diğerlerinin yapamadığını yapmak: FreeBSD

Friday, July 18th, 2008

Bir haftadır almış olduğum Edimax 7128G Wireless kartını AP (Access Point) olarak çalıştırmaya uğraşıyorum. Öğrendim ki, bu kartın ne Linux sürücüsü ne de Windows sürücüsü AP olarak çalıştırmayı desteklemiyormuş. RT61 özgür sürücü projesinin sayfasından edindiğim bilgiye göre, wireless kartım FreeBSD altında AP olarak çalışabiliyormuş. İşte FreeBSD ile tanışma fırsatım bu şekilde oldu.

Daha önce çok kısa bir süre denemiştim FreeBSD’yi. Bu kısa sürelik dilimde, kendisi adına bir şey öğrenmek gibi bir çaba sarfetmedim. Şimdi ise bir sunucu için vazgeçilmez olarak kullanabileceğim bir işletim sistemi olarak görüyorum. Çok katı olması kendini cezbeden özelliği.

FreeBSD yüklenirken sadece core olarak yükleniyor. Hiç bir paket kurulmuyor. Sadece Linux uyumluluğu isterseniz, Linux uyumluluğu paketi kuruluyor. Daha sonra FreeBSD protlarından istediğiniz yazılımı kurabiliyorsunuz.

FreeBSD’nin portları (paketler) ise baya esnek. İsterseniz hazır derlenmiş binary paketleri kurabiliyorsunuz, isterseniz paket CVS deposunu çekip, oradan istediğiniz paketi kurma talimatını verebiliyorsunuz. FreeBSD size paketi indiriyor ve gerekli yamaları uygulayıp kendine uygun halde derliyor. Tamamen Make tabanlı paket sistemi, istediğiniz ayarları da yapabilmenize olanak sağlıyor. Sistem aynı zamanda, istediğiniz zaman sonradan yüklediğiniz tüm paketleri silmenize izin veriyor.

FreeBSD network bazında da kendi kernelini kullanıyor. Tamamen kendisi için geliştirilmiş olan sshd, ftpd, natd gibi araçları kullanıyor. Network yapılandırması bir router için Linux’un iptables’inden çok daha kolay. Gateway özelliğini açmalı ve Nat’ı aktifleştirmeniz bir router yapmanız için yeterli.

Dökümantasyon konusunda ise yazılmış olan handbook, bilmek istediklerinizi fazlasıyla karşılıyor. Handbook FreeBSD’yi ilk defa kullanacaklardan ustalara hitap edecek seviyede. Bu kadar açık dil ile yazılmış bir tek PHP‘nin manuelini görmüştüm.

İnternet üzerinde biraz FreeBSD’yi araştırdığınızda ise Netcraft’ın uptime’ı en uzun süre olan makineler listesinde bir çok FreeBSD makina ile karşılaşıyorsunuz. Eğer linke tıklarsanız gerçekten bu sürenin hayli uzun olduğunu görebilirsiniz. 1735 gün (4 sene 10 ay) açık olan makineler söz konusu.

Programlama araçları olarak FreeBSD üzerinde, kendine göre modifiye edilmiş gcc mevcut. Kütüphaneler olarak glibc yerine kendi apileri var. İsterseniz glic’yi paket olarak kurabiliyorsunuz.

Gördüğüm bazı eksiklere değinmek gerekirse, malesef FreeBSD terminalinde UTF-8 karakter seti kullanmak mümkün değil. Terminal en fazla 255 karaktere kadar destekliyor. Bunun yanında herhangi bir sanal makina kurmak ta mümkün değil. Hostunuzda sanal makina kullanmak isterseniz sorun yaratabilir.

Uzun lafın kısası, gerek üretici tarafından, gerekse kullanıcı topluluğu tarafından AP modunda desteklenmeyen Wireless kartım FreeBSD sayesinde çok iyi bir şekilde hizmet veriyor. Bunun yanında katı Unix benzeri bir sistemi keşfetmek çok zevk verici.

Özgür yazılım farkı

Tuesday, September 4th, 2007

Kullandığım Debian işletim sisteminde cacademo isimli programın Matrix efekti göze çok çekici geliyor. Özelikle büyük bir ekrana sahipseniz ve uzaktan bakıyorsanız hem ekran koruyucusu olaran hem de görsellik açısından mükemmel. Fakat cacademo uygulaması 4 ayrı efek sergilemekte. Bense kullandığım uygulamanın saece Matrix efeğini istiyordum. İşte burada devreye Debian ve Özgür Yazılım giriyor. Hemen `apt-get source libcaca` (cacademo caca-utils paketi icinde, o da libcaca0 içinde yer alıyor) ile ilgili yazılımın kaynak kodlarını indirdim. O kadar C kastık bir işe yarasın yazılımı açtım. C kasma boşa gitmemiş karışık kodlar bile yabancı gelmiyor insana bir seviyeden sonra. Yazılımda ilgili yerleri kendi isteğim doğrultusunda değiştim. Ve iş tekrar paketlemeye geldi. Debian’da paket oluşurken önce derlenir ve sonra make install aşamasını dpkg otomatikmen paketi oluşturarak yapar. Fakat *nix bir sistemde yazılımı derleyebilmeniz için, yazılıma bağımlı kaynak kodlarına da ihtiyacınız var. Bunları yüklemek Debian gibi gelişmiş paket yönetimine sahip datığımlarda çok kolay. Debian’da sadece `apt-get build-dep libcaca` diyoruz ve libcaca nın derlenmesi için gerekli tüm paketler kuruluyor. Artık paketimizi oluşturabiliriz.

Paketimizi oluştururken debian klasörü altında gerekli bilgileri ve changelog dosyasına neleri değiştirdiğimizi yazıyoruz ve `dpkg-buildpackage -rfakeroot` diyerek paketimizi oluşturuyoruz.

Burada anlatmak istediğim olay özgür yazılım ın programcılar için ne kadar esnek ve geliştirilebilir olduğu. İnsanlar sizin yaptığı programları alıp, istedikleri gibi geliştirerek kendi amaçları için kullanabilirler. Buda insanlık nanıma daha elverişli bir katkı sağlayacaktır. Bugün caca özgür bir yazılım olmasa idi, ne istediğim matrix efeğini bilgisayarımda istediğim gibi kullanabilir, ne de yaptığım paketi sizle paylaşabilirdim.

Cacademo editlenmiş sade matrix efekli uygulamasından bir görüntü:

Paketi http://www.0nur.net/paketlerim/libcaca0/ adresinden indirebilirsiniz.