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