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