1<?xml version="1.0" encoding="UTF-8"?> 2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 3<html xmlns="http://www.w3.org/1999/xhtml" lang="tr" xml:lang="tr"><head><!-- 4 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 5 This file is generated from xml source: DO NOT EDIT 6 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 7 --> 8<title>Devingen olarak Yapılandırılan Kitlesel Sanal Barındırma - Apache HTTP Sunucusu</title> 9<link href="/style/css/manual.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" /> 10<link href="/style/css/manual-loose-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" /> 11<link href="/style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /><link rel="stylesheet" type="text/css" href="/style/css/prettify.css" /> 12<script src="/style/scripts/prettify.min.js" type="text/javascript"> 13</script> 14 15<link href="/images/favicon.ico" rel="shortcut icon" /></head> 16<body id="manual-page"><div id="page-header"> 17<p class="menu"><a href="/mod/">Modüller</a> | <a href="/mod/directives.html">Yönergeler</a> | <a href="http://wiki.apache.org/httpd/FAQ">SSS</a> | <a href="/glossary.html">Terimler</a> | <a href="/sitemap.html">Site Haritası</a></p> 18<p class="apache">Apache HTTP Sunucusu Sürüm 2.4</p> 19<img alt="" src="/images/feather.gif" /></div> 20<div class="up"><a href="./"><img title="<-" alt="<-" src="/images/left.gif" /></a></div> 21<div id="path"> 22<a href="http://www.apache.org/">Apache</a> > <a href="http://httpd.apache.org/">HTTP Sunucusu</a> > <a href="http://httpd.apache.org/docs/">Belgeleme</a> > <a href="../">Sürüm 2.4</a> > <a href="./">Sanal Konaklar</a></div><div id="page-content"><div id="preamble"><h1>Devingen olarak Yapılandırılan Kitlesel Sanal Barındırma</h1> 23<div class="toplang"> 24<p><span>Mevcut Diller: </span><a href="/en/vhosts/mass.html" hreflang="en" rel="alternate" title="English"> en </a> | 25<a href="/fr/vhosts/mass.html" hreflang="fr" rel="alternate" title="Français"> fr </a> | 26<a href="/ko/vhosts/mass.html" hreflang="ko" rel="alternate" title="Korean"> ko </a> | 27<a href="/tr/vhosts/mass.html" title="Türkçe"> tr </a></p> 28</div> 29 30 31 <p>Bu belgede sanal konakların sonu belirsiz bir şekilde artışı karşısında 32 Apache HTTP Sunucusunun nasıl daha verimli kullanılacağı açıklanmıştır. 33 Devingen kitlesel konakları oluşturmak için <code class="module"><a href="/mod/mod_rewrite.html">mod_rewrite</a></code> 34 modülünün kullanımını açıklayan <a href="/rewrite/vhosts.html">ayrı bir 35 belge</a> de mevcuttur. 36 </p> 37 38</div> 39<div id="quickview"><ul id="toc"><li><img alt="" src="/images/down.gif" /> <a href="#motivation">Amaç</a></li> 40<li><img alt="" src="/images/down.gif" /> <a href="#overview">Genel Bakış</a></li> 41<li><img alt="" src="/images/down.gif" /> <a href="#simple">mod_vhost_alias ile Kitlesel Sanal Konaklar</a></li> 42<li><img alt="" src="/images/down.gif" /> <a href="#homepages">Basitleştirilmiş Kitlesel Sanal Konaklar</a></li> 43<li><img alt="" src="/images/down.gif" /> <a href="#combinations">Aynı Sunucuda Kişisel ve Kurumsal Sanal Konaklar</a></li> 44<li><img alt="" src="/images/down.gif" /> <a href="#ipbased">IP’ye dayalı sanal konakları daha verimli kılmak</a></li> 45<li><img alt="" src="/images/down.gif" /> <a href="#simple.rewrite"><code>mod_rewrite</code> ile Kitlesel Sanal Konaklar</a></li> 46</ul><ul class="seealso"><li><a href="#comments_section">Yorum</a></li></ul></div> 47<div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div> 48<div class="section"> 49<h2><a name="motivation" id="motivation">Amaç</a></h2> 50 51 <p>Burada açıklanan teknikler, <code>httpd.conf</code> dosyanızın 52 örnekteki gibi, aslında hemen hemen birbirinin aynı çok sayıda 53 <code><VirtualHost></code> bölümü içereceği zaman yapılacaklar ile 54 ilgilidir.</p> 55 56<pre class="prettyprint lang-config"><VirtualHost 111.22.33.44> 57 ServerName musteri-1.example.com 58 DocumentRoot /siteler/musteri-1/belgeler 59 ScriptAlias /cgi-bin/ /siteler/musteri-1/cgi-bin 60</VirtualHost> 61 62<VirtualHost 111.22.33.44> 63 ServerName musteri-2.example.com 64 DocumentRoot /siteler/musteri-2/belgeler 65 ScriptAlias /cgi-bin/ /siteler/musteri-2/cgi-bin 66</VirtualHost> 67 68<VirtualHost 111.22.33.44> 69 ServerName musteri-N.example.com 70 DocumentRoot /siteler/musteri-N/belgeler 71 ScriptAlias /cgi-bin/ /siteler/musteri-N/cgi-bin 72</VirtualHost></pre> 73 74 75 <p>İsteğimiz çok sayıda <code><VirtualHost></code> bölümünü devingen 76 olarak çalışan tek bir <code><VirtualHost></code> bölümüyle 77 değiştirmektir. Bunun elbette bazı getirileri olacaktır:</p> 78 79 <ol> 80 <li>Yapılandırma dosyanız küçüleceği için Apache daha çabuk 81 başlatılabilecek ve daha az bellek harcayacaktır. Muhtemelen daha da 82 önemlisi, küçülmüş bir yapılandırmanın bakımı da kolaylaşacağı için 83 hatalar da azalacaktır.</li> 84 85 <li>Yeni sanal konakların eklenmesi, DNS’de yeni girdiler oluşturmak ve 86 dosya sisteminde bununla ilgili dizinleri açmak dışında biraz daha 87 basit olacaktır; en azından Apache’yi yeniden yapılandırmak ve yeniden 88 başlatmak zorunda kalmayacaksınız.</li> 89 </ol> 90 91 <p>Ana götürüsü ise her sanal konak için ayrı birer günlük dosyasına sahip 92 olamayacak olmanızdır. Öte yandan, <a href="fd-limits.html">dosya 93 tanıtıcılarının sınırlı olması</a> nedeniyle bunu yapmayı zaten 94 istemezsiniz. Günlük kayıtları için bir <a href="/logs.html#piped">fifo 95 veya bir boru hattı</a> oluşturmak ve diğer uçta çalışan bir süreç 96 vasıtasıyla günlükleri müşterilere paylaştırmak daha iyidir. Böyle bir 97 işlemle ilgili bir örneği <a href="/programs/other.html#split-logfile">split-logfile</a> aracının belgesinde bulabilirsiniz.</p> 98 99</div><div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div> 100<div class="section"> 101<h2><a name="overview" id="overview">Genel Bakış</a></h2> 102 103 <p>Bir sanal konak iki bilgiye bakarak belirlenir: IP adresi ve HTTP 104 isteğindeki <code>Host:</code> başlığının içeriği. Devingen sanal 105 barındırma tekniği, isteği yerine getirmek için kullanılacak dosya 106 yoluna bu bilgiyi kendiliğinden girmek esasına dayanır. Bu, Apache httpd 107 ile <code class="module"><a href="/mod/mod_vhost_alias.html">mod_vhost_alias</a></code> modülünü kullanarak oldukça kolay 108 yapılabileceği gibi <a href="/rewrite/vhosts.html">mod_rewrite modülü 109 de kullanılabilir</a>.</p> 110 111 <p>Bu modüllerin her ikisi de öntanımlı olarak devre dışıdır. Bu tekniği 112 kullanmak isterseniz Apache httpd'yi yeniden yapılandırıp derleyerek bu 113 iki modülü etkin duruma getirmeniz gerekir.</p> 114 115 <p>Devingen sanal konağı normal bir sanal konak gibi göstermek için 116 bazı bilgileri istekten saptamak gerekir. Bunlardan en önemlisi, 117 httpd tarafından göreli URL’lerden normal URL’leri ve benzerlerini 118 üretmek için kullanılan sunucu ismidir. Sunucu ismi 119 <code>ServerName</code> yönergesi ile yapılandırılır ve CGI’ler 120 tarafından <code>SERVER_NAME</code> ortam değişkeni üzerinden 121 kullanılır. Çalışma anındaki asıl değer <code class="directive"><a href="/mod/core.html#usecanonicalname">UseCanonicalName</a></code> yönergesi tarafından denetlenir. 122 <code>UseCanonicalName Off</code> olduğunda sunucu ismi isteğin 123 <code>Host:</code> başlık alanından elde edilir. <code>UseCanonicalName 124 DNS</code> belirtilmişse, sunucu ismi, sanal konağın IP adresinden 125 tersine DNS sorgusu yapılarak elde edilir. Birincisi isme dayalı sanal 126 konaklar tarafından ikincisi ise IP’ye dayalı sanal konaklar tarafından 127 kullanılır. Eğer httpd, istekte <code>Host:</code> başlığının olmayışı 128 veya DNS sorgusunun başarısız olması sebebiyle sunucu ismini elde 129 edemezse son çare olarak <code>ServerName</code> yönergesinde yazılı 130 değeri kullanır.</p> 131 132 <p>Saptanan bilgilerden biri de <code>DocumentRoot</code> 133 yönergesi ile yapılandırılan belge kök dizini olup CGI’ler tarafından 134 <code>DOCUMENT_ROOT</code> ortam değişkeni üzerinden kullanılır. Normal 135 yapılandırmada <code class="module"><a href="/mod/core.html">core</a></code> modülü tarafından dosya isimlerini 136 URI’lere eşlerken kullanılır. Fakat sunucu devingen sanal konakları 137 kullanmak üzere yapılandırıldığında, eşleştirmeyi farklı yollardan yapan 138 başka bir modül devreye girer (<code class="module"><a href="/mod/mod_vhost_alias.html">mod_vhost_alias</a></code> veya 139 <code class="module"><a href="/mod/mod_rewrite.html">mod_rewrite</a></code>). <code>DOCUMENT_ROOT</code> ortam 140 değişkenine değerini atamaktan sorumlu olan bu iki modülden biri 141 kullanılmazsa CGI veya SSI belgeleri yanlış değerlerle üretilirler.</p> 142 143</div><div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div> 144<div class="section"> 145<h2><a name="simple" id="simple">mod_vhost_alias ile Kitlesel Sanal Konaklar</a></h2> 146 147 <p>Yukarıda <a href="#motivation">Amaç</a> bölümünde özetlenen sanal konak 148 düzenlemesinin <code>mod_vhost_alias</code> kullanarak gerçekleştirilmiş 149 halini içeren <code>httpd.conf</code> bölümü aşağıdadır.</p> 150 151<pre class="prettyprint lang-config"># sunucu ismini Host: başlığından elde edelim 152UseCanonicalName Off 153 154# Bu günlükleme biçiminde split-logfile aracı kullanılarak 155# sanal konak günlükleri ilk alana göre ayrıştırılabilir 156LogFormat "%V %h %l %u %t \"%r\" %s %b" vcommon 157CustomLog logs/access_log vcommon 158 159# istekleri yerine getirmek için kullanılacak 160# dosya isimlerine sunucu ismini ekleyelim 161VirtualDocumentRoot /siteler/%0/belgeler 162VirtualScriptAlias /siteler/%0/cgi-bin</pre> 163 164 165 <p>Bu yapılandırmayı IP’ye dayalı sanal konaklar için kullanmak isterseniz 166 <code>UseCanonicalName Off</code> yerine <code>UseCanonicalName 167 DNS</code> yazmanız yeterlidir. Böylece dosya ismine eklenecek konak 168 ismi sanal konağın IP adresinden türetilir. <code>%0</code> değişkeni, 169 <code>Host:</code> başlığı ile belirlenen istekteki sunucu isminin 170 ifadesidir.</p> 171 172 <p>Kullanım örnekleri için <code class="module"><a href="/mod/mod_vhost_alias.html">mod_vhost_alias</a></code>modülünün 173 belgesine bakınız.</p> 174 175</div><div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div> 176<div class="section"> 177<h2><a name="homepages" id="homepages">Basitleştirilmiş Kitlesel Sanal Konaklar</a></h2> 178 179 <p>Bu sistem, yukarıdaki yapılandırmanın bir ISS’nin sunucusuna 180 uyarlanmasından başka bir şey değildir. <code>%2</code> değişkenini 181 kullanarak, dosya isminde kullanmak üzere sunucu isminin alt dizgelerini 182 seçebiliriz, böylece, örneğin <code>www.user.example.com</code> belgeleri 183 <code>/home/user/www</code> dizininde bulunabilir. Farklı olarak her 184 sanal konak için bir tane değil hepsi için bir tane <code>cgi-bin</code> 185 olacaktır.</p> 186 187 <pre class="prettyprint lang-config">UseCanonicalName Off 188 189LogFormat "%V %h %l %u %t \"%r\" %s %b" vcommon 190CustomLog logs/access_log vcommon 191 192# sunucu ismini içerecek dosya isimlerini oluşturalım 193VirtualDocumentRoot /home/%2/www 194 195# ortak cgi-bin dizini 196ScriptAlias /cgi-bin/ /siteler/std-cgi/</pre> 197 198 199 <p><code class="module"><a href="/mod/mod_vhost_alias.html">mod_vhost_alias</a></code> belgesinde daha karmaşık 200 <code>VirtualDocumentRoot</code> örnekleri vardır.</p> 201 202</div><div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div> 203<div class="section"> 204<h2><a name="combinations" id="combinations">Aynı Sunucuda Kişisel ve Kurumsal Sanal Konaklar</a></h2> 205 206 <p>Daha karmaşık ayarlamalar yaparak httpd’nin normal 207 <code><VirtualHost></code> bölümlerini farklı kitlesel sanal konak 208 yapılandırmaları için kullanabilirsiniz. Örneğin, bireysel 209 müşterileriniz için bir IP adresiniz, kurumsal müşterileriniz için de 210 başka bir IP adresiniz olsun. Her biri için ayrı ayrı sanal konaklar 211 ayarlamak yerine aşağıdaki gibi bir yapılandırma kullanabilirsiniz:</p> 212 213<pre class="prettyprint lang-config">UseCanonicalName Off 214 215LogFormat "%V %h %l %u %t \"%r\" %s %b" vcommon 216 217<Directory /siteler/kurumsal> 218 Options FollowSymLinks 219 AllowOverride All 220</Directory> 221 222<Directory /siteler/bireysel> 223 Options FollowSymLinks 224 AllowOverride None 225</Directory> 226 227<VirtualHost 111.22.33.44> 228 ServerName kurumsal.example.com 229 230 CustomLog logs/access_log.kurumsal vcommon 231 232 VirtualDocumentRoot /siteler/kurumsal/%0/belgeler 233 VirtualScriptAlias /siteler/kurumsal/%0/cgi-bin 234</VirtualHost> 235 236<VirtualHost 111.22.33.45> 237 ServerName bireysel.example.com 238 239 CustomLog logs/access_log.bireysel vcommon 240 241 VirtualDocumentRoot /siteler/bireysel/%0/belgeler 242 ScriptAlias /cgi-bin/ /siteler/std-cgi/ 243</VirtualHost></pre> 244 245 246 <div class="note"><h3>Bilginize</h3> 247 <p>Eğer ilk <code><VirtualHost></code> bölümü bir <code class="directive"><a href="/mod/core.html#servername">ServerName</a></code> yönergesi içermezse ilgili IP 248 için ters DNS sorgusu yapılır. Eğer sorgudan elde edilen isim 249 sunucunun ismi değilse bu istenmeyen duruma bir çözüm olarak bir 250 bilgilendirme bölümü (örn, <code>ServerName bilgi.example.com</code>) 251 eklenebilir.</p> 252 </div> 253 254</div><div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div> 255<div class="section"> 256<h2><a name="ipbased" id="ipbased">IP’ye dayalı sanal konakları daha verimli kılmak</a></h2> 257 258 259 <p><a href="#simple">İlk örnekte</a> IP’ye dayalı sanal konaklar için 260 kullanılmak istenirse yapılandırmada neyin nasıl değiştirileceği 261 belirtilmişti. Her istek için ayrı bir DNS sorgusu gerekeceğinden bu 262 başarım düşmesine yol açar. DNS sorgusu ihtiyacını ortadan kaldırmak 263 için, bir çözüm olarak dosya sistemi, konak isimleri yerine IP 264 adreslerine göre düzenlenebilir. Günlük kayıtları da IP adreslerine göre 265 ayrıştırılacak şekilde ayarlanabilir.</p> 266 267<pre class="prettyprint lang-config"># Sunucu ismini IP adresinden ters DNS sorgusu ile elde edelim 268UseCanonicalName DNS 269 270# Günlük kayıtları IP adreslerine göre ayrıştırılabilsin 271LogFormat "%A %h %l %u %t \"%r\" %s %b" vcommon 272CustomLog logs/access_log vcommon 273 274# dosya isimleri IP adreslerini içersin 275VirtualDocumentRootIP /siteler/%0/belgeler 276VirtualScriptAliasIP /siteler/%0/cgi-bin</pre> 277 278 279</div><div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div> 280<div class="section"> 281<h2><a name="simple.rewrite" id="simple.rewrite"><code>mod_rewrite</code> ile Kitlesel Sanal Konaklar</a></h2> 282 283 284 <p>Kitlesel sanal barındırma <code class="module"><a href="/mod/mod_rewrite.html">mod_rewrite</a></code> modülü kullanarak 285 da gerçeklenebilir. Ya basitçe <code class="directive"><a href="/mod/mod_rewrite.html#rewriterule">RewriteRule</a></code> yönergelerini kullanırsınız ya da daha karmaşık 286 olarak sanal konak tanımlarınızı harici bir yerde tutar ve bunlara 287 <code class="directive"><a href="/mod/mod_rewrite.html#rewritemap">RewriteMap</a></code> yönergesini 288 kullanarak erişirsiniz. Bu teknikler ayrıntılı olarak 289 <a href="/rewrite/vhosts.html">rewrite belgelerinde</a> 290 açıklanmıştır.</p> 291 292</div></div> 293<div class="bottomlang"> 294<p><span>Mevcut Diller: </span><a href="/en/vhosts/mass.html" hreflang="en" rel="alternate" title="English"> en </a> | 295<a href="/fr/vhosts/mass.html" hreflang="fr" rel="alternate" title="Français"> fr </a> | 296<a href="/ko/vhosts/mass.html" hreflang="ko" rel="alternate" title="Korean"> ko </a> | 297<a href="/tr/vhosts/mass.html" title="Türkçe"> tr </a></p> 298</div><div class="top"><a href="#page-header"><img src="/images/up.gif" alt="top" /></a></div><div class="section"><h2><a id="comments_section" name="comments_section">Yorum</a></h2><div class="warning"><strong>Notice:</strong><br />This is not a Q&A section. Comments placed here should be pointed towards suggestions on improving the documentation or server, and may be removed again by our moderators if they are either implemented or considered invalid/off-topic. Questions on how to manage the Apache HTTP Server should be directed at either our IRC channel, #httpd, on Freenode, or sent to our <a href="http://httpd.apache.org/lists.html">mailing lists</a>.</div> 299<script type="text/javascript"><!--//--><![CDATA[//><!-- 300var comments_shortname = 'httpd'; 301var comments_identifier = 'http://httpd.apache.org/docs/2.4/vhosts/mass.html'; 302(function(w, d) { 303 if (w.location.hostname.toLowerCase() == "httpd.apache.org") { 304 d.write('<div id="comments_thread"><\/div>'); 305 var s = d.createElement('script'); 306 s.type = 'text/javascript'; 307 s.async = true; 308 s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier; 309 (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s); 310 } 311 else { 312 d.write('<div id="comments_thread">Comments are disabled for this page at the moment.<\/div>'); 313 } 314})(window, document); 315//--><!]]></script></div><div id="footer"> 316<p class="apache">Copyright 2014 The Apache Software Foundation.<br /><a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a> altında lisanslıdır.</p> 317<p class="menu"><a href="/mod/">Modüller</a> | <a href="/mod/directives.html">Yönergeler</a> | <a href="http://wiki.apache.org/httpd/FAQ">SSS</a> | <a href="/glossary.html">Terimler</a> | <a href="/sitemap.html">Site Haritası</a></p></div><script type="text/javascript"><!--//--><![CDATA[//><!-- 318if (typeof(prettyPrint) !== 'undefined') { 319 prettyPrint(); 320} 321//--><!]]></script> 322</body></html>