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="&lt;-" alt="&lt;-" src="/images/left.gif" /></a></div>
21<div id="path">
22<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Sunucusu</a> &gt; <a href="http://httpd.apache.org/docs/">Belgeleme</a> &gt; <a href="../">Sürüm 2.4</a> &gt; <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">&nbsp;en&nbsp;</a> |
25<a href="/fr/vhosts/mass.html" hreflang="fr" rel="alternate" title="Français">&nbsp;fr&nbsp;</a> |
26<a href="/ko/vhosts/mass.html" hreflang="ko" rel="alternate" title="Korean">&nbsp;ko&nbsp;</a> |
27<a href="/tr/vhosts/mass.html" title="Türkçe">&nbsp;tr&nbsp;</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>&lt;VirtualHost&gt;</code> bölümü içereceği zaman yapılacaklar ile
54      ilgilidir.</p>
55
56<pre class="prettyprint lang-config">&lt;VirtualHost 111.22.33.44&gt;
57    ServerName                 musteri-1.example.com
58    DocumentRoot        /siteler/musteri-1/belgeler
59    ScriptAlias  /cgi-bin/  /siteler/musteri-1/cgi-bin
60&lt;/VirtualHost&gt;
61
62&lt;VirtualHost 111.22.33.44&gt;
63    ServerName                 musteri-2.example.com
64    DocumentRoot        /siteler/musteri-2/belgeler
65    ScriptAlias  /cgi-bin/  /siteler/musteri-2/cgi-bin
66&lt;/VirtualHost&gt;
67
68&lt;VirtualHost 111.22.33.44&gt;
69    ServerName                 musteri-N.example.com
70    DocumentRoot        /siteler/musteri-N/belgeler
71    ScriptAlias  /cgi-bin/  /siteler/musteri-N/cgi-bin
72&lt;/VirtualHost&gt;</pre>
73
74
75    <p>İsteğimiz çok sayıda <code>&lt;VirtualHost&gt;</code> bölümünü devingen
76      olarak çalışan tek bir <code>&lt;VirtualHost&gt;</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>&lt;VirtualHost&gt;</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&lt;Directory /siteler/kurumsal&gt;
218    Options FollowSymLinks
219    AllowOverride All
220&lt;/Directory&gt;
221
222&lt;Directory /siteler/bireysel&gt;
223    Options FollowSymLinks
224    AllowOverride None
225&lt;/Directory&gt;
226
227&lt;VirtualHost 111.22.33.44&gt;
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&lt;/VirtualHost&gt;
235
236&lt;VirtualHost 111.22.33.45&gt;
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&lt;/VirtualHost&gt;</pre>
244
245
246    <div class="note"><h3>Bilginize</h3>
247      <p>Eğer ilk <code>&lt;VirtualHost&gt;</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">&nbsp;en&nbsp;</a> |
295<a href="/fr/vhosts/mass.html" hreflang="fr" rel="alternate" title="Français">&nbsp;fr&nbsp;</a> |
296<a href="/ko/vhosts/mass.html" hreflang="ko" rel="alternate" title="Korean">&nbsp;ko&nbsp;</a> |
297<a href="/tr/vhosts/mass.html" title="Türkçe">&nbsp;tr&nbsp;</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&amp;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>