[Gelistirici] [RFC] Web sunucuları document root hakkında

Eren Türkay eren at pardus.org.tr
17 Eki 2010 Paz 14:13:23 EEST


On Sun, Oct 17, 2010 at 10:47:27AM +0300, Erdem Bayer wrote:
> Selamlar
> 
> Nginx paketini bump ederken fark ettim, apache web sunucu 
> için /var/www/localhost dizinini kullanıyoruz, ancak eren nginx paketini 
> hazırlarken doc. root olarak /var/www/nginx kullanmış.
> 
> Sanırım bunu apache'nin öntanımlı dizin yapısını karıştırmamak için yapmış.

Evet, Apache'nin dizin yapısına benzer olması için bu şekilde bir dizin
seçmiştim zamanında, hatta dosyaları var olan Apache paketinin
değiştirilmiş hali. Bu dizinin sadece tek kullanımlık, sunucunun çalışıp
çalışmadığını test etmek amacı ile kullanılması gerekiyor bana göre.

> 
> Ancak şöyle bir problem ortaya çıkıyor. Sistemde kurulu web uygulamalarının 
> benim bildiğim hepsi apache bağımlı oldukları için 
> kendilerini /var/www/localhost/htdocs altına koyuyorlar. Dolayısı ile nginx 
> kullanıcıları bu ayar ve dizinleri kendileri nginx'e taşımak zorunda 
> kalacaklar.

Aslında Apache bağımlı değiller, sadece web sunucu bağımlılıkları olması
gerekiyor.

> Eğer iki web sunucunun dizinlerini ortak yaparsak da şöyle bir problem ortaya 
> çıkıyor: her iki web sunucunun öntanımlı index sayfalarında "Tebrikler 
> Apache/Nginx web sunucuyu başarı ile kurdunuz" cümlesi yer alıyor.
> 
> Ne dersiniz ayrı tutmaya devam edelim mi?

En başta belirttiğim sebepten yola çıkarak. şu anda barındırdığımız
sunucular için test için sadece 1 sayfa/dizin tutalım ve bunun
içerisinde web sunucusu ismi geçmesin.

"Tebrikler! Pardus üzerinde başarıyla web sunucusu çalıştırdınız!
Bu sayfa bir test sayfasıdır ve sunucunuzu güvenle kullanabilmek için
kurduğunuz sunucuya ait konfigürasyon dosyasını düzenleyiniz. X/y/z/q
sunucularının ayar dosyaları buradadır"

Bunun gibi, tabi daha gelişmiş, bir sayfa koyabiliriz. Böylelikle nginx,
lighttpd, apache veya ne kadar web sunucusu varsa test sayfalarının tek
bir yerden halledebiliriz. Hatta bu dosyalar ayrı bir paketten
gelebilir. Paketin ismi ne olur bilmiyorum ama tamamen atıyorum "webserver-common" 
gibi bir şey olabilir. Yeni bir sunucu paketlendiğinde onun hakkındaki
bilgileri güncellemek için de sadece bu paketi güncellememiz yeterli
oalcaktır.

> 
> Bu arada nginx kullanıp da örneğin phpmyadmin kurmak isteyen insanlara da bir 
> çözüm sunmamız gerekiyor, ancak benim aklıma şık bir yöntem gelmiyor :(

Hangi dağıtım bunu yapıyor bilmiyorum ama sistemdeki web uygulamaları
için "/usr/share/phpmyadmin-1.3.5" "/usr/share/wordpress-1.2.3" gibi
dizinler kullanılabiliyor. Bu durumda, bu dizin içerisinde tamamen yazma
hakkına sahip olunan dizinler de olması gerekiyor. Bunun için de önerim
şudur;

"www" grubu yaratılır. Apache, nginx, lighttpd gibi sunucular www
grubunde yer alır. /usr/share altına giden web uygulamaları "nobody:www"
kullanıcı/grubunda yer alarak gerekli izinler *paket içerisinde* *DÜZGÜN OLARAK*
yapılır. Örneğin "/usr/share/wordpress-x.y.z/tmp" dizini wordpress'i
çalıştıran sunucu tarafından yazılabilir olması gerekecek. Bu durumda bu
grup için tamamen yazılabilir olması gerekiyor ve bu da "170" dizin
haklarına sahip olması gerektiği anlamına geliyor. Aynı zamanda,
php/php-cgi gibi çalıştırılabilir dosyaların da "www" grubunda olması
gerek. Nginx, php-cgi kullanarak php çalıştırabiliyor. Bundan dolayı web
ile alakalı olabilecek şeyler konusunda dikkatli olmak gerek.

Ayrıca, bu tür uygulamaların konfigurasyon ve hassas dosyaları sadece
grup tarafından okunabilir olması gerekiyor. Bunun için de chmod "140"
gerekiyor olacak.

Şuna da dikkat etmek gerekecek ki bu tür uygulamalar içerinden çıkan
konfigurasyon dosyalarını düzgün işaretlemek gerek. Paket
güncellendiğinde konfigurasyon dosyası giderse uygulama çalışmayacaktır.

Sunucu konfigurasyonu için örnek dosyalar koyup bunları yorum olarak
yazarsak insanlar sadece başındaki "#" karakterini silip,
phpmyadmin/wordpress/etc ayawlarını yaparak çalıştırabilirler.
Phpmyadmin, wordpress vs. için konfigurasyon dosyalarını hazırlayıp,
sunucunun ana konfigurasyon dosyasında "# include "conf/phpmyadmin.conf"
tarzında bir şeyler yazabiliriz. Kullanıcıya biraz iş düşecek ama web
sunucusu çalıştıracak insan da konfigurasyon dosyaları ile biraz haşır
neşir olması gerekiyor :)

> Saygılarımla
> Erdem Bayer

Benim 2 kuruşum,

-- 
        . Eren
-------------- sonraki bölüm --------------
A non-text attachment was scrubbed...
Name: kullanılamıyor
Type: application/pgp-signature
Size: 198 bytes
Desc: kullanılamıyor
URL: <http://liste.pardus.org.tr/gelistirici/attachments/20101017/a7ce40e5/attachment-0002.pgp>


Gelistirici mesaj listesiyle ilgili daha fazla bilgi