upload http
[bottlenecks.git] / rubbos / app / httpd-2.0.64 / docs / manual / dso.html.tr.utf8
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 Paylaşımlı Nesne Desteği - 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" />
12 <link href="./images/favicon.ico" rel="shortcut icon" /></head>
13 <body id="manual-page"><div id="page-header">
14 <p class="menu"><a href="./mod/">Modüller</a> | <a href="./mod/directives.html">Yönergeler</a> | <a href="./faq/">SSS</a> | <a href="./glossary.html">Terimler</a> | <a href="./sitemap.html">Site Haritası</a></p>
15 <p class="apache">Apache HTTP Sunucusu Sürüm 2.0</p>
16 <img alt="" src="./images/feather.gif" /></div>
17 <div class="up"><a href="./"><img title="&lt;-" alt="&lt;-" src="./images/left.gif" /></a></div>
18 <div id="path">
19 <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.0</a></div><div id="page-content"><div id="preamble"><h1>Devingen Paylaşımlı Nesne Desteği</h1>
20 <div class="toplang">
21 <p><span>Mevcut Diller: </span><a href="./en/dso.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
22 <a href="./es/dso.html" hreflang="es" rel="alternate" title="Español">&nbsp;es&nbsp;</a> |
23 <a href="./fr/dso.html" hreflang="fr" rel="alternate" title="Français">&nbsp;fr&nbsp;</a> |
24 <a href="./ja/dso.html" hreflang="ja" rel="alternate" title="Japanese">&nbsp;ja&nbsp;</a> |
25 <a href="./ko/dso.html" hreflang="ko" rel="alternate" title="Korean">&nbsp;ko&nbsp;</a> |
26 <a href="./tr/dso.html" title="Türkçe">&nbsp;tr&nbsp;</a></p>
27 </div>
28
29     <p>Apache HTTP Sunucusu modüler bir program olup, yönetici sadece bir
30       grup modül seçerek sunucuya işlevsellik ekleyebilir. Modüller sunucunun
31       derlenmesi sırasında doğrudan <code class="program"><a href="./programs/httpd.html">httpd</a></code> programının
32       içinde derlenebileceği gibi Devingen Paylaşımlı Nesneler (DSO - Dynamic
33       Shared Object) halinde <code class="program"><a href="./programs/httpd.html">httpd</a></code> programından ayrı
34       olarak da derlenebilir. DSO modülleri sunucunun derlenmesi sırasında
35       derlenebileceği gibi ayrı olarak derlenip daha sonra Apache Eklenti
36       Aracı (Apache Extension Tool) <code class="program"><a href="./programs/apxs.html">apxs</a></code> programı
37       kullanılarak sunucuya eklenebilir.</p>
38
39     <p>Bu belgede DSO modüllerinin kullanımının yanında teorisine de
40       değinilecektir.</p>
41   </div>
42 <div id="quickview"><ul id="toc"><li><img alt="" src="./images/down.gif" /> <a href="#implementation">Gerçeklenim</a></li>
43 <li><img alt="" src="./images/down.gif" /> <a href="#usage">Kullanıcı Özeti</a></li>
44 <li><img alt="" src="./images/down.gif" /> <a href="#background">Artalan Bilgisi</a></li>
45 <li><img alt="" src="./images/down.gif" /> <a href="#advantages">Getiriler ve Götürüler</a></li>
46 </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="implementation" id="implementation">Gerçeklenim</a></h2>
50
51 <table class="related"><tr><th>İlgili Modüller</th><th>İlgili Yönergeler</th></tr><tr><td><ul><li><code class="module"><a href="./mod/mod_so.html">mod_so</a></code></li></ul></td><td><ul><li><code class="directive"><a href="./mod/mod_so.html#loadmodule">LoadModule</a></code></li></ul></td></tr></table>
52
53     <p>Apache modüllerini yüklemek için DSO desteği, Apache çekirdeğine
54       durağan olarak ilintilenerek derlenmiş olan <code class="module"><a href="./mod/mod_so.html">mod_so</a></code>
55       adında bir modül tarafından sağlanır. <code class="module"><a href="./mod/core.html">core</a></code> modülünden
56       başka, bir DSO modülü olamayan tek modül <code class="module"><a href="./mod/mod_so.html">mod_so</a></code>
57       modülüdür. Hemen hemen tüm diğer Apache modülleri <a href="install.html">kurulum belgesinde</a> de açıklandığı gibi
58       <code class="program"><a href="./programs/configure.html">configure</a></code> betiğinin
59       <code>--enable-<em>modül</em>=shared</code> seçeneği her modül için ayrı
60       ayrı belirtilerek birer DSO modülü olarak derlenebilir. Derlenmiş
61       modüller <code>mod_filanca.so</code> biçeminde birer DSO ismi alırlar ve
62       her biri istenirse <code>httpd.conf</code> dosyasında
63       <code class="module"><a href="./mod/mod_so.html">mod_so</a></code> modülünün <code class="directive"><a href="./mod/mod_so.html#loadmodule">LoadModule</a></code> yönergesiyle belirtilerek sunucu başlatılırken
64       veya yeniden başlatılırken sunucuya yüklenebilir.</p>
65
66     <p>Apache modülleri için (özellikle üçüncü parti modüller için) DSO
67       dosyası üretimini kolaylaştırmak amacıyla <code class="program"><a href="./programs/apxs.html">apxs</a></code>
68       (<dfn>APache eXtenSion</dfn>) adında yeni bir destek programı
69       kullanılmaktadır. Bu program Apache modüllerini Apache kaynak ağacından
70       ayrı olarak derlemek için kullanılabilir. Fikir basittir: Apache
71       derlenirken DSO dosyalarını derlemek için platforma bağımlı
72       derleyici ve ilintileyici seçenekleri <code class="program"><a href="./programs/apxs.html">apxs</a></code>
73       programının içine konur ve Apache’nin <code>make install</code> ile
74       kurulumu sırasında Apache C başlık dosyaları da kurulur. Böylece
75       kullanıcı Apache dağıtımının kaynak ağacına ihtiyaç duymadan ve
76       platforma bağımlı derleyici ve ilintileyici seçeneklerini bilmek zorunda
77       kalmadan istediği Apache modülünü <code class="program"><a href="./programs/apxs.html">apxs</a></code> programını
78       kullanarak derleyebilir.</p>
79 </div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
80 <div class="section">
81 <h2><a name="usage" id="usage">Kullanıcı Özeti</a></h2>
82
83     <p>Apache 2.x’in DSO özelliklerine bir giriş olarak burada kısaca bir
84       bilgi vermekle yetinilecektir:</p>
85
86     <ol>
87       <li>Kaynak dosyası <code>mod_filanca.c</code> dosyasında dağıtılan bir
88         <em>özgün</em> Apache modülünü <code>mod_filanca.so</code> isminde bir
89         DSO modülü olarak derlemek ve kurmak için şöyle yapılır:
90
91 <div class="example"><p><code>
92   $ ./configure --prefix=/kurulum/yeri --enable-filanca=shared<br />
93   $ make install
94 </code></p></div>
95       </li>
96
97       <li>Kaynak dosyası <code>mod_filanca.c</code> dosyasında dağıtılan bir
98         <em>üçüncü parti</em> Apache modülünü <code>mod_filanca.so</code>
99         isminde bir DSO modülü olarak derlemek ve kurmak için şöyle yapılır:
100
101 <div class="example"><p><code>
102 $ ./configure --add-module=<var>modül-türü</var>:/bir/kurulum/yeri/mod_filanca.c \<br />
103 <span class="indent">
104   --enable-filanca=shared<br />
105 </span>
106 $ make install
107 </code></p></div>
108       </li>
109
110       <li>Paylaşımlı modülleri <em>sonradan kurmak için</em> Apache şöyle
111         yapılandırılır:
112
113 <div class="example"><p><code>
114 $ ./configure --enable-so<br />
115 $ make install
116 </code></p></div>
117       </li>
118
119       <li>Kaynak dosyası <code>mod_filanca.c</code> dosyasında dağıtılan bir
120         <em>üçüncü parti</em> Apache modülü <code>mod_filanca.so</code>
121         isminde bir DSO modülü olarak Apache kaynak ağacının dışında
122         <code class="program"><a href="./programs/apxs.html">apxs</a></code> kullanarak derlemek ve kurmak için şöyle
123         yapılır:
124
125 <div class="example"><p><code>
126 $ cd /bir/kurulum/yeri<br />
127 $ apxs -c mod_filanca.c<br />
128 $ apxs -i -a -n filanca mod_filanca.la
129 </code></p></div>
130       </li>
131     </ol>
132
133     <p>Tüm durumlarda derlenen paylaşımlı modülü Apache’nin etkin kılabilmesi
134       için <code>httpd.conf</code> dosyasında o modül için bir <code class="directive"><a href="./mod/mod_so.html#loadmodule">LoadModule</a></code> yönergesi bulunmalıdır.</p>
135 </div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
136 <div class="section">
137 <h2><a name="background" id="background">Artalan Bilgisi</a></h2>
138
139     <p>Günümüzün Unix türevlerinde var olan şık bir mekanizma sayesinde
140       çalıştırılabilir bir programın adres uzayına çalışma anında yüklenmek
141       veya ilintilenmek üzere <em>Devingen Paylaşımlı Nesneler</em> (DSO -
142       Dynamic Shared Object) adı verilen, özel bir biçem kullanarak kodlanmış
143       program parçaları oluşturulabilir.</p>
144
145     <p>Bu yükleme normalde iki yolla yapılabilir: Ya çalıştırılabilir
146       programın başlatılması sırasında yüklenen <code>ld.so</code> adlı bir
147       sistem programınının devingen olarak yüklenmesi ile ya da
148       çalıştırılabilir programın içinden Unix yükleyicisine programsal sistem
149       arayüzü sağlayan <code>dlopen()/dlsym()</code> sistem çağrılarının elle
150       yapılması suretiyle.</p>
151
152     <p>İlk yöntemde kullanılan DSO’lara genelde <em>paylaşımlı
153       kütüphaneler</em> veya <em>DSO kütüphaneleri</em> adı verilir ve
154       bunların dosyaları <code>libfilanca.so</code> veya
155       <code>libfilanca.so.1.2</code> biçiminde isimlendirilir. Belli bir
156       sistem dizininde (normalde <code>/usr/lib</code>) bulunurlar ve derleme
157       sırasında ilintileyici komutuna <code>-lfilanca</code> şeklinde
158       belirtilerek çalıştırılabilir programla ilintilenirler. Doğrudan
159       çalıştırılabilir koda eklenen bu kodlar Unix yükleyicisinin programın
160       başlatılması sırasında kütüphaneyi <code>/usr/lib</code> altında
161       <code>libfilanca.so</code> adıyla bulabilmesini sağlar. Kütüphanelerin
162       aranacağı yerler ya <code>-R</code> gibi bir ilintileyici seçeneği ile
163       koda eklenir ya da arama yolları <code>LD_LIBRARY_PATH</code> ortam
164       değişkeni aracılığıyla yapılandırılır. Böylece çalıştırılabilir
165       programda henüz çözümlenmemiş simgeler DSO içinde bulunarak
166       çözümlenebilir.</p>
167
168     <p>Çalıştırılabilir program içindeki simgelere normalde DSO içinden
169       atıfta bulunulmaz (genel kod kütüphanesinin başka programlarca da
170       kullanılması nedeniyle). Bu bakımdan DSO tarafında böyle bir çözümleme
171       yapılmaz. Çalıştırılabilir program da DSO’daki simgeleri kendisi
172       çözümlemeye uğraşmaz, bu işlemlerden tamamen Unix yükleyicisi
173       (<code>ld.so</code>) sorumludur. (Aslında, <code>ld.so</code>’yu
174       çağıracak kod, her çalıştırılabilir programın içine ilintilenmiş
175       (durağan değil) başlatma kodunun bir parçasıdır.) Programlar tarafından
176       ortaklaşa kullanılan kütüphanelerin devingen olarak yüklenmesinin sebebi
177       basittir: Kütüphane kodu <code>libc.so</code> gibi bir sistem
178       kütüphanesine bir kere kaydedilip disk alanından yer kazanılmış
179       olur.</p>
180
181     <p>İkinci yöntemde kullanılan DSO’lara yine <em>paylaşımlı
182       kütüphaneler</em> veya <em>DSO kütüphaneleri</em> adı verilir fakat
183       bunların dosyaları geçerli kabule göre <code>filanca.so</code> gibi
184       isimlendirilse de genelde keyfi olarak seçilen bir dosya uzantısı
185       kullanılarak isimlendirilirler. Bu dosyalar genellikle programa özel bir
186       dizinde dururlar ve bu dosyaları kullanacak olan çalıştırılabilir
187       programla aralarında özdevimli olarak bağ kurulmamıştır. Bunun yerine,
188       çalıştırılabilir program DSO’yu çalışma anında <code>dlopen()</code>
189       sayesinde kendi adres uzayına ekler. Çalıştırılabilir program için
190       DSO’daki simgeler bu sırada çözümlenmez. Özdevimli olarak devreye
191       giren Unix yükleyicisi, (varsa) artakalan simgeleri, çalıştırılabilir
192       ihraç edilen simge kümelerini (ve özellikle her yerde hazır ve nazır
193       <code>libc.so</code> içindeki tüm simgeleri) kullanarak çözümler. Bu
194       yolla DSO, çalıştırılabilir programın simge kümesi bilgilerini sanki
195       kendisine baştan durağan olarak ilintilenmiş gibi ulaşabilir.</p>
196
197     <p>Son olarak, DSO’nun programlama arayüzünün getirilerinden yararlanmak
198       amacıyla çalıştırılabilir program, daha sonra dağıtım tabloları vb.
199       yerlerde kullanmak üzere <code>dlsym()</code> üzerinden DSO’daki belli
200       simgeleri çözümlemek zorundadır. Başka bir deyişle: Çalıştırılabilir
201       program ihtiyaç duyduğu her simgeyi kullanmak için kendisi çözümleme
202       yapmak zorundadır. Böyle bir mekanizmanın getirisi, programın isteğe
203       bağlı parçalarının gerekli olana kadar yüklenmemesidir (böylece daha az
204       bellek alanı kullanılır). Gerektiği zaman programın işlevselliğini
205       arttırmak amacıyla bu parçalar devingen olarak programa
206       yüklenebilir.</p>
207
208     <p>DSO mekanizmasının bu basit gibi görünen işleyişinde zorluk içeren bir
209       adım şudur (başkaları da olabilir): Bir programın işlevselliğini
210       genişletmek için DSO kullanılırken (ikinci yöntem) çalıştırılabilir
211       programdan DSO için simgelerin çözümlenmesi.  Zorluğun sebebi,
212       "tersine çözümleme" yapılmasıdır; çalıştırılabilir programın simge
213       kümesindeki DSO simgeleri kütüphane tasarımına aykırı bir şekilde
214       çözümlenir ve bu uygulama tüm platformlarda hazır olarak
215       desteklenmediği gibi standartlaşmış da değildir. Geçer uygulamada
216       çalıştırılabilir programın evrensel simgeleri çoğunlukla yeniden dışa
217       verilmez ve bu bakımdan bir DSO içinde kullanılmaları uygun değildir.
218       Esas sorun, çalıştırılabilir bir programın işlevselliğini çalışma
219       anında genişletmek için DSO kullanımı sırasında ilintileyicinin tüm
220       evrensel simgeleri dışa vermesini zorlamanın bir yolunu bulmaktır.</p>
221
222     <p>Paylaşımlı kütüphane yaklaşımı bu bakımdan türünün tek örneğidir,
223       çünkü DSO mekanizması özellikle bunun için tasarlanmıştır, dolayısıyla
224       işletim sisteminin sağladığı hemen hemen tüm kütüphaneler için
225       kullanılabilir. Diğer taraftan, bir programın işlevselliğini
226       genişletmek için paylaşımlı nesne kullanımı çoğu program tarafından
227       kullanılan bir şey değildir.</p>
228
229     <p>1998 itibariyle, DSO nesneleriyle çalışma anında çalıştırılabilir
230       program işlevselliğini genişleten başlıca birkaç yazılım paketi vardır:
231       Perl 5 (XS mekanizması ve DynaLoader modülü üzerinden), Netscape
232       Sunucusu, vd. 1.3 sürümünden itibaren Apache de bu gruba katıldı. Çünkü
233       Apache, modül kavramını zaten program işlevselliğini genişletmek için
234       kullanıyordu ve temel işlevselliğine dış modülleri ilintilemek için
235       dahili olarak dağıtım listesine dayalı bir yaklaşım kullanmaktaydı.
236       Dolayısıyla Apache, modüllerini çalışma anında yüklemek için DSO
237       kullanmaya baştan yazgılıydı.</p>
238 </div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
239 <div class="section">
240 <h2><a name="advantages" id="advantages">Getiriler ve Götürüler</a></h2>
241
242     <p>Yukarıda bahsedilen DSO’ya dayalı özelliklerin getirileri
243       şunlardır:</p>
244
245     <ul>
246       <li>Sunucu paketi çalışma anında daha esnektir çünkü, asıl sunucuyu
247         oluşturan parçalar derleme sırasında <code class="program"><a href="./programs/configure.html">configure</a></code>
248         seçenekleriyle birleştirilmek yerine <code>httpd.conf</code> içinde
249         <code class="directive"><a href="./mod/mod_so.html#loadmodule">LoadModule</a></code> yönergeleri
250         sayesinde çalışma anında birleştirilebilmektedir. Bu yolla, örneğin
251         tek bir Apache kurulumuyla birbirinden farklı yapılandırmalara sahip
252         çok sayıda sunucu çalıştırmak mümkündür. (standart veya SSL sürümü;
253         basitleştirilmiş veya güçlendirilmiş sürümü [mod_perl, PHP3],
254         vs.)</li>
255
256       <li>Sunucu paketi kurulumdan sonra bile üçüncü parti modüllerle kolayca
257         genişletilebilir. Bu özellikle, bir Apache temel paketinin yanında
258         PHP3, mod_perl, mod_fastcgi gibi ek paketler oluşturan paket
259         dağıtıcılarına büyük yarar sağlar.</li>
260
261       <li>Yeni Apache modülleri için daha kolay prototip geliştirilebilir:
262         Modül kaynak kodunu DSO/<code class="program"><a href="./programs/apxs.html">apxs</a></code> çifti sayesinde
263         Apache kaynak ağacının dışında derleyip modülün yeni bir sürümünü bir
264         <code>apxs -i</code> komutunun ardından <code>apachectl
265         restart</code> yaparak çalışan bir Apache sunucusunda denemek daha
266         kolay hale getirilmiştir.</li>
267     </ul>
268
269     <p>DSO kullanımının götürüleri ise şunlardır:</p>
270
271     <ul>
272       <li>Her platformda hazır olarak desteklenmeme: Tüm işletim sistemleri
273         bir programa devingen olarak kod yükleme becerisine sahip
274         olmadığından DSO mekanizması her platformda kullanılamaz.</li>
275
276       <li>İlk yüklemede %20 yavaşlama: Unix yükleyicisi simgeleri çözümlemek
277         zorunda olduğundan sunucu ilk başlatılırken yaklaşık %20 daha yavaş
278         faaliyete geçer.</li>
279
280       <li>Çalışma sırasında % 5 yavaşlama: Konumdan bağımsız kodun (PIC -
281         Position Independent Code) göreli adresleme için karmaşık oyunlara
282         girmesi ve bunun mutlak adresleme kadar hızlı olmaması nedeniyle
283         sunucu bazı platformlarda çalışma anında yaklaşık %5 daha yavaş
284         çalışabilir.</li>
285
286       <li>DSO'nun tüm modüller için uygun olmaması: DSO modülleri bazı
287         platformlarda diğer DSO temelli kütüphanelerle ilintilenemediğinden
288         (<code>ld -lfilanca</code>) DSO mekanizmasını tüm modül türleri için
289         kullanamazsınız (örneğin a.out temelli platformlar bu işlevselliği
290         ELF temelli platformlar kadar iyi sağlamaz). Başka bir deyişle, DSO
291         dosyaları olarak derlenmiş modüllerin kullanabileceği simgeler ya
292         Apache temel kodunda vardır ya Apache temel kodunun kullandığı C
293         kütüphanesinde (<code>libc</code>) ve diğer durağan ve devingen
294         kütüphanelerde vardır ya da konumdan bağımsız kodu içeren
295         durağan kütüphane arşivlerinde (<code>libfilanca.a</code>)
296         vardır. Diğer modülleri kullanmak için tek şansınız ya Apache
297         çekirdeğinin modüle bir atıf içermesini sağlamak ya da modül kodunu
298         <code>dlopen()</code> vasıtasıyla yüklemektir.</li>
299     </ul>
300
301 </div></div>
302 <div class="bottomlang">
303 <p><span>Mevcut Diller: </span><a href="./en/dso.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
304 <a href="./es/dso.html" hreflang="es" rel="alternate" title="Español">&nbsp;es&nbsp;</a> |
305 <a href="./fr/dso.html" hreflang="fr" rel="alternate" title="Français">&nbsp;fr&nbsp;</a> |
306 <a href="./ja/dso.html" hreflang="ja" rel="alternate" title="Japanese">&nbsp;ja&nbsp;</a> |
307 <a href="./ko/dso.html" hreflang="ko" rel="alternate" title="Korean">&nbsp;ko&nbsp;</a> |
308 <a href="./tr/dso.html" title="Türkçe">&nbsp;tr&nbsp;</a></p>
309 </div><div id="footer">
310 <p class="apache">Copyright 2009 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>
311 <p class="menu"><a href="./mod/">Modüller</a> | <a href="./mod/directives.html">Yönergeler</a> | <a href="./faq/">SSS</a> | <a href="./glossary.html">Terimler</a> | <a href="./sitemap.html">Site Haritası</a></p></div>
312 </body></html>