From cc40af334e619bb549038238507407866f774f8f Mon Sep 17 00:00:00 2001 From: hongbotian Date: Mon, 30 Nov 2015 01:35:09 -0500 Subject: upload apache JIRA: BOTTLENECK-10 Change-Id: I67eae31de6dc824097dfa56ab454ba36fdd23a2c Signed-off-by: hongbotian --- rubbos/app/apache2/manual/vhosts/mass.html.tr.utf8 | 406 +++++++++++++++++++++ 1 file changed, 406 insertions(+) create mode 100644 rubbos/app/apache2/manual/vhosts/mass.html.tr.utf8 (limited to 'rubbos/app/apache2/manual/vhosts/mass.html.tr.utf8') 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 @@ + + + +Devingen olarak Yapılandırılan Kitlesel Sanal Barındırma - Apache HTTP Sunucusu + + + + + +
<-
+

Devingen olarak Yapılandırılan Kitlesel Sanal Barındırma

+
+

Mevcut Diller:  en  | + ko  | + tr 

+
+ + +

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. +

+ +
+ +
top
+
+

Amaç

+ +

Burada 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:

+ +
    +
  1. Yapılandırma dosyanız küçüleceği için Apache daha çabuk + başlatılabilecek ve daha az bellek harcayacaktır.
  2. + +
  3. Yeni sanal konakların eklenmesi, DNS’de yeni girdiler oluşturmak ve + dosya sisteminde bununla ilgili dizinleri açmak dışında biraz daha + basit olacaktır; en azından Apache’yi yeniden yapılandırmak ve yeniden + başlatmak zorunda kalmayacaksınız.
  4. +
+ +

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).

+ +
top
+
+

Genel Bakış

+ +

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.

+ +
top
+
+

Basit Devingen Sanal Konaklar

+ +

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.

+ +
top
+
+

Sanal Kişisel Sayfalar Sistemi

+ +

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.

+ +
top
+
+

Aynı Sunucuda Kişisel ve Kurumsal Sanal Konaklar

+ +

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> +

+
top
+
+

IP’ye dayalı sanal konakları daha verimli kılmak

+ +

İ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
+

+ +
top
+
+

mod_rewrite ile Kurumsal Müşteriler Sistemi

+ +

Buradaki 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! +

+ +
top
+
+

mod_rewrite ile Kişisel Sayfalar Sistemi

+ +

Burada 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/ +

+ +
top
+
+

Sanal konaklar için ayrı bir yapılandırma dosyası kullanmak

+ +

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.mapdosyamı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 +

+ +
+
+

Mevcut Diller:  en  | + ko  | + tr 

+
+ \ No newline at end of file -- cgit 1.2.3-korg