X-Git-Url: https://gerrit.opnfv.org/gerrit/gitweb?a=blobdiff_plain;f=rubbos%2Fapp%2Fapache2%2Fmanual%2Fvhosts%2Fmass.html.tr.utf8;fp=rubbos%2Fapp%2Fapache2%2Fmanual%2Fvhosts%2Fmass.html.tr.utf8;h=ff3f9990b5c0b24b6b8d9da84f33a613af458bc7;hb=cc40af334e619bb549038238507407866f774f8f;hp=0000000000000000000000000000000000000000;hpb=68e74fd78b2485e5914ce34a5b30f4485029e021;p=bottlenecks.git diff --git a/rubbos/app/apache2/manual/vhosts/mass.html.tr.utf8 b/rubbos/app/apache2/manual/vhosts/mass.html.tr.utf8 new file mode 100644 index 00000000..ff3f9990 --- /dev/null +++ b/rubbos/app/apache2/manual/vhosts/mass.html.tr.utf8 @@ -0,0 +1,406 @@ + + +
+Apache HTTP Sunucusu Sürüm 2.0
+Bu belgede sanal konakların sonu belirsiz bir Åekilde artıÅı karÅısında + Apache httpd sunucusunun nasıl daha verimli kullanılacaÄı açıklanmıÅtır. +
+ +mod_rewrite
ile Kurumsal MüÅteriler Sistemimod_rewrite
ile KiÅisel Sayfalar SistemiBurada açıklanan teknikler, httpd.conf
dosyanızın
+ örnekteki gibi, aslında hemen hemen birbirinin aynı çok sayıda
+ <VirtualHost>
bölümü içereceÄi zaman yapılacaklar ile
+ ilgilidir.
+NameVirtualHost 111.22.33.44
+<VirtualHost 111.22.33.44>
+
+ ServerName musteri-1.dom
+ DocumentRoot /siteler/musteri-1.dom/belgeler
+ ScriptAlias /cgi-bin/ /siteler/musteri-1.dom/cgi-bin
+
+</VirtualHost>
+<VirtualHost 111.22.33.44>
+
+ ServerName musteri-2.dom
+ DocumentRoot /siteler/musteri-2.dom/belgeler
+ ScriptAlias /cgi-bin/ /siteler/musteri-2.dom/cgi-bin
+
+</VirtualHost>
+# blah blah blah
+<VirtualHost 111.22.33.44>
+
+ ServerName musteri-N.dom
+ DocumentRoot /siteler/musteri-N.dom/belgeler
+ ScriptAlias /cgi-bin/ /siteler/musteri-N.dom/cgi-bin
+
+</VirtualHost>
+
Ana fikir, tüm duraÄan <VirtualHost>
+ yapılandırmalarını devingen olarak çalıÅan tek bir
+ <VirtualHost>
bölümüyle deÄiÅtirmektir. Bunun elbette
+ bazı getirileri olacaktır:
Ana götürüsü ise her sanal konak için ayrı birer günlük dosyasına sahip + olamayacak olmanızdır. Ãte yandan, dosya tanıtıcılarının sınırlı olması + nedeniyle bunu yapmayı zaten istemezsiniz. Günlük kayıtları için bir + fifo veya bir boru hattı oluÅturmak ve diÄer uçta çalıÅan bir süreç + vasıtasıyla günlükleri müÅterilere paylaÅtırmak daha iyidir (ayrıca, bu, + istatistikleri toplamanızı da kolaylaÅtırır).
+ +Bir sanal konak iki bilgiye bakarak belirlenir: IP adresi ve HTTP
+ isteÄindeki Host:
baÅlıÄının içeriÄi. Devingen sanal
+ barındırma tekniÄi, isteÄi yerine getirmek için kullanılacak dosya
+ yoluna bu bilgiyi kendiliÄinden girmek esasına dayanır. Bu, Apache 2.0
+ ile mod_vhost_alias
kullanarak oldukça kolay
+ yapılabileceÄi gibi mod_rewrite
da kullanılabilir. Bu
+ modüllerin her ikisi de öntanımlı olarak devre dıÅıdır. Bu tekniÄi
+ kullanmak isterseniz Apacheâyi yeniden yapılandırıp derleyerek bu iki
+ modülü etkin duruma getirmeniz gerekir.
Devingen sanal konaÄı normal bir sanal konak gibi göstermek için bazı
+ Åeyleri âgöstermelikâ olarak yapmak gerekir. Bunlardan en önemlisi,
+ Apache tarafından göreli URLâlerden normal URLâleri ve benzerlerini
+ üretmek için kullanılan sunucu ismidir. Sunucu ismi
+ ServerName
yönergesi ile yapılandırılır ve CGIâler
+ tarafından SERVER_NAME
ortam deÄiÅkeni üzerinden
+ kullanılır. ÃalıÅma anındaki asıl deÄer UseCanonicalName
yönergesi tarafından denetlenir.
+ UseCanonicalName Off
olduÄunda sunucu ismi isteÄin
+ Host:
baÅlık alanından elde edilir. UseCanonicalName
+ DNS
belirtilmiÅse, sunucu ismi, sanal konaÄın IP adresinden
+ tersine DNS sorgusu yapılarak elde edilir. Birincisi isme dayalı sanal
+ konaklar tarafından ikincisi ise IPâye dayalı sanal konaklar tarafından
+ kullanılır. EÄer Apache, istekte Host:
baÅlıÄının olmayıÅı
+ veya DNS sorgusunun baÅarısız olması sebebiyle sunucu ismini elde
+ edemezse son çare olarak ServerName
yönergesinde yazılı
+ deÄeri kullanır.
âGöstermelikâ yapılan Åeylerden biri de DocumentRoot
+ yönergesi ile yapılandırılan belge kök dizini olup CGIâler tarafından
+ DOCUMENT_ROOT
ortam deÄiÅkeni üzerinden kullanılır. Normal
+ yapılandırmada core
modülü tarafından dosya isimlerini
+ URIâlere eÅlerken kullanılır. Fakat sunucu devingen sanal konakları
+ kullanmak üzere yapılandırıldıÄında, eÅleÅtirmeyi farklı yollardan yapan
+ baÅka bir modül devreye girer (mod_vhost_alias
veya
+ mod_rewrite
). DOCUMENT_ROOT
ortam deÄiÅkenine
+ deÄerini atamaktan sorumlu olan bu iki modülden biri kullanılmazsa CGI
+ veya SSI belgeleri yanlıŠdeÄerlerle üretilirler.
Yukarıda Amaç bölümünde özetlenen sanal konak
+ düzenlemesinin mod_vhost_alias
kullanarak daha soysal bir
+ tarzda gerçekleÅtirilmiÅ halini içeren httpd.conf
bölümü
+ aÅaÄıdadır.
+# sunucu ismini Host: baÅlıÄından elde edelim
+UseCanonicalName Off
+
+# Bu günlükleme biçiminde ilk alana bakarak
+# sanal konak günlükleri ayrıÅtırılabilir
+LogFormat "%V %h %l %u %t \"%r\" %s %b" vcommon
+CustomLog logs/access_log vcommon
+
+# istekleri yerine getirmek için kullanılacak
+# dosya isimlerine sunucu ismini ekleyelim
+VirtualDocumentRoot /siteler/%0/belgeler
+VirtualScriptAlias /siteler/%0/cgi-bin
+
Bu yapılandırmayı IPâye dayalı sanal konaklar için kullanmak isterseniz
+ UseCanonicalName Off
yerine UseCanonicalName
+ DNS
yazmanız yeterlidir. Böylece dosya ismine eklenecek konak
+ ismi sanal konaÄın IP adresinden türetilir.
Bu sistem, yukarıdaki yapılandırmanın bir ISSânin kiÅisel sayfalar
+ sunucusuna uyarlanmasından baÅka bir Åey deÄildir. Biraz daha karmaÅık
+ bir yapılandırma ile dosya isimlerine /home/kullanıcı/
+ dizinlerini ekleyebiliriz. Farklı olarak her sanal konak için bir tane
+ deÄil hepsi için bir tane cgi-bin
olacaktır.
+# Son bölüm hariç yukarıdaki yapılandırma, burada...
+
+# sunucu ismine eklenecek dosya isimlerini oluÅturalım
+VirtualDocumentRoot /siteler/%2/belgeler
+
+# ortak cgi-bin dizini
+ScriptAlias /cgi-bin/ /siteler/std-cgi/
+
mod_vhost_alias
belgesinde daha karmaÅık
+ VirtualDocumentRoot
örnekleri vardır.
Daha karmaÅık ayarlamalar yaparak Apacheâinin normal
+ <VirtualHost>
bölümlerini farklı kitlesel sanal konak
+ yapılandırmaları için kullanabilirsiniz. ÃrneÄin, bireysel
+ müÅterileriniz için bir IP adresiniz, kurumsal müÅterileriniz için de
+ baÅka bir IP adresiniz olsun. Her biri için ayrı ayrı sanal konaklar
+ ayarlamak yerine aÅaÄıdaki gibi bir yapılandırma kullanabilirsiniz:
+UseCanonicalName Off
+
+LogFormat "%V %h %l %u %t \"%r\" %s %b" vcommon
+
+<Directory /siteler/kurumsal>
+
+ Options FollowSymLinks
+ AllowOverride All
+
+</Directory>
+
+<Directory /siteler/bireysel>
+
+ Options FollowSymLinks
+ AllowOverride None
+
+</Directory>
+
+<VirtualHost 111.22.33.44>
+
+ ServerName kurumsal.iss.dom
+
+ CustomLog logs/access_log.kurumsal vcommon
+
+ VirtualDocumentRoot /siteler/kurumsal/%0/belgeler
+ VirtualScriptAlias /siteler/kurumsal/%0/cgi-bin
+
+</VirtualHost>
+
+<VirtualHost 111.22.33.45>
+
+ ServerName bireysel.iss.dom
+
+ CustomLog logs/access_log.bireysel vcommon
+
+ VirtualDocumentRoot /siteler/bireysel/%0/belgeler
+ ScriptAlias /cgi-bin/ /siteler/std-cgi/
+
+</VirtualHost>
+
Ä°lk örnekte IPâye dayalı sanal konaklar için + kullanılmak istenirse yapılandırmada neyin nasıl deÄiÅtirileceÄi + belirtilmiÅti. Her istek için ayrı bir DNS sorgusu gerekeceÄinden bu + baÅarım düÅmesine yol açar. DNS sorgusu ihtiyacını ortadan kaldırmak + için, bir çözüm olarak dosya sistemi, konak isimleri yerine IP + adreslerine göre düzenlenebilir. Günlük kayıtları da IP adreslerine göre + ayrıÅtırılacak Åekilde ayarlanabilir.
+ +
+# Sunucu ismini IP adresinden ters DNS sorgusu ile elde edelim
+UseCanonicalName DNS
+
+# Günlük kayıtları IP adreslerine göre ayrıÅtırılabilsin
+LogFormat "%A %h %l %u %t \"%r\" %s %b" vcommon
+CustomLog logs/access_log vcommon
+
+# dosya isimleri IP adreslerini içersin
+VirtualDocumentRootIP /siteler/%0/belgeler
+VirtualScriptAliasIP /siteler/%0/cgi-bin
+
mod_rewrite
ile Kurumsal MüÅteriler SistemiBuradaki httpd.conf
bölümü de ilk
+ örnekteki gibi elde edilmiÅtir. Ä°lk yarı, bazı deÄiÅiklikler dıÅında
+ yukarıdaki örneÄe çok benzer. Bu deÄiÅiklikler yapılandırmanın
+ mod_rewrite
bölümünün düzgün çalıÅması ve geriye doÄru
+ uyumluluk için gereklidir. Ä°kinci yarı, asıl iÅi yapan
+ mod_rewrite
yapılandırmasını içerir.
Biraz uzmanlık gerektiren bazı kısımlar var: Ãntanımlı olarak
+ mod_rewrite
diÄer (mod_alias
, vs. gibi) URI
+ dönüÅüm modüllerinden önce çalıÅır. Dolayısıyla bu modülleri kullanmak
+ isterseniz, mod_rewrite
âı bunlara izin verecek Åekilde
+ yapılandırmalısınız. Ayrıca her devingen sanal konaÄa eÅdeÄer bir
+ ScriptAlias
yapmak için de biraz büyü yapmak gerekir.
+# Sunucu ismini Host: baÅlıÄınıdan alalım.
+UseCanonicalName Off
+
+# Günlük dosyasından bilgileri ayıklayabilelim.
+LogFormat "%{Host}i %h %l %u %t \"%r\" %s %b" vcommon
+CustomLog logs/access_log vcommon
+
+<Directory /siteler/hosts>
+
+ # ScriptAlias için yaptıklarımızla CGI betiklerini
+ # çalıÅmaya zorlayamayacaÄımızdan ExecCGI burada gerekli.
+ Options FollowSymLinks ExecCGI
+
+</Directory>
+
+# Ä°Åin zor yanına geldik.
+
+RewriteEngine On
+
+# Host: baÅlıÄından elde edilen sunucu isminde harf
+# büyüklükleri çeÅitli olabilir. Hepsini küçük harf yapalım.
+RewriteMap lowercase int:tolower
+
+## önce normal belgelerle anlaÅalım:
+# Alias /icons/ çalıÅsın - diÄer rumuzlar için yineleyelim
+RewriteCond %{REQUEST_URI} !^/icons/
+# CGIâler de çalıÅsın.
+RewriteCond %{REQUEST_URI} !^/cgi-bin/
+# Biraz da büyü yapalım.
+RewriteRule ^/(.*)$ /siteler/${lowercase:%{SERVER_NAME}}/belgeler/$1
+
+## Artık CGIâlerle anlaÅabiliriz. - Bir MIME türü isteyelim.
+RewriteCond %{REQUEST_URI} ^/cgi-bin/
+RewriteRule ^/(.*)$ /siteler/${lowercase:%{SERVER_NAME}}/cgi-bin/$1 [T=application/x-httpd-cgi]
+
+# Bu kadar!
+
mod_rewrite
ile KiÅisel Sayfalar SistemiBurada da ikinci örnekte yaptıklarımızı + yapıyoruz.
+ +
+RewriteEngine on
+
+RewriteMap lowercase int:tolower
+
+# CGIâler çalıÅsın.
+RewriteCond %{REQUEST_URI} !^/cgi-bin/
+
+# konak ismi doÄru mu bakalım yoksa RewriteRule çalıÅmaz.
+RewriteCond ${lowercase:%{SERVER_NAME}} ^www\.[a-z-]+\.isp\.dom$
+
+# URIânin baÅına sanal konak ismini ekleyelim.
+# [C], bunu bitirdikten sonra, sonraki rewrite ile devam et demek.
+RewriteRule ^(.+) ${lowercase:%{SERVER_NAME}}$1 [C]
+
+# Artık asıl dosya ismini oluÅturabiliriz.
+RewriteRule ^www\.([a-z-]+)\.isp\.dom/(.*) /home/$1/$2
+
+# Ortak CGI dizinini tanımlayalım.
+ScriptAlias /cgi-bin/ /siteler/std-cgi/
+
Burada, sanal konak isimlerinden belge kök dizini elde ederken
+ mod_rewrite
modülünün daha geliÅkin özelliklerinden
+ yararlanarak isimleri ayrı bir dosyadan okutacaÄız. Bu, esnekliÄi
+ artırır ama daha karmaÅık bir yapılandırma gerekir.
AÅaÄıdaki içeriÄe sahip bir vhost.map
dosyamız olsun:
+musteri-1.dom /siteler/kurumsal/1
+musteri-2.dom /siteler/kurumsal/2
+# ...
+musteri-N.dom /siteler/kurumsal/N
+
httpd.conf
dosyamız da Åunları içerecektir:
+RewriteEngine on
+
+RewriteMap lowercase int:tolower
+
+# EÅlem dosyasını tanımlayalım
+RewriteMap vhost txt:/siteler/conf/vhost.map
+
+# Rumuzları yukarıdaki gibi halledelim.
+RewriteCond %{REQUEST_URI} !^/icons/
+RewriteCond %{REQUEST_URI} !^/cgi-bin/
+RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
+# EÅlemeyi dosyalar için de yapalım.
+RewriteCond ${vhost:%1} ^(/.*)$
+RewriteRule ^/(.*)$ %1/belgeler/$1
+
+RewriteCond %{REQUEST_URI} ^/cgi-bin/
+RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
+RewriteCond ${vhost:%1} ^(/.*)$
+RewriteRule ^/(.*)$ %1/cgi-bin/$1
+