31 Mar

(network.c.345) can’t bind to port: :: 80 Address already in use

Ubuntu 10.04 ü test ederken ligthttpd’nin yeni sürümünü kurdum, ve çalıştırmak istediğimde bu hatayı aldım.
Meğer problem lighttpd’eki bir perl scriptinin IPV6 deteği olup olmadığını kontrol etmesinden kaynaklanıyormuş

/etc/lighttpd/lighttpd.conf

içerisinde aşağıdaki satırı bulup yorum satırı haline getirmeniz halinde lighttpd’yi çalıştırabilirsiniz.

#include_shell “/usr/share/lighttpd/use-ipv6.pl”

30 Jan

lighttpd’nin dayanılmaz hafiliği

Apache’den gayrı sunucu bilmezdim, taaki lighttpd ye işim düşene kadar. Ve gördüm ki gerçekten adı kadar hafif bir sunucu imiş. Sadece 762 kb olan bu sunucuyu kurup , php ile bağını kurmak hiç de zor olmadı. Kendi sitesinden indirdiğiniz dosyayı bir klasöre açtıktan sonra geleneksel kurulum yöntemleri ile kuruyoruz : Dosyaları açtığımız dizine gidip ;

1
2
3
./configure
make
make install

diyerek kurulumu tamamlıyoruz. Geleneksel kuruluma ek olarak, istediğim klasöre kurulabilmesini sağlayabilmek için :

1
2
3
./configure --prefix=/home/ersin/lighttpd
make
make install

demek yetiyor. Bundan sonra lighttpd yi ayarlayabilmek için gerekli ayar dosyasını oluşturmaya geldi sıra. Kurulum işlemi tamamlandığında lib,sbin ve share klasörleri oluşturacaktır ( eğer yukarıdaki prefix parametresini kullanıp farklı bir dizine kurdurduysanız) . Kurulum yaptığımız lighttpd klasörüne giderek burada www klasörü oluşturalım.

Kurulumu yukarıdaki komut satırındaki kuruluma göre , farklı bir dizine yapılmış kurulum olduğunu kabul ederek devam edelim.
sbin klasörüne girerek lighttpd.conf adında bir dosya oluşturalım. Bu dosyanın içerisine girerek şu satırları yazalım :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
server.document-root = "/home/ersin/lighttpd/www/"
server.port = 8080
server.modules              = (
                                "mod_rewrite",
#                               "mod_redirect",
#                               "mod_alias",
#                               "mod_access",
#                               "mod_cml",
#                               "mod_trigger_b4_dl",
#                               "mod_auth",
#                               "mod_status",
#                               "mod_setenv",
                                "mod_fastcgi",
#                               "mod_proxy",
#                               "mod_simple_vhost",
#                               "mod_evhost",
#                               "mod_userdir",
#                               "mod_cgi",
#                               "mod_compress",
#                               "mod_ssi",
#                               "mod_usertrack",
#                               "mod_expire",
#                               "mod_secdownload",
#                               "mod_rrdtool",
#                               "mod_accesslog"
)
index-file.names = ( "index.php","index.html" )
mimetype.assign = (
".html" => "text/html",
".txt" => "text/plain",
".jpg" => "image/jpeg",
".png" => "image/png"
)

Yuarıdaki kodlar üç aşşağı beş yukarı anlaşılır şeyler. Ama yine de tek tek değinelim.
server.document-root sunucumuzda yayınlanacak olan dosyalar için kök klasörü işaret eder. Bu klasöre atılan dosyaya web den erişilebilir (bunu kendi kurulumunuza göre değiştirin) .
server.port sunucumuzun çalışacağı port. Genelde 80 dir ama, zaten bir sunucunuz olduğunu düşünerek lighttpd yi denerken muhtemel bir problemden uzak tutmak için 8080 girdik.
index-file.names sunucumuzun kök klasöre eriştiğinde bakacağı index dosyasını belirlememizi sağlar.
mimetype.assign uzantılar ile MIME tipi ilişkilendiriyoruz.
Şimdi sıra geldi php yi tanıtmaya. Lighttpd de PHP yi kurabilmek için php-cgi kurmamız gerekmekte.
Ben ubuntu kullandığım için ubuntuya göre kurulumu anlatacağım.

1
apt-get install php5-cgi

gibi tek satır kod ile php5-cgi kurduktan sonra lighttpd.conf a aşağıdaki satırları ekliyoruz

1
2
3
4
5
6
7
8
9
10
11
fastcgi.server = ( ".php" =>
(( "socket" => "/tmp/php-fastcgi.socket",
"bin-path" => "/usr/bin/php-cgi",
"max-procs" => 10,
"bin-environment" => (
"PHP_FCGI_CHILDREN" => "10",
"PHP_FCGI_MAX_REQUESTS" => "500"
),
"broken-scriptfilename" => "enable"
))
)

Bu satırları da ekledikden sonra sıra geldi lighttpdyi çalıştırmaya. Tabi bundan önce www dizinimizde index.php dosyası oluşturup içerisine

1
phpinfo();

yazarak kaydetmeliyiz. Böylece php kurulumunu test edebiliriz.
Hadi lighttpd yi çalıştıralım, ilk önce konsoldan kurulumu yaptığımız dizindeki sbin klasörüne giriyoruz. Burda :

1
./lighttpd -D -f lighttpd.conf

yazarak lighttpd yi çalıştırıyoruz ( lighttpd.conf dosyasını kolaylık olsun diye sbin klasörünün içerisinde oluşturmuştum ) . Buradaki “D” parametresi lighttpd nin arka plana geçerek orda çalışmasını engeller. Böylece komut satırından “CTRL+C” ile işlevi sonlandırdığınızda lighttpd çalışmayı durdurur, “D” parametresini eklemezsek “CTRL+C” ile lighttpd yi durduramayız. “f” parametresi hangi config dosyasını kullanacağımızı belirtmek için.
Bu komutu çalıştırdıktan sonra
“2010-01-30 18:10:51: (log.c.166) server started”
benzeri bir çıktı verecektir. Bu da lighttpd nin çalıştığı anlamına gelir. Artık tarayıcı ekranından http://localhost:8080 dedikten sonra php bilgisi dökülecektir ekrana.
İlerleyen zamanlarda lighttpd ile ilgili tecrübelerimi burada paylaşmaya çalışacağım. Güzel günler dileği ile, hoşça kalın.