diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-27 06:33:50 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-27 06:33:50 +0000 |
commit | fe39ffb8b90ae4e002ed73fe98617cd590abb467 (patch) | |
tree | b80e5956907d8aeaaffe4e4f0c068c0e6157ce8b /docs/manual/dso.html | |
parent | Initial commit. (diff) | |
download | apache2-fe39ffb8b90ae4e002ed73fe98617cd590abb467.tar.xz apache2-fe39ffb8b90ae4e002ed73fe98617cd590abb467.zip |
Adding upstream version 2.4.56.upstream/2.4.56upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to '')
-rw-r--r-- | docs/manual/dso.html | 21 | ||||
-rw-r--r-- | docs/manual/dso.html.en | 332 | ||||
-rw-r--r-- | docs/manual/dso.html.fr.utf8 | 356 | ||||
-rw-r--r-- | docs/manual/dso.html.ja.utf8 | 330 | ||||
-rw-r--r-- | docs/manual/dso.html.ko.euc-kr | 306 | ||||
-rw-r--r-- | docs/manual/dso.html.tr.utf8 | 329 |
6 files changed, 1674 insertions, 0 deletions
diff --git a/docs/manual/dso.html b/docs/manual/dso.html new file mode 100644 index 0000000..ea80dcf --- /dev/null +++ b/docs/manual/dso.html @@ -0,0 +1,21 @@ +# GENERATED FROM XML -- DO NOT EDIT + +URI: dso.html.en +Content-Language: en +Content-type: text/html; charset=UTF-8 + +URI: dso.html.fr.utf8 +Content-Language: fr +Content-type: text/html; charset=UTF-8 + +URI: dso.html.ja.utf8 +Content-Language: ja +Content-type: text/html; charset=UTF-8 + +URI: dso.html.ko.euc-kr +Content-Language: ko +Content-type: text/html; charset=EUC-KR + +URI: dso.html.tr.utf8 +Content-Language: tr +Content-type: text/html; charset=UTF-8 diff --git a/docs/manual/dso.html.en b/docs/manual/dso.html.en new file mode 100644 index 0000000..85ffc30 --- /dev/null +++ b/docs/manual/dso.html.en @@ -0,0 +1,332 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head> +<meta content="text/html; charset=UTF-8" http-equiv="Content-Type" /> +<!-- + XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX + This file is generated from xml source: DO NOT EDIT + XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX + --> +<title>Dynamic Shared Object (DSO) Support - Apache HTTP Server Version 2.4</title> +<link href="./style/css/manual.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" /> +<link href="./style/css/manual-loose-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" /> +<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" /> +<script src="./style/scripts/prettify.min.js" type="text/javascript"> +</script> + +<link href="./images/favicon.ico" rel="shortcut icon" /></head> +<body id="manual-page"><div id="page-header"> +<p class="menu"><a href="./mod/">Modules</a> | <a href="./mod/directives.html">Directives</a> | <a href="http://wiki.apache.org/httpd/FAQ">FAQ</a> | <a href="./glossary.html">Glossary</a> | <a href="./sitemap.html">Sitemap</a></p> +<p class="apache">Apache HTTP Server Version 2.4</p> +<img alt="" src="./images/feather.png" /></div> +<div class="up"><a href="./"><img title="<-" alt="<-" src="./images/left.gif" /></a></div> +<div id="path"> +<a href="http://www.apache.org/">Apache</a> > <a href="http://httpd.apache.org/">HTTP Server</a> > <a href="http://httpd.apache.org/docs/">Documentation</a> > <a href="./">Version 2.4</a></div><div id="page-content"><div id="preamble"><h1>Dynamic Shared Object (DSO) Support</h1> +<div class="toplang"> +<p><span>Available Languages: </span><a href="./en/dso.html" title="English"> en </a> | +<a href="./fr/dso.html" hreflang="fr" rel="alternate" title="Français"> fr </a> | +<a href="./ja/dso.html" hreflang="ja" rel="alternate" title="Japanese"> ja </a> | +<a href="./ko/dso.html" hreflang="ko" rel="alternate" title="Korean"> ko </a> | +<a href="./tr/dso.html" hreflang="tr" rel="alternate" title="Türkçe"> tr </a></p> +</div> + + <p>The Apache HTTP Server is a modular program where the + administrator can choose the functionality to include in the + server by selecting a set of modules. + Modules will be compiled as Dynamic Shared Objects (DSOs) + that exist separately from the main <code class="program"><a href="./programs/httpd.html">httpd</a></code> + binary file. DSO modules may be compiled at the time the server + is built, or they may be compiled and added at a later time + using the Apache Extension Tool (<code class="program"><a href="./programs/apxs.html">apxs</a></code>).</p> + <p>Alternatively, the modules can be statically compiled into + the <code class="program"><a href="./programs/httpd.html">httpd</a></code> binary when the server is built.</p> + + <p>This document describes how to use DSO modules as well as + the theory behind their use.</p> + </div> +<div id="quickview"><a href="https://www.apache.org/foundation/contributing.html" class="badge"><img src="https://www.apache.org/images/SupportApache-small.png" alt="Support Apache!" /></a><ul id="toc"><li><img alt="" src="./images/down.gif" /> <a href="#implementation">Implementation</a></li> +<li><img alt="" src="./images/down.gif" /> <a href="#usage">Usage Summary</a></li> +<li><img alt="" src="./images/down.gif" /> <a href="#background">Background</a></li> +<li><img alt="" src="./images/down.gif" /> <a href="#advantages">Advantages and Disadvantages</a></li> +</ul><h3>See also</h3><ul class="seealso"><li><a href="#comments_section">Comments</a></li></ul></div> +<div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div> +<div class="section"> +<h2><a name="implementation" id="implementation">Implementation</a></h2> + +<table class="related"><tr><th>Related Modules</th><th>Related Directives</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> + + <p>The DSO support for loading individual Apache httpd modules is based + on a module named <code class="module"><a href="./mod/mod_so.html">mod_so</a></code> which must be statically + compiled into the Apache httpd core. It is the only module besides + <code class="module"><a href="./mod/core.html">core</a></code> which cannot be put into a DSO + itself. Practically all other distributed Apache httpd modules will then + be placed into a DSO. After a module is compiled into a DSO named + <code>mod_foo.so</code> you can use <code class="module"><a href="./mod/mod_so.html">mod_so</a></code>'s <code class="directive"><a href="./mod/mod_so.html#loadmodule">LoadModule</a></code> directive in your + <code>httpd.conf</code> file to load this module at server startup + or restart.</p> + <p>The DSO builds for individual modules can be disabled via + <code class="program"><a href="./programs/configure.html">configure</a></code>'s <code>--enable-mods-static</code> + option as discussed in the <a href="install.html">install + documentation</a>.</p> + + <p>To simplify this creation of DSO files for Apache httpd modules + (especially for third-party modules) a support program + named <code class="program"><a href="./programs/apxs.html">apxs</a></code> (<dfn>APache + eXtenSion</dfn>) is available. It can be used to build DSO based + modules <em>outside of</em> the Apache httpd source tree. The idea is + simple: When installing Apache HTTP Server the <code class="program"><a href="./programs/configure.html">configure</a></code>'s + <code>make install</code> procedure installs the Apache httpd C + header files and puts the platform-dependent compiler and + linker flags for building DSO files into the <code class="program"><a href="./programs/apxs.html">apxs</a></code> + program. This way the user can use <code class="program"><a href="./programs/apxs.html">apxs</a></code> to compile + his Apache httpd module sources without the Apache httpd distribution + source tree and without having to fiddle with the + platform-dependent compiler and linker flags for DSO + support.</p> +</div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div> +<div class="section"> +<h2><a name="usage" id="usage">Usage Summary</a></h2> + + <p>To give you an overview of the DSO features of Apache HTTP Server 2.x, + here is a short and concise summary:</p> + + <ol> + <li> + <p>Build and install a <em>distributed</em> Apache httpd module, say + <code>mod_foo.c</code>, into its own DSO + <code>mod_foo.so</code>:</p> + +<div class="example"><p><code> +$ ./configure --prefix=/path/to/install --enable-foo<br /> +$ make install +</code></p></div> + </li> + + <li> + <p>Configure Apache HTTP Server with all modules enabled. Only a basic + set will be loaded during server startup. You can change the set of loaded + modules by activating or deactivating the <code class="directive"><a href="./mod/mod_so.html#loadmodule">LoadModule</a></code> directives in + <code>httpd.conf</code>.</p> + +<div class="example"><p><code> +$ ./configure --enable-mods-shared=all<br /> +$ make install +</code></p></div> + </li> + + <li> + <p>Some modules are only useful for developers and will not be build. + when using the module set <em>all</em>. To build all available modules + including developer modules use <em>reallyall</em>. In addition the + <code class="directive"><a href="./mod/mod_so.html#loadmodule">LoadModule</a></code> directives for all + built modules can be activated via the configure option + <code>--enable-load-all-modules</code>.</p> + +<div class="example"><p><code> +$ ./configure --enable-mods-shared=reallyall --enable-load-all-modules<br /> +$ make install +</code></p></div> + </li> + + <li> + Build and install a <em>third-party</em> Apache httpd module, say + <code>mod_foo.c</code>, into its own DSO + <code>mod_foo.so</code> <em>outside of</em> the Apache httpd + source tree using <code class="program"><a href="./programs/apxs.html">apxs</a></code>: + +<div class="example"><p><code> +$ cd /path/to/3rdparty<br /> +$ apxs -cia mod_foo.c +</code></p></div> + </li> + </ol> + + <p>In all cases, once the shared module is compiled, you must + use a <code class="directive"><a href="./mod/mod_so.html#loadmodule">LoadModule</a></code> + directive in <code>httpd.conf</code> to tell Apache httpd to activate + the module.</p> + + <p>See the <a href="programs/apxs.html">apxs documentation</a> for more details.</p> +</div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div> +<div class="section"> +<h2><a name="background" id="background">Background</a></h2> + + <p>On modern Unix derivatives there exists a mechanism + called dynamic linking/loading of <em>Dynamic Shared + Objects</em> (DSO) which provides a way to build a piece of + program code in a special format for loading it at run-time + into the address space of an executable program.</p> + + <p>This loading can usually be done in two ways: automatically + by a system program called <code>ld.so</code> when an + executable program is started or manually from within the + executing program via a programmatic system interface to the + Unix loader through the system calls + <code>dlopen()/dlsym()</code>.</p> + + <p>In the first way the DSO's are usually called <em>shared + libraries</em> or <em>DSO libraries</em> and named + <code>libfoo.so</code> or <code>libfoo.so.1.2</code>. They + reside in a system directory (usually <code>/usr/lib</code>) + and the link to the executable program is established at + build-time by specifying <code>-lfoo</code> to the linker + command. This hard-codes library references into the executable + program file so that at start-time the Unix loader is able to + locate <code>libfoo.so</code> in <code>/usr/lib</code>, in + paths hard-coded via linker-options like <code>-R</code> or in + paths configured via the environment variable + <code>LD_LIBRARY_PATH</code>. It then resolves any (yet + unresolved) symbols in the executable program which are + available in the DSO.</p> + + <p>Symbols in the executable program are usually not referenced + by the DSO (because it's a reusable library of general code) + and hence no further resolving has to be done. The executable + program has no need to do anything on its own to use the + symbols from the DSO because the complete resolving is done by + the Unix loader. (In fact, the code to invoke + <code>ld.so</code> is part of the run-time startup code which + is linked into every executable program which has been bound + non-static). The advantage of dynamic loading of common library + code is obvious: the library code needs to be stored only once, + in a system library like <code>libc.so</code>, saving disk + space for every program.</p> + + <p>In the second way the DSO's are usually called <em>shared + objects</em> or <em>DSO files</em> and can be named with an + arbitrary extension (although the canonical name is + <code>foo.so</code>). These files usually stay inside a + program-specific directory and there is no automatically + established link to the executable program where they are used. + Instead the executable program manually loads the DSO at + run-time into its address space via <code>dlopen()</code>. At + this time no resolving of symbols from the DSO for the + executable program is done. But instead the Unix loader + automatically resolves any (yet unresolved) symbols in the DSO + from the set of symbols exported by the executable program and + its already loaded DSO libraries (especially all symbols from + the ubiquitous <code>libc.so</code>). This way the DSO gets + knowledge of the executable program's symbol set as if it had + been statically linked with it in the first place.</p> + + <p>Finally, to take advantage of the DSO's API the executable + program has to resolve particular symbols from the DSO via + <code>dlsym()</code> for later use inside dispatch tables + <em>etc.</em> In other words: The executable program has to + manually resolve every symbol it needs to be able to use it. + The advantage of such a mechanism is that optional program + parts need not be loaded (and thus do not spend memory) until + they are needed by the program in question. When required, + these program parts can be loaded dynamically to extend the + base program's functionality.</p> + + <p>Although this DSO mechanism sounds straightforward there is + at least one difficult step here: The resolving of symbols from + the executable program for the DSO when using a DSO to extend a + program (the second way). Why? Because "reverse resolving" DSO + symbols from the executable program's symbol set is against the + library design (where the library has no knowledge about the + programs it is used by) and is neither available under all + platforms nor standardized. In practice the executable + program's global symbols are often not re-exported and thus not + available for use in a DSO. Finding a way to force the linker + to export all global symbols is the main problem one has to + solve when using DSO for extending a program at run-time.</p> + + <p>The shared library approach is the typical one, because it + is what the DSO mechanism was designed for, hence it is used + for nearly all types of libraries the operating system + provides.</p> + +</div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div> +<div class="section"> +<h2><a name="advantages" id="advantages">Advantages and Disadvantages</a></h2> + + <p>The above DSO based features have the following + advantages:</p> + + <ul> + <li>The server package is more flexible at run-time because + the server process can be assembled at run-time via + <code class="directive"><a href="./mod/mod_so.html#loadmodule">LoadModule</a></code> + <code>httpd.conf</code> configuration directives instead of + <code class="program"><a href="./programs/configure.html">configure</a></code> options at build-time. For instance, + this way one is able to run different server instances + (standard & SSL version, minimalistic & dynamic + version [mod_perl, mod_php], <em>etc.</em>) with only one Apache httpd + installation.</li> + + <li>The server package can be easily extended with + third-party modules even after installation. This is + a great benefit for vendor package maintainers, who can create + an Apache httpd core package and additional packages containing + extensions like PHP, mod_perl, mod_security, <em>etc.</em></li> + + <li>Easier Apache httpd module prototyping, because with the + DSO/<code class="program"><a href="./programs/apxs.html">apxs</a></code> pair you can both work outside the + Apache httpd source tree and only need an <code>apxs -i</code> + command followed by an <code>apachectl restart</code> to + bring a new version of your currently developed module into + the running Apache HTTP Server.</li> + </ul> + + <p>DSO has the following disadvantages:</p> + + <ul> + <li>The server is approximately 20% slower at startup time + because of the symbol resolving overhead the Unix loader now + has to do.</li> + + <li>The server is approximately 5% slower at execution time + under some platforms, because position independent code (PIC) + sometimes needs complicated assembler tricks for relative + addressing, which are not necessarily as fast as absolute + addressing.</li> + + <li>Because DSO modules cannot be linked against other + DSO-based libraries (<code>ld -lfoo</code>) on all platforms + (for instance a.out-based platforms usually don't provide + this functionality while ELF-based platforms do) you cannot + use the DSO mechanism for all types of modules. Or in other + words, modules compiled as DSO files are restricted to only + use symbols from the Apache httpd core, from the C library + (<code>libc</code>) and all other dynamic or static libraries + used by the Apache httpd core, or from static library archives + (<code>libfoo.a</code>) containing position independent code. + The only chances to use other code is to either make sure the + httpd core itself already contains a reference to it or + loading the code yourself via <code>dlopen()</code>.</li> + </ul> + +</div></div> +<div class="bottomlang"> +<p><span>Available Languages: </span><a href="./en/dso.html" title="English"> en </a> | +<a href="./fr/dso.html" hreflang="fr" rel="alternate" title="Français"> fr </a> | +<a href="./ja/dso.html" hreflang="ja" rel="alternate" title="Japanese"> ja </a> | +<a href="./ko/dso.html" hreflang="ko" rel="alternate" title="Korean"> ko </a> | +<a href="./tr/dso.html" hreflang="tr" rel="alternate" title="Türkçe"> tr </a></p> +</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">Comments</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 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 Libera.chat, or sent to our <a href="https://httpd.apache.org/lists.html">mailing lists</a>.</div> +<script type="text/javascript"><!--//--><![CDATA[//><!-- +var comments_shortname = 'httpd'; +var comments_identifier = 'http://httpd.apache.org/docs/2.4/dso.html'; +(function(w, d) { + if (w.location.hostname.toLowerCase() == "httpd.apache.org") { + d.write('<div id="comments_thread"><\/div>'); + var s = d.createElement('script'); + s.type = 'text/javascript'; + s.async = true; + s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier; + (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s); + } + else { + d.write('<div id="comments_thread">Comments are disabled for this page at the moment.<\/div>'); + } +})(window, document); +//--><!]]></script></div><div id="footer"> +<p class="apache">Copyright 2023 The Apache Software Foundation.<br />Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p> +<p class="menu"><a href="./mod/">Modules</a> | <a href="./mod/directives.html">Directives</a> | <a href="http://wiki.apache.org/httpd/FAQ">FAQ</a> | <a href="./glossary.html">Glossary</a> | <a href="./sitemap.html">Sitemap</a></p></div><script type="text/javascript"><!--//--><![CDATA[//><!-- +if (typeof(prettyPrint) !== 'undefined') { + prettyPrint(); +} +//--><!]]></script> +</body></html>
\ No newline at end of file diff --git a/docs/manual/dso.html.fr.utf8 b/docs/manual/dso.html.fr.utf8 new file mode 100644 index 0000000..2ff0cbc --- /dev/null +++ b/docs/manual/dso.html.fr.utf8 @@ -0,0 +1,356 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml" lang="fr" xml:lang="fr"><head> +<meta content="text/html; charset=UTF-8" http-equiv="Content-Type" /> +<!-- + XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX + This file is generated from xml source: DO NOT EDIT + XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX + --> +<title>Support des objets dynamiques partagés (DSO) - Serveur HTTP Apache Version 2.4</title> +<link href="./style/css/manual.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" /> +<link href="./style/css/manual-loose-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" /> +<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" /> +<script src="./style/scripts/prettify.min.js" type="text/javascript"> +</script> + +<link href="./images/favicon.ico" rel="shortcut icon" /></head> +<body id="manual-page"><div id="page-header"> +<p class="menu"><a href="./mod/">Modules</a> | <a href="./mod/directives.html">Directives</a> | <a href="http://wiki.apache.org/httpd/FAQ">FAQ</a> | <a href="./glossary.html">Glossaire</a> | <a href="./sitemap.html">Plan du site</a></p> +<p class="apache">Serveur HTTP Apache Version 2.4</p> +<img alt="" src="./images/feather.png" /></div> +<div class="up"><a href="./"><img title="<-" alt="<-" src="./images/left.gif" /></a></div> +<div id="path"> +<a href="http://www.apache.org/">Apache</a> > <a href="http://httpd.apache.org/">Serveur HTTP</a> > <a href="http://httpd.apache.org/docs/">Documentation</a> > <a href="./">Version 2.4</a></div><div id="page-content"><div id="preamble"><h1>Support des objets dynamiques partagés (DSO)</h1> +<div class="toplang"> +<p><span>Langues Disponibles: </span><a href="./en/dso.html" hreflang="en" rel="alternate" title="English"> en </a> | +<a href="./fr/dso.html" title="Français"> fr </a> | +<a href="./ja/dso.html" hreflang="ja" rel="alternate" title="Japanese"> ja </a> | +<a href="./ko/dso.html" hreflang="ko" rel="alternate" title="Korean"> ko </a> | +<a href="./tr/dso.html" hreflang="tr" rel="alternate" title="Türkçe"> tr </a></p> +</div> + + <p>La conception modulaire du serveur HTTP Apache permet à l'administrateur + de choisir les fonctionnalités à inclure dans le serveur en sélectionnant + un certain nombre de modules. Les modules seront compilés en tant + qu'Objets Dynamiques Partagés (Dynamic Shared Objects ou DSOs) + qui mènent une existence séparée du fichier binaire principal + <code class="program"><a href="./programs/httpd.html">httpd</a></code>. Les modules DSO peuvent être compilés en + même temps que le serveur, ou compilés et ajoutés ultérieurement via + l'Outil des Extensions à Apache (Apache Extension Tool ou + <code class="program"><a href="./programs/apxs.html">apxs</a></code>).</p> + <p>Les modules peuvent aussi être intégrés statiquement dans le + binaire <code class="program"><a href="./programs/httpd.html">httpd</a></code> lors de la compilation de ce + dernier.</p> + + <p>Ce document décrit l'utilisation des modules DSO ainsi que les dessous + de leur fonctionnement.</p> + </div> +<div id="quickview"><a href="https://www.apache.org/foundation/contributing.html" class="badge"><img src="https://www.apache.org/images/SupportApache-small.png" alt="Support Apache!" /></a><ul id="toc"><li><img alt="" src="./images/down.gif" /> <a href="#implementation">Implémentation</a></li> +<li><img alt="" src="./images/down.gif" /> <a href="#usage">Mode d'emploi succinct</a></li> +<li><img alt="" src="./images/down.gif" /> <a href="#background">Les dessous du fonctionnement des DSO</a></li> +<li><img alt="" src="./images/down.gif" /> <a href="#advantages">Avantages et inconvénients</a></li> +</ul><h3>Voir aussi</h3><ul class="seealso"><li><a href="#comments_section">Commentaires</a></li></ul></div> +<div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div> +<div class="section"> +<h2><a name="implementation" id="implementation">Implémentation</a></h2> + +<table class="related"><tr><th>Modules Apparentés</th><th>Directives Apparentées</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> + + <p>Le support DSO pour le chargement de modules individuels d'Apache + httpd est + assuré par un module nommé <code class="module"><a href="./mod/mod_so.html">mod_so</a></code> qui doit être compilé + statiquement dans le coeur d'Apache httpd. Il s'agit du seul module avec le + module <code class="module"><a href="./mod/core.html">core</a></code> à ne pas pouvoir être compilé en tant que + module DSO lui-même. Pratiquement tous les autres modules d'Apache httpd + distribués seront alors compilés en tant que modules DSO. Une fois + compilé en tant que module DSO nommé <code>mod_foo.so</code>, un + module peut être chargé en mémoire au + démarrage ou redémarrage du serveur à l'aide de + la directive <code class="directive"><a href="./mod/mod_so.html#loadmodule">LoadModule</a></code> du module + <code class="module"><a href="./mod/mod_so.html">mod_so</a></code>, placée + dans votre fichier <code>httpd.conf</code>.</p> + <p>La compilation en mode DSO peut être désactivée pour certains + modules via l'option <code>--enable-mods-static</code> du script + <code class="program"><a href="./programs/configure.html">configure</a></code>, comme expliqué dans la <a href="install.html">Documentation sur l'installation</a>.</p> + + <p>Un utilitaire permet de simplifier la création de + fichiers DSO pour les modules d'Apache httpd + (particulièrement pour les modules tiers) ; il s'agit du programme nommé + <code class="program"><a href="./programs/apxs.html">apxs</a></code> (<dfn>APache + eXtenSion</dfn>). On peut l'utiliser pour construire des modules de type + DSO <em>en dehors</em> de l'arborescence des sources d'Apache httpd. L'idée est + simple : à l'installation du serveur HTTP Apache, la procédure <code>make install</code> + du script <code class="program"><a href="./programs/configure.html">configure</a></code> installe les fichiers d'en-têtes + d'Apache httpd et positionne, pour la plateforme de compilation, les drapeaux du compilateur et de + l'éditeur de liens à l'intérieur du programme + <code class="program"><a href="./programs/apxs.html">apxs</a></code>, qui sera utilisé pour la construction de fichiers DSO. + Il est ainsi possible d'utiliser le programme <code class="program"><a href="./programs/apxs.html">apxs</a></code> + pour compiler ses sources de modules Apache httpd sans avoir besoin de + l'arborescence des sources de la distribution d'Apache, et sans avoir à + régler les drapeaux du compilateur et de l'éditeur de liens pour le support DSO.</p> +</div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div> +<div class="section"> +<h2><a name="usage" id="usage">Mode d'emploi succinct</a></h2> + + <p>Afin que vous puissiez vous faire une idée des fonctionnalités DSO + du serveur HTTP Apache 2.x, en voici un résumé court et concis :</p> + + <ol> + <li> + <p>Construire et installer un module Apache httpd <em>faisant partie de la + distribution</em>, par exemple <code>mod_foo.c</code>, + en tant que module DSO <code>mod_foo.so</code> :</p> + +<div class="example"><p><code> +$ ./configure --prefix=/chemin/vers/installation --enable-foo<br /> +$ make install +</code></p></div> + </li> + + <li> + <p>Configure le serveur HTTP Apache avec tous les modules + activés. Seul un jeu de modules de base sera chargé au + démarrage du serveur. Vous pouvez modifier ce jeu de modules + chargés au démarrage en activant ou désactivant les directives <code class="directive"><a href="./mod/mod_so.html#loadmodule">LoadModule</a></code> correspondantes dans le + fichier <code>httpd.conf</code>.</p> + +<div class="example"><p><code> +$ ./configure --enable-mods-shared=all<br /> +$ make install +</code></p></div> + + <p>L'argument <code>most</code> de l'option + <code>--enable-modules</code> indique que tous les modules + non-expérimentaux ou qui ne sont pas là à titre d'exemple seront + compilés.</p> + </li> + + <li> + <p>Certains modules ne sont utilisés que par les développeurs et + ne seront pas compilés. Si vous voulez les utiliser, spécifiez + l'option <em>all</em>. Pour compiler tous les modules disponibles, + y compris les modules de développeurs, spécifiez l'option + <em>reallyall</em>. En outre, la directive <code class="directive"><a href="./mod/mod_so.html#loadmodule">LoadModule</a></code> peut être activée pour tous + les modules compilés via l'option du script configure + <code>--enable-load-all-modules</code>.</p> + +<div class="example"><p><code> +$ ./configure --enable-mods-shared=reallyall --enable-load-all-modules<br /> +$ make install +</code></p></div> + </li> + + <li> + Construire et installer un module Apache httpd <em>tiers</em>, par exemple + <code>mod_foo.c</code>, en tant que module DSO + <code>mod_foo.so</code> <em>en dehors</em> de l'arborescence des sources + d'Apache httpd à l'aide du programme <code class="program"><a href="./programs/apxs.html">apxs</a></code> : + +<div class="example"><p><code> +$ cd /chemin/vers/module_tiers<br /> +$ apxs -cia mod_foo.c +</code></p></div> + </li> + </ol> + + <p>Dans tous les cas, une fois le module partagé compilé, vous devez + ajouter une directive <code class="directive"><a href="./mod/mod_so.html#loadmodule">LoadModule</a></code> + dans le fichier <code>httpd.conf</code> pour qu'Apache httpd active le module.</p> + + <p>Voir la <a href="programs/apxs.html">documentation sur apxs</a> + pour plus de détails.</p> +</div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div> +<div class="section"> +<h2><a name="background" id="background">Les dessous du fonctionnement des DSO</a></h2> + + <p>Les clônes modernes d'UNIX proposent un mécanisme + appelé édition de liens et chargement dynamiques d' + <em>Objets Dynamiques Partagés</em> (DSO), qui permet de construire un + morceau de programme dans un format spécial pour le rendre chargeable + à l'exécution dans l'espace d'adressage d'un programme exécutable.</p> + + <p>Ce chargement peut s'effectuer de deux manières : automatiquement par + un programme système appelé <code>ld.so</code> quand un programme + exécutable est démarré, ou manuellement à partir du programme en cours + d'exécution via sa propre interface système vers le chargeur Unix à l'aide + des appels système <code>dlopen()/dlsym()</code>.</p> + + <p>Dans la première méthode, les DSO sont en général appelés + <em>bibliothèques partagées</em> ou encore <em>bibliothèques DSO</em>, et + possèdent des noms du style + <code>libfoo.so</code> ou <code>libfoo.so.1.2</code>. Ils résident dans un + répertoire système (en général <code>/usr/lib</code>) + et le lien avec le programme exécutable est établi à la compilation en + ajoutant <code>-lfoo</code> à la commande de l'éditeur de liens. Les + références à la bibliothèque sont ainsi codées en dur dans le fichier du + programme exécutable de façon à ce qu'au démarrage du programme, le + chargeur Unix soit capable de localiser <code>libfoo.so</code> dans + <code>/usr/lib</code>, dans des chemins codés en dur à l'aide d'options de + l'éditeur de liens comme <code>-R</code> ou dans des chemins définis par la + variable d'environnement + <code>LD_LIBRARY_PATH</code>. Le chargeur peut dès lors résoudre tous les symboles + (jusque là non encore résolus) du DSO dans le programme exécutable.</p> + + <p>Les symboles du programme exécutable ne sont en général pas + référencés par le DSO (car c'est une bibliothèque de code à usage général + et réutilisable), + et ainsi aucune résolution supplémentaire n'est nécessaire. De son côté, + le programme exécutable ne doit accomplir aucune action particulière + pour utiliser les + symboles du DSO car toutes les résolutions sont effectuées par le chargeur + Unix. En fait, le code permettant d'invoquer + <code>ld.so</code> fait partie du code de démarrage pour l'exécution qui + est lié dans tout programme exécutable non statiquement lié. + L'avantage du chargement dynamique du code d'une bibliothèque partagée est + évident : le code de la bibliothèque ne doit être stocké qu'une seule fois + dans une bibliothèque système telle que <code>libc.so</code>, ce qui permet + d'économiser de l'espace disque pour les autres programmes.</p> + + <p>Dans la seconde méthode, les DSO sont en général appelés <em>objets + partagés</em> ou <em>fichiers DSO</em>, et peuvent être nommés avec + l'extension de son choix (bien que le nom conseillé soit du style + <code>foo.so</code>). Ces fichiers résident en général dans un répertoire + spécifique à un programme, et aucun lien n'est automatiquement établi avec + le programme exécutable dans lequel ils sont utilisés. + Le programme exécutable charge manuellement le DSO à l'exécution dans son + espace d'adressage à l'aide de l'appel système <code>dlopen()</code>. + A ce moment, aucune résolution de symboles du DSO n'est effectuée pour le + programme exécutable. Par contre le chargeur Unix + résoud automatiquement tout symbole du DSO (non encore résolu) + faisant partie de l'ensemble de symboles exporté par le programme + exécutable et ses bibliothèques DSO déjà chargées (et en particulier tous + les symboles de la bibliothèque à tout faire <code>libc.so</code>). + De cette façon, le DSO prend connaissance de l'ensemble de symboles du + programme exécutable comme s'il avait été lié statiquement avec lui + auparavant.</p> + + <p>Finalement, pour tirer profit de l'API des DSO, le programme exécutable + doit résoudre certains symboles du DSO à l'aide de l'appel système + <code>dlsym()</code> pour une utilisation ultérieure dans les tables de + distribution, <em>etc...</em> En d'autres termes, le programme exécutable doit + résoudre manuellement tous les symboles dont il a besoin pour pouvoir les + utiliser. + Avantage d'un tel mécanisme : les modules optionnels du programme n'ont pas + besoin d'être chargés (et ne gaspillent donc pas de ressources mémoire) + tant qu'il ne sont pas nécessaires au programme en question. Si nécessaire, + ces modules peuvent être chargés dynamiquement afin d'étendre les + fonctionnalités de base du programme.</p> + + <p>Bien que ce mécanisme DSO paraisse évident, il comporte au moins une + étape difficile : la résolution des symboles depuis le programme exécutable + pour le DSO lorsqu'on utilise un DSO pour étendre les fonctionnalités d'un + programme (la seconde méthode). Pourquoi ? Parce que la "résolution + inverse" des symboles DSO à partir du jeu de symboles du programme + exécutable dépend de la conception de la bibliothèque (la bibliothèque n'a + aucune information sur le programme qui l'utilise) et n'est ni standardisée + ni disponible sur toutes les plateformes. En pratique, les symboles globaux + du programme exécutable ne sont en général pas réexportés et donc + indisponibles pour l'utilisation dans un DSO. Trouver une méthode pour + forcer l'éditeur de liens à exporter tous les symboles globaux est le + principal problème que l'on doit résoudre lorsqu'on utilise un DSO pour + étendre les fonctionnalités d'un programme au moment de son exécution.</p> + + <p>L'approche des bibliothèques partagées est la plus courante, parce que + c'est dans cette optique que le mécanisme DSO a été conçu ; c'est cette + approche qui est ainsi + utilisée par pratiquement tous les types de bibliothèques que fournit le + système d'exploitation.</p> + +</div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div> +<div class="section"> +<h2><a name="advantages" id="advantages">Avantages et inconvénients</a></h2> + + <p>Les fonctionnalités ci-dessus basées sur les DSO présentent les + avantages suivants :</p> + + <ul> + <li>Le paquetage du serveur est plus flexible à l'exécution car le + processus serveur peut être assemblé à l'exécution via la + directive <code class="directive"><a href="./mod/mod_so.html#loadmodule">LoadModule</a></code> du fichier de + configuration <code>httpd.conf</code> plutôt que par des options du script + <code class="program"><a href="./programs/configure.html">configure</a></code> à la compilation. Par exemple, + on peut ainsi exécuter différentes instances du serveur + (standard et version SSL, version minimale et version dynamique + [mod_perl, mod_php], <em>etc...</em>) à partir d'une seule installation + d'Apache httpd.</li> + + <li>Le paquetage du serveur peut être facilement étendu avec des modules + tiers, même après l'installation. Ceci présente un gros + avantage pour les mainteneurs de paquetages destinés aux distributions, + car ils peuvent créer un paquetage Apache httpd de base, et des paquetages + additionnels contenant des extensions telles que PHP, mod_perl, mod_fastcgi, + <em>etc...</em></li> + + <li>Une facilité de prototypage des modules Apache httpd, car la paire + DSO/<code class="program"><a href="./programs/apxs.html">apxs</a></code> vous permet d'une part de travailler en + dehors de l'arborescence des sources d'Apache httpd, et d'autre part de n'avoir + besoin que de la commande <code>apxs -i</code> + suivie d'un <code>apachectl restart</code> pour introduire une nouvelle + version de votre module fraîchement développé dans le serveur HTTP Apache + en cours d'exécution.</li> + </ul> + + <p>Inconvénients des DSO :</p> + + <ul> + <li>Le serveur est environ 20 % plus lent au démarrage + à cause des résolutions de symboles supplémentaires que le chargeur + Unix doit effectuer.</li> + + <li>Le serveur est environ 5 % plus lent à l'exécution + sur certaines plates-formes, car le code indépendant de la position (PIC) + nécessite parfois des manipulations compliquées en assembleur pour + l'adressage relatif qui ne sont pas toujours aussi rapides que celles + que permet l'adressage absolu.</li> + + <li>Comme les modules DSO ne peuvent pas être liés avec d'autres + bibliothèques basées sur DSO (<code>ld -lfoo</code>) sur toutes les + plates-formes + (par exemple, les plates-formes basées sur a.out ne fournissent en + général pas cette fonctionnalité alors que les plates-formes basées sur + ELF le font), vous ne pouvez pas utiliser le mécanisme DSO pour tous les + types de modules. Ou en d'autres termes, les modules compilés comme + fichiers DSO sont contraints de n'utiliser que les symboles du coeur + d'Apache httpd, de la bibliothèque C + (<code>libc</code>) et toutes autres bibliothèques statiques ou + dynamiques utilisées par le coeur d'Apache httpd, ou d'archives statiques + (<code>libfoo.a</code>) contenant du code indépendant de la + position (PIC). + Il y a deux solutions pour utiliser un autre type de code : soit le + coeur d'Apache httpd contient déjà lui-même une référence au code, soit vous + chargez le code vous-même via <code>dlopen()</code>.</li> + </ul> + +</div></div> +<div class="bottomlang"> +<p><span>Langues Disponibles: </span><a href="./en/dso.html" hreflang="en" rel="alternate" title="English"> en </a> | +<a href="./fr/dso.html" title="Français"> fr </a> | +<a href="./ja/dso.html" hreflang="ja" rel="alternate" title="Japanese"> ja </a> | +<a href="./ko/dso.html" hreflang="ko" rel="alternate" title="Korean"> ko </a> | +<a href="./tr/dso.html" hreflang="tr" rel="alternate" title="Türkçe"> tr </a></p> +</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">Commentaires</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 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 Libera.chat, or sent to our <a href="https://httpd.apache.org/lists.html">mailing lists</a>.</div> +<script type="text/javascript"><!--//--><![CDATA[//><!-- +var comments_shortname = 'httpd'; +var comments_identifier = 'http://httpd.apache.org/docs/2.4/dso.html'; +(function(w, d) { + if (w.location.hostname.toLowerCase() == "httpd.apache.org") { + d.write('<div id="comments_thread"><\/div>'); + var s = d.createElement('script'); + s.type = 'text/javascript'; + s.async = true; + s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier; + (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s); + } + else { + d.write('<div id="comments_thread">Comments are disabled for this page at the moment.<\/div>'); + } +})(window, document); +//--><!]]></script></div><div id="footer"> +<p class="apache">Copyright 2023 The Apache Software Foundation.<br />Autorisé sous <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p> +<p class="menu"><a href="./mod/">Modules</a> | <a href="./mod/directives.html">Directives</a> | <a href="http://wiki.apache.org/httpd/FAQ">FAQ</a> | <a href="./glossary.html">Glossaire</a> | <a href="./sitemap.html">Plan du site</a></p></div><script type="text/javascript"><!--//--><![CDATA[//><!-- +if (typeof(prettyPrint) !== 'undefined') { + prettyPrint(); +} +//--><!]]></script> +</body></html>
\ No newline at end of file diff --git a/docs/manual/dso.html.ja.utf8 b/docs/manual/dso.html.ja.utf8 new file mode 100644 index 0000000..8a8d9f4 --- /dev/null +++ b/docs/manual/dso.html.ja.utf8 @@ -0,0 +1,330 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml" lang="ja" xml:lang="ja"><head> +<meta content="text/html; charset=UTF-8" http-equiv="Content-Type" /> +<!-- + XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX + This file is generated from xml source: DO NOT EDIT + XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX + --> +<title>動的共有オブジェクト (DSO) サポート - Apache HTTP サーバ バージョン 2.4</title> +<link href="./style/css/manual.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" /> +<link href="./style/css/manual-loose-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" /> +<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" /> +<script src="./style/scripts/prettify.min.js" type="text/javascript"> +</script> + +<link href="./images/favicon.ico" rel="shortcut icon" /></head> +<body id="manual-page"><div id="page-header"> +<p class="menu"><a href="./mod/">モジュール</a> | <a href="./mod/directives.html">ディレクティブ</a> | <a href="http://wiki.apache.org/httpd/FAQ">FAQ</a> | <a href="./glossary.html">用語</a> | <a href="./sitemap.html">サイトマップ</a></p> +<p class="apache">Apache HTTP サーバ バージョン 2.4</p> +<img alt="" src="./images/feather.png" /></div> +<div class="up"><a href="./"><img title="<-" alt="<-" src="./images/left.gif" /></a></div> +<div id="path"> +<a href="http://www.apache.org/">Apache</a> > <a href="http://httpd.apache.org/">HTTP サーバ</a> > <a href="http://httpd.apache.org/docs/">ドキュメンテーション</a> > <a href="./">バージョン 2.4</a></div><div id="page-content"><div id="preamble"><h1>動的共有オブジェクト (DSO) サポート</h1> +<div class="toplang"> +<p><span>翻訳済み言語: </span><a href="./en/dso.html" hreflang="en" rel="alternate" title="English"> en </a> | +<a href="./fr/dso.html" hreflang="fr" rel="alternate" title="Français"> fr </a> | +<a href="./ja/dso.html" title="Japanese"> ja </a> | +<a href="./ko/dso.html" hreflang="ko" rel="alternate" title="Korean"> ko </a> | +<a href="./tr/dso.html" hreflang="tr" rel="alternate" title="Türkçe"> tr </a></p> +</div> +<div class="outofdate">この日本語訳はすでに古くなっている + 可能性があります。 + 最近更新された内容を見るには英語版をご覧下さい。 + </div> + + <p>Apache HTTP サーバはモジュール化されたプログラムで、 + 管理者がモジュールを選択することでサーバに組み込む機能を選ぶことができます。 + モジュールはサーバがビルドされるときに <code class="program"><a href="./programs/httpd.html">httpd</a></code> バイナリに + 静的に組み込むことができます。もしくは、<code class="program"><a href="./programs/httpd.html">httpd</a></code> バイナリとは + 別に存在する動的共有オブジェクト (訳注: Dynamic Shared Object) + (DSO) としてコンパイルすることも + できます。DSO モジュールはサーバがビルドされるときにコンパイルしたり、 + Apache 拡張ツール (<code class="program"><a href="./programs/apxs.html">apxs</a></code>) を + 使って後でコンパイルして追加したりできます。</p> + + <p>この文書は DSO モジュールの使い方と、仕組みについて + 説明します。</p> + </div> +<div id="quickview"><a href="https://www.apache.org/foundation/contributing.html" class="badge"><img src="https://www.apache.org/images/SupportApache-small.png" alt="Support Apache!" /></a><ul id="toc"><li><img alt="" src="./images/down.gif" /> <a href="#implementation">実装</a></li> +<li><img alt="" src="./images/down.gif" /> <a href="#usage">使用法の概要</a></li> +<li><img alt="" src="./images/down.gif" /> <a href="#background">背景</a></li> +<li><img alt="" src="./images/down.gif" /> <a href="#advantages">利点と欠点</a></li> +</ul><h3>参照</h3><ul class="seealso"><li><a href="#comments_section">コメント</a></li></ul></div> +<div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div> +<div class="section"> +<h2><a name="implementation" id="implementation">実装</a></h2> + +<table class="related"><tr><th>関連モジュール</th><th>関連ディレクティブ</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> + + <p>個々の Apache モジュールをロードするための DSO サポートは + <code class="module"><a href="./mod/mod_so.c.html">mod_so.c</a></code> というモジュールの機能に基づいています。 + このモジュール は Apache のコアに静的に組み込まれている必要があります。 + それは <code class="module"><a href="./mod/core.c.html">core.c</a></code> 以外では DSO にできない唯一の + モジュールです。事実上、他のすべての Apache のモジュールは、 + <a href="install.html">インストールの文書</a>で説明されているように、 + <code class="program"><a href="./programs/configure.html">configure</a></code> の + <code>--enable-<em>module</em>=shared</code> オプションでそれぞれを + DSO ビルドにすることにより、DSO モジュールにすることができます。 + <code>mod_foo.so</code> のような DSO にモジュールがコンパイルされれば、 + <code>httpd.conf</code> ファイル中で <code class="module"><a href="./mod/mod_so.html">mod_so</a></code> の + <code class="directive"><a href="./mod/mod_so.html#loadmodule">LoadModule</a></code> + ディレクティブを使うことでサーバの起動や再起動時にこのモジュールを + ロードするようにできます。</p> + + <p>Apache モジュール用の (特にサードパーティモジュールの) DSO ファイルの + 作成を簡単にするために、<code class="program"><a href="./programs/apxs.html">apxs</a></code> + (<dfn>APache eXtenSion</dfn>) という新しいサポートプログラムがあります。 + Apache のソースツリーの<em>外で</em> DSO モジュールをビルドするために + 使うことができます。発想は単純です: Apache のインストール時の + <code class="program"><a href="./programs/configure.html">configure</a></code>、<code>make install</code> のときに Apache の + C ヘッダをインストールし、DSO ビルド用のプラットフォーム依存の + コンパイラとリンカのフラグを <code class="program"><a href="./programs/apxs.html">apxs</a></code> プログラムに追加します。 + これにより、ユーザが Apache の配布ソースツリーなしで、さらに + DSO サポートのためのプラットフォーム依存のコンパイラやリンカの + フラグをいじることなく Apache のモジュールのソースをコンパイル + できるようになります。</p> +</div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div> +<div class="section"> +<h2><a name="usage" id="usage">使用法の概要</a></h2> + + <p>Apache 2.x の DSO 機能の概略を知ることができるための、 + 短く簡潔な概要です:</p> + + <ol> + <li> + <em>配布されている</em> Apache モジュール、仮に <code>mod_foo.c</code> + として、それを DSO <code>mod_foo.so</code> にビルド、インストール: + +<div class="example"><p><code> +$ ./configure --prefix=/path/to/install --enable-foo=shared<br /> +$ make install +</code></p></div> + </li> + + <li> + <em>サードパーティ</em> Apache モジュール、仮に <code>mod_foo.c</code> + として、それを DSO <code>mod_foo.so</code> にビルド、インストール: + +<div class="example"><p><code> +$ ./configure --add-module=<var>module_type</var>:/path/to/3rdparty/mod_foo.c \<br /> +<span class="indent"> + --enable-foo=shared<br /> +</span> +$ make install +</code></p></div> + </li> + + <li> + 共有モジュールの <em>後々のインストール</em> のために + Apache を設定: + +<div class="example"><p><code> +$ ./configure --enable-so<br /> +$ make install +</code></p></div> + </li> + + <li> + <em>サードパーティ</em> Apache モジュール、仮に <code>mod_foo.c</code> + として、それを <code class="program"><a href="./programs/apxs.html">apxs</a></code> を使って + Apache ソースツリーの<em>外で</em> DSO にビルド、インストール: + +<div class="example"><p><code> +$ cd /path/to/3rdparty<br /> +$ apxs -c mod_foo.c<br /> +$ apxs -i -a -n foo mod_foo.la +</code></p></div> + </li> + </ol> + + <p>どの場合においても、共有モジュールをコンパイルした後で、 + <code>httpd.conf</code> で + <code class="directive"><a href="./mod/mod_so.html#loadmodule">LoadModule</a></code> + ディレクティブを使って Apache がモジュールを使用するように + しなければなりません。</p> +</div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div> +<div class="section"> +<h2><a name="background" id="background">背景</a></h2> + + <p>最近の Unix 系の OS には <em>動的共有オブジェクト</em> (DSO) + の動的リンク/ロードという気のきいた機構が + 存在します。これは、実行時にプログラムのアドレス空間に + ロードできるような特別な形式でプログラムをビルドすることを + 可能にします。</p> + + <p>このロードは二つの方法で行なうことができます: 実行プログラムが + 起動されたときに <code>ld.so</code> というシステムプログラム + により自動的に行なわれる方法と、実行プログラム中から、システムコール + <code>dlopen()/dlsym()</code> による Unix ローダへの + プログラムシステムのインタフェースを使って手動で行なう方法とが + あります。</p> + + <p>最初の方法では DSO は普通は<em>共有ライブラリ</em>や <em>DSO + ライブラリ</em> と呼ばれていて、DSO の名前は + <code>libfoo.so</code> や <code>libfoo.so.1.2</code> のようになっています。 + これらはシステムディレクトリ (通常 <code>/usr/lib</code>) に存在し、 + 実行プログラムへのリンクはビルド時に <code>-lfoo</code> をリンカに + 指定することで確立されます。これによりライブラリへの参照が実行プログラムの + ファイルに書き込まれて、起動時に Unix のローダが <code>/usr/lib</code> や、 + リンカの <code>-R</code> のようなオプションによりハードコードされたパス、 + 環境変数 <code>LD_LIBRARY_PATH</code> により設定されたパス、の中から + <code>libfoo.so</code> の場所を見つけることができます。それから、 + 実行プログラム中の (まだ未解決の) シンボルを DSO にあるシンボルで + 解決します。</p> + + <p>普通は実行プログラム中のシンボルは DSO からは参照されません + (DSO は一般的なコードによる再利用可能なライブラリですので)。 + ですから、さらなるシンボルの解決は必要ありません。 + シンボルは Unix ローダにより完全な解決が行なわれますので、実行ファイル自身は + 何もする必要がありません。(実際のところ、静的でない方法でリンクされている + すべての実行プログラムに組み込まれている開始用のコードの一部に + <code>ld.so</code> を起動するコードが含まれています)。よく使われる + ライブラリの動的ロードの利点は明らかです。ライブラリのコードは + システムライブラリに <code>libc.so</code> のようにして一度保存するだけでよく、 + プログラムのために必要なディスクの領域を節約することができます。</p> + + <p>二つめの方法では DSO は普通は<em>共有オブジェクト</em>や + <em>DSO ファイル</em>と呼ばれていて、任意の拡張子を付けることができます + (ただし、標準的な名前は <code>foo.so</code> です)。 + これらのファイルは通常はプログラム専用のディレクトリに置かれ、 + これらを使う実行プログラムへのリンクは自動的にはされません。 + ですので、実行プログラムは <code>dlopen()</code> を使って + 実行時に手動で DSO をプログラムのアドレス空間にロードする必要があります。 + この時点では実行プログラムに対して DSO のシンボルの解決は行なわれません。 + しかし、その代わりに Unix のローダが DSO の (まだ未解決の) シンボルを + 実行プログラムによりエクスポートされたシンボルと既にロードされた + DSO ライブラリによりエクスポートされたシンボル (特に、どこにでもある + <code>libc.so</code> のすべてのシンボル) で自動的に解決します。 + こうすることで、DSO は最初から静的にリンクされていたかのように、 + 実行プログラムのシンボルを知ることができます。</p> + + <p>最後に、DSO の API を利点を生かすために、プログラムは + 後でディスパッチテーブル<em>など</em>でシンボルを使うことができるように、 + <code>dlsym()</code> を使っていくつかのシンボルを解決します。 + すなわち: 実行プログラムは必要なすべてのシンボルを手動で解決しなければ + なりません。この機構の利点はプログラムのオプショナルな部分は + 必要になるまでロードする必要がない (だからメモリも消費しない) + ことです。必要ならば、基本プログラムの機能を拡張するために + これらの部分を動的にロードすることができます。</p> + + <p>この DSO 機構は簡単なように見えますが、少なくとも一つ難しい点が + あります: プログラムを拡張するために DSO を使っているときに、 + DSO が実行プログラムからシンボルを解決する点です (二番目の方法)。 + これはなぜでしょうか。それは、DSO のシンボルを実行プログラムの + シンボルから「逆解決」するというのはライブラリの設計 + (ライブラリはそれを使用するプログラムのことは何も + 知らない) に反していて、この機能はすべてのプラットフォームに + あるわけではなく、標準化もされていないからです。 + 実際には実行プログラムのグローバルなシンボルは再エクスポートされることは + あまりなく、DSO から使うことができません。リンカにグローバルシンボルすべてを + エクスポートするようにさせる方法を見つけることが、実行時にプログラムを + 拡張するために DSO を使うときの一番の問題です。</p> + + <p>共有ライブラリのアプローチが普通の方法です。DSO 機構はそのために + 設計されたものですから。したがって、その方法はオペレーティングシステムが + 提供するほとんどすべての種類のライブラリで使われています。 + 一方、プログラムの拡張のために共有オブジェクトを使用する、という方は + あまり使われていません。</p> + + <p>1998 年の時点で、実行時に実際に機能拡張のために DSO 機構を使っている + ソフトウェアパッケージは少しだけでした: Perl 5 (XS 機構と DnaLoader モジュール + によるもの)、Netscape サーバ<em>など</em>です。Apache はすでに + モジュールの概念を使って機能拡張をしていて、内部的にディスパッチリストに + 基づいた外部モジュールの Apache コア機能へのリンクを行なっていましたので、 + バージョン 1.3 から、Apache も DSO 機構を使う仲間になりました。 + Apache は実行時に DSO を使ってモジュールをロードするようにすでに + 運命付けられていたのです。</p> +</div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div> +<div class="section"> +<h2><a name="advantages" id="advantages">利点と欠点</a></h2> + + <p>上記の DSO に基づいた機能は以下の利点があります:</p> + + <ul> + <li>実際のサーバプロセスを組み立てるために、 + ビルド時に <code>configure</code> のオプションを使う代わりに + 実行時に <code>httpd.conf</code> の設定用コマンド + <code class="directive"><a href="./mod/mod_so.html#loadmodule">LoadModule</a></code> + を使うことができますので、サーバパッケージの柔軟性が高まりました。 + たとえば、一つの Apache のインストールから + 違う構成のサーバ (標準版と SSL 版、最小構成と拡張版 [mod_perl, PHP3] + <em>など</em>) を実行することができます。</li> + + <li>インストールの後であっても、サーバのパッケージをサードパーティ + モジュールで簡単に拡張できるようになりました。これは、Apache コア + パッケージと、PHP3, mod_perl, mod_fastcgi <em>など</em> の追加の + パッケージを作成できるので、少なくともベンダのパッケージ管理者にとって + 大きな利点があります。</li> + + <li>Apache モジュールの開発が簡単になります。 + これは DSO と <code class="program"><a href="./programs/apxs.html">apxs</a></code> の組み合わせにより、Apache ソースツリーの + 外で作業でき、開発中のモジュールの新しいバージョンを + 実行中の Apache サーバに組み込むために <code>apxs -i</code> と + <code>apachectl restart</code> を行なうだけで良くなるからです。</li> + </ul> + + <p>DSO には以下の欠点があります:</p> + + <ul> + <li>すべてのオペレーティングシステムがプログラムのアドレス空間に + コードを動的ロードすることをサポートしているわではないので、 + プラットフォームによっては DSO 機構は使えません。</li> + + <li>Unix のローダがシンボルの解決をする必要ができたので、 + そのオーバヘッドによりサーバの起動時間が約 20% 遅くなっています。</li> + + <li>位置非依存コード (PIC) (訳注 position independent code) は + 相対アドレスのために複雑なアセンブラのトリックが必要なことがあり、 + それは必ずしも絶対アドレスと同じくらいの速度がでるわけではありませんので、 + プラットフォームによってはサーバの実行速度が約 5% 遅くなります。</li> + + <li>DSO モジュールはすべてのプラットフォームで他の DSO に基づいた + ライブラリに対してリンクできる (<code>ld -lfoo</code>) + というわけではありませんので (たとえば、a.out のプラットフォームでは + この機能はありませんが、ELF のプラットフォームにはあります)、 + すべての種類のモジュールに DSO 機構を使えるわけではありません。 + 言い換えると、DSO ファイルとしてコンパイルされたモジュールの + 使えるシンボルは、 + Apache のコアのシンボル、C ライブラリ (<code>libc</code>) と + Apache コアが使っている他のすべての静的なライブラリと動的ライブラリの + シンボル、PIC による静的なライブラリ (<code>libfoo.a</code>) の + シンボルのみに制限されます。その他のコードを使う方法は、 + Apache コア自身がすでにそのコードへの参照があるようにするか、 + <code>dlopen ()</code> を使ってコードを自分自身でロードするかの + どちらかしかありません。</li> + </ul> + +</div></div> +<div class="bottomlang"> +<p><span>翻訳済み言語: </span><a href="./en/dso.html" hreflang="en" rel="alternate" title="English"> en </a> | +<a href="./fr/dso.html" hreflang="fr" rel="alternate" title="Français"> fr </a> | +<a href="./ja/dso.html" title="Japanese"> ja </a> | +<a href="./ko/dso.html" hreflang="ko" rel="alternate" title="Korean"> ko </a> | +<a href="./tr/dso.html" hreflang="tr" rel="alternate" title="Türkçe"> tr </a></p> +</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">コメント</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 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 Libera.chat, or sent to our <a href="https://httpd.apache.org/lists.html">mailing lists</a>.</div> +<script type="text/javascript"><!--//--><![CDATA[//><!-- +var comments_shortname = 'httpd'; +var comments_identifier = 'http://httpd.apache.org/docs/2.4/dso.html'; +(function(w, d) { + if (w.location.hostname.toLowerCase() == "httpd.apache.org") { + d.write('<div id="comments_thread"><\/div>'); + var s = d.createElement('script'); + s.type = 'text/javascript'; + s.async = true; + s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier; + (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s); + } + else { + d.write('<div id="comments_thread">Comments are disabled for this page at the moment.<\/div>'); + } +})(window, document); +//--><!]]></script></div><div id="footer"> +<p class="apache">Copyright 2023 The Apache Software Foundation.<br />この文書は <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a> のライセンスで提供されています。.</p> +<p class="menu"><a href="./mod/">モジュール</a> | <a href="./mod/directives.html">ディレクティブ</a> | <a href="http://wiki.apache.org/httpd/FAQ">FAQ</a> | <a href="./glossary.html">用語</a> | <a href="./sitemap.html">サイトマップ</a></p></div><script type="text/javascript"><!--//--><![CDATA[//><!-- +if (typeof(prettyPrint) !== 'undefined') { + prettyPrint(); +} +//--><!]]></script> +</body></html>
\ No newline at end of file diff --git a/docs/manual/dso.html.ko.euc-kr b/docs/manual/dso.html.ko.euc-kr new file mode 100644 index 0000000..d85a499 --- /dev/null +++ b/docs/manual/dso.html.ko.euc-kr @@ -0,0 +1,306 @@ +<?xml version="1.0" encoding="EUC-KR"?> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml" lang="ko" xml:lang="ko"><head> +<meta content="text/html; charset=EUC-KR" http-equiv="Content-Type" /> +<!-- + XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX + This file is generated from xml source: DO NOT EDIT + XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX + --> +<title>ü (DSO) - Apache HTTP Server Version 2.4</title> +<link href="./style/css/manual.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" /> +<link href="./style/css/manual-loose-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" /> +<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" /> +<script src="./style/scripts/prettify.min.js" type="text/javascript"> +</script> + +<link href="./images/favicon.ico" rel="shortcut icon" /></head> +<body id="manual-page"><div id="page-header"> +<p class="menu"><a href="./mod/"></a> | <a href="./mod/directives.html">þ</a> | <a href="http://wiki.apache.org/httpd/FAQ">FAQ</a> | <a href="./glossary.html"></a> | <a href="./sitemap.html">Ʈ</a></p> +<p class="apache">Apache HTTP Server Version 2.4</p> +<img alt="" src="./images/feather.png" /></div> +<div class="up"><a href="./"><img title="<-" alt="<-" src="./images/left.gif" /></a></div> +<div id="path"> +<a href="http://www.apache.org/">Apache</a> > <a href="http://httpd.apache.org/">HTTP Server</a> > <a href="http://httpd.apache.org/docs/">Documentation</a> > <a href="./">Version 2.4</a></div><div id="page-content"><div id="preamble"><h1>ü (DSO) </h1> +<div class="toplang"> +<p><span> : </span><a href="./en/dso.html" hreflang="en" rel="alternate" title="English"> en </a> | +<a href="./fr/dso.html" hreflang="fr" rel="alternate" title="Français"> fr </a> | +<a href="./ja/dso.html" hreflang="ja" rel="alternate" title="Japanese"> ja </a> | +<a href="./ko/dso.html" title="Korean"> ko </a> | +<a href="./tr/dso.html" hreflang="tr" rel="alternate" title="Türkçe"> tr </a></p> +</div> +<div class="outofdate"> ֽ ƴմϴ. + ֱٿ ϼ.</div> + + <p>ġ ڰ Ͽ + ִ ȭ α̴. Ҷ + <code>httpd</code> Ͽ + ִ. ƴϸ <code>httpd</code> ϰ + иϿ ü(Dynamic Shared Objects, DSO) + ִ. DSO Ҷ ϰų, Apache + Extension Tool (<a href="programs/apxs.html">apxs</a>) + Ͽ ߿ Ͽ ߰ ִ.</p> + + <p> DSO ̷ Ѵ.</p> + </div> +<div id="quickview"><a href="https://www.apache.org/foundation/contributing.html" class="badge"><img src="https://www.apache.org/images/SupportApache-small.png" alt="Support Apache!" /></a><ul id="toc"><li><img alt="" src="./images/down.gif" /> <a href="#implementation"></a></li> +<li><img alt="" src="./images/down.gif" /> <a href="#usage"> </a></li> +<li><img alt="" src="./images/down.gif" /> <a href="#background"></a></li> +<li><img alt="" src="./images/down.gif" /> <a href="#advantages"></a></li> +</ul><h3></h3><ul class="seealso"><li><a href="#comments_section">Comments</a></li></ul></div> +<div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div> +<div class="section"> +<h2><a name="implementation" id="implementation"></a></h2> + +<table class="related"><tr><th>õ </th><th>õ þ</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> + + <p>ġ ٽɿ ؾ + <code class="module"><a href="./mod/mod_so.c.html">mod_so.c</a></code> ġ + о̱ DSO Ѵ. + <code class="module"><a href="./mod/core.html">core</a></code> ϰ DSO + ̴. ٸ ġ + <a href="install.html">ġ </a> + <code>configure</code> <code>--enable-<em>module</em>=shared</code> + ɼ Ͽ DSO ִ. + <code>mod_foo.so</code> DSO <code>httpd.conf</code> + Ͽ <code class="module"><a href="./mod/mod_so.html">mod_so</a></code> + <code class="directive"><a href="./mod/mod_so.html#loadmodule">LoadModule</a></code> ɾ + Ͽ ۽ Ȥ ۽ о + ִ.</p> + + <p>ġ (Ư ڰ ) DSO + <a href="programs/apxs.html">apxs</a> (<em>APache + eXtenSion</em>) ο α ִ. α + ġ ҽ Ʈ <em>ۿ</em> DSO + Ҷ Ѵ. . ġ ġҶ + <code>configure</code> <code>make install</code> + ġ C ġϰ, DSO ϱ + ÷ Ư Ϸ ɼǰ Ŀ ɼ <code>apxs</code> + α Ѵ. <code>apxs</code> ϴ ڴ + ġ ҽ Ʈ, DSO ÷ Ư + Ϸ ɼǿ Ŀ ɼǿ Ű ʰ ڽ ġ + ҽ ִ.</p> +</div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div> +<div class="section"> +<h2><a name="usage" id="usage"> </a></h2> + + <p>Apache 2.2 DSO ɿ ª ̴:</p> + + <ol> + <li> + <em> ִ</em> ġ ϰ ġϴ + . <code>mod_foo.c</code> DSO + <code>mod_foo.so</code>: + +<div class="example"><p><code> +$ ./configure --prefix=/path/to/install --enable-foo=shared<br /> +$ make install +</code></p></div> + </li> + + <li> + <em>ڰ </em> ġ ϰ ġϴ + . <code>mod_foo.c</code> DSO + <code>mod_foo.so</code>: + +<div class="example"><p><code> +$ ./configure --add-module=module_type:/path/to/3rdparty/mod_foo.c --enable-foo=shared<br /> +$ make install +</code></p></div> + </li> + + <li> + <em>߿ ϱ</em> ġ ϴ + : + +<div class="example"><p><code> +$ ./configure --enable-so<br /> +$ make install +</code></p></div> + </li> + + <li> + <em>ڰ </em> ġ ϰ ġϴ + . <a href="programs/apxs.html">apxs</a> Ͽ + ġ ҽ Ʈ <em>ۿ</em> <code>mod_foo.c</code> + DSO <code>mod_foo.so</code>: + +<div class="example"><p><code> +$ cd /path/to/3rdparty<br /> +$ apxs -c mod_foo.c<br /> +$ apxs -i -a -n foo mod_foo.la +</code></p></div> + </li> + </ol> + + <p> ϴ ϵǸ, <code>httpd.conf</code> + <code class="directive"><a href="./mod/mod_so.html#loadmodule">LoadModule</a></code> þ + Ͽ ġ о̰ .</p> +</div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div> +<div class="section"> +<h2><a name="background" id="background"></a></h2> + + <p> н <em>ü</em> (DSO) + ŷ/ε(dynamic linking/loading)̶ Ͽ, Ư + ڵ α + ּҰ о̴ ִ.</p> + + <p> ΰ о ִ. ϳ α + Ҷ <code>ld.so</code> ý α ڵ + о̴ , ٸ ϳ α + <code>dlopen()/dlsym()</code> ýȣ н δ(loader) + ý ̽ Ͽ о̴ .</p> + + <p>ù° DSO <em>̺귯(shared libraries)</em> + Ȥ <em>DSO ̺귯</em> θ, + <code>libfoo.so</code> <code>libfoo.so.1.2</code> + ̸ . ̵ ý 丮( <code>/usr/lib</code>) + ְ, Ͻ Ŀ ɾ <code>-lfoo</code> ־ + ϰ Ѵ. ̷ ̺귯 Ͽ + ǿ, α Ҷ Ŀ ɼ <code>-R</code> + , ȯ溯 <code>LD_LIBRARY_PATH</code> + Ȥ <code>/usr/lib</code> н δ + <code>libfoo.so</code> ã ִ. α + ( ã(unresolved)) ɺ(symbol) DSO ãԵȴ.</p> + + <p>DSO α ɺ ãʱ (DSO + 밡 Ϲ ڵ ̺귯̹Ƿ) ã ⼭ + . н δ ɺ ã⸦ ϹǷ α + DSO ɺ ã ʿ䰡 . ( <code>ld.so</code> + θ ڵ ƴ α ũǴ + ڵ Ϻδ.) ̺귯 ڵ带 о̴ + Ȯϴ. ̺귯 ڵ尡 α ߺؼ + Ǵ <code>libc.so</code> ý ̺귯 + ѹ DZ ũ ȴ.</p> + + <p>ι° DSO <em>ü(shared objects)</em> + Ȥ <em>DSO </em>̶ θ, (Ģ ̸ + <code>foo.so</code>) Ȯڴ Ӵ. + ϵ α ü 丮 ġϰ α + ڵ ʴ´. α + <code>dlopen()</code> Ͽ DSO ּҰ + о鿩 Ѵ. ̶ α DSO ɺ + ã ʴ´. տ н δ ڵ ϰ + ̹ о DSO ̺귯(Ư ϴ + <code>libc.so</code> ɺ) DSO ( ã) + ɺ ã´. DSO ġ ó α + ũȰͰ ɺ ˰Եȴ.</p> + + <p>DSO API ̿ϱؼ α + <code>dlsym()</code> DSO Ư ɺ ãƼ, + ϱ ġ(dispatch) ǥ <em></em> Ѵ. + ٸ α Ǻ ãƾѴ. + ̷ α Ϻθ α + ʿҶ о ʾƵ ( + ʰ) ȴٴ ̴. ⺻ α Ȯϱ + ʿ κ о ִ.</p> + + <p>̷ DSO ڿ , ּ + Ѱִ. α Ȯϱ DSO Ҷ DSO + α ɺ ã ̴. ? DSO α + ɺ " ã " (̺귯 ڽ ϴ α + ٴ) ̺귯 迡 ϸ, ÷ + ʰ ǥȭ ʾұ ̴. + ɺ(global symbol) ͽƮ(export) ʱ + DSO . DSO Ͽ α ȮϷ + Ŀ ɺ ͽƮϵ ϴ ֵ + ذå̴.</p> + + <p>̺귯 DSO Ģ ̱ + ü ϴ ̺귯 Ѵ. + ݴ α α Ȯϱ ü + ʴ´.</p> + + <p>1998 Ȯϱ DSO + Ʈ Ű (XS DynaLoader ) + Perl 5, Netscape Server <em></em> 幰. ġ + ̹ Ȯϱ ߰ ܺ + ġ ٽɱɿ ϱ ġ + ̿ ٹ ߱ 1.3 뿭 շߴ. + ġ о̴µ DSO ϵ + .</p> +</div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div> +<div class="section"> +<h2><a name="advantages" id="advantages"></a></h2> + + <p>տ DSO ϸ ִ:</p> + + <ul> + <li> μ Ͻ <code>configure</code> + ɼǴ <code>httpd.conf</code> <code class="directive"><a href="./mod/mod_so.html#loadmodule">LoadModule</a></code> Ͽ ߿ + յǹǷ Ű ϴ. ѹ + ġ ġ ٸ (ǥ SSL , ּȭ + ߰ [mod_perl, PHP3] <em></em>) + ִ.</li> + + <li> ġĿ ڰ Ͽ + Ȯ ִ. ּ Ű ڴ ġ ٽ + Ű PHP3, mod_perl, mod_fastcgi <em></em> + ߰ Ű ־ ū ̵̴.</li> + + <li>DSO <code>apxs</code> ġ ҽ Ʈ ۿ + ۾ϰ <code>apxs -i</code> <code>apachectl restart</code> + ɾ ġ + ݿ ־ ġ + ִ.</li> + </ul> + + <p>DSO ִ:</p> + + <ul> + <li>α ּҰ ڵ带 о̴ + ʴ ü ֱ ÷ DSO + .</li> + + <li>н δ ɺ ãƾϱ + 20% ʾ.</li> + + <li> ġڵ(position independent code, PIC) + ּ(absolute addressing) + ּ(relative addressing) + ʿϹǷ ÷ 5% ʴ.</li> + + <li>DSO ٸ DSO ̺귯(<code>ld -lfoo</code>) + ũ ÷ ֱ ( ELF + ÷ a.out ÷ + ʴ´) DSO . + ٸ DSO Ϸ ϴ ġ ٽɰ ġ + ٽ ϴ C ̺귯(<code>libc</code>) ٸ + / ̺귯, ġڵ带 ִ ̺귯 + ī̺(<code>libfoo.a</code>) ɺ ִ. + ٸ ڵ带 Ϸ ġ ٽ װ ϴ, + <code>dlopen()</code> ڵ带 о鿩 Ѵ.</li> + </ul> + +</div></div> +<div class="bottomlang"> +<p><span> : </span><a href="./en/dso.html" hreflang="en" rel="alternate" title="English"> en </a> | +<a href="./fr/dso.html" hreflang="fr" rel="alternate" title="Français"> fr </a> | +<a href="./ja/dso.html" hreflang="ja" rel="alternate" title="Japanese"> ja </a> | +<a href="./ko/dso.html" title="Korean"> ko </a> | +<a href="./tr/dso.html" hreflang="tr" rel="alternate" title="Türkçe"> tr </a></p> +</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">Comments</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 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 Libera.chat, or sent to our <a href="https://httpd.apache.org/lists.html">mailing lists</a>.</div> +<script type="text/javascript"><!--//--><![CDATA[//><!-- +var comments_shortname = 'httpd'; +var comments_identifier = 'http://httpd.apache.org/docs/2.4/dso.html'; +(function(w, d) { + if (w.location.hostname.toLowerCase() == "httpd.apache.org") { + d.write('<div id="comments_thread"><\/div>'); + var s = d.createElement('script'); + s.type = 'text/javascript'; + s.async = true; + s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier; + (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s); + } + else { + d.write('<div id="comments_thread">Comments are disabled for this page at the moment.<\/div>'); + } +})(window, document); +//--><!]]></script></div><div id="footer"> +<p class="apache">Copyright 2023 The Apache Software Foundation.<br />Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p> +<p class="menu"><a href="./mod/"></a> | <a href="./mod/directives.html">þ</a> | <a href="http://wiki.apache.org/httpd/FAQ">FAQ</a> | <a href="./glossary.html"></a> | <a href="./sitemap.html">Ʈ</a></p></div><script type="text/javascript"><!--//--><![CDATA[//><!-- +if (typeof(prettyPrint) !== 'undefined') { + prettyPrint(); +} +//--><!]]></script> +</body></html>
\ No newline at end of file diff --git a/docs/manual/dso.html.tr.utf8 b/docs/manual/dso.html.tr.utf8 new file mode 100644 index 0000000..941c94b --- /dev/null +++ b/docs/manual/dso.html.tr.utf8 @@ -0,0 +1,329 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml" lang="tr" xml:lang="tr"><head> +<meta content="text/html; charset=UTF-8" http-equiv="Content-Type" /> +<!-- + XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX + This file is generated from xml source: DO NOT EDIT + XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX + --> +<title>Devingen Paylaşımlı Nesne Desteği - Apache HTTP Sunucusu Sürüm 2.4</title> +<link href="./style/css/manual.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" /> +<link href="./style/css/manual-loose-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" /> +<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" /> +<script src="./style/scripts/prettify.min.js" type="text/javascript"> +</script> + +<link href="./images/favicon.ico" rel="shortcut icon" /></head> +<body id="manual-page"><div id="page-header"> +<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> +<p class="apache">Apache HTTP Sunucusu Sürüm 2.4</p> +<img alt="" src="./images/feather.png" /></div> +<div class="up"><a href="./"><img title="<-" alt="<-" src="./images/left.gif" /></a></div> +<div id="path"> +<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></div><div id="page-content"><div id="preamble"><h1>Devingen Paylaşımlı Nesne Desteği</h1> +<div class="toplang"> +<p><span>Mevcut Diller: </span><a href="./en/dso.html" hreflang="en" rel="alternate" title="English"> en </a> | +<a href="./fr/dso.html" hreflang="fr" rel="alternate" title="Français"> fr </a> | +<a href="./ja/dso.html" hreflang="ja" rel="alternate" title="Japanese"> ja </a> | +<a href="./ko/dso.html" hreflang="ko" rel="alternate" title="Korean"> ko </a> | +<a href="./tr/dso.html" title="Türkçe"> tr </a></p> +</div> + + <p>Apache HTTP Sunucusu modüler bir program olup, yönetici sadece bir + grup modül seçerek sunucuya işlevsellik ekleyebilir. Modüller, Devingen + Paylaşımlı Nesneler (DSO - Dynamic Shared Object) halinde + <code class="program"><a href="./programs/httpd.html">httpd</a></code> programından ayrı olarak derlenir. DSO modülleri + sunucunun derlenmesi sırasında derlenebileceği gibi ayrı olarak derlenip + daha sonra Apache Eklenti Aracı (Apache Extension Tool) + <code class="program"><a href="./programs/apxs.html">apxs</a></code> programı kullanılarak da sunucuya eklenebilir.</p> + + <p>Bu belgede DSO modüllerinin kullanımının yanında teorisine de + değinilecektir.</p> + </div> +<div id="quickview"><a href="https://www.apache.org/foundation/contributing.html" class="badge"><img src="https://www.apache.org/images/SupportApache-small.png" alt="Support Apache!" /></a><ul id="toc"><li><img alt="" src="./images/down.gif" /> <a href="#implementation">Gerçeklenim</a></li> +<li><img alt="" src="./images/down.gif" /> <a href="#usage">Kullanım Özeti</a></li> +<li><img alt="" src="./images/down.gif" /> <a href="#background">Artalan Bilgisi</a></li> +<li><img alt="" src="./images/down.gif" /> <a href="#advantages">Getiriler ve Götürüler</a></li> +</ul><h3>Ayrıca bakınız:</h3><ul class="seealso"><li><a href="#comments_section">Yorumlar</a></li></ul></div> +<div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div> +<div class="section"> +<h2><a name="implementation" id="implementation">Gerçeklenim</a></h2> + +<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> + + <p>Apache httpd modüllerini yüklemek için DSO desteği, Apache httpd + çekirdeğine durağan olarak ilintilenerek derlenmiş olan + <code class="module"><a href="./mod/mod_so.html">mod_so</a></code> adında bir modül tarafından sağlanır. + <code class="module"><a href="./mod/core.html">core</a></code> modülünden başka, bir DSO modülü olamayan tek modül + <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 + diğer Apache modülleri bir DSO modülüne yerleştirilebilir. Derlenmiş + modüller <code>mod_filanca.so</code> biçeminde birer DSO ismi alırlar ve + her biri istenirse <code>httpd.conf</code> dosyasında + <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 + veya yeniden başlatılırken sunucuya yüklenebilir.</p> + + <p><a href="install.html">Kurulum belgesinde</a> açıklandığı gibi, her DSO + modülü <code class="program"><a href="./programs/configure.html">configure</a></code> programının + <code>--enable-mods-static</code> seçeneği ile devredışı bırakılabilir.</p> + + <p>Apache httpd modülleri için (özellikle üçüncü parti modüller için) DSO + dosyası üretimini kolaylaştırmak amacıyla <code class="program"><a href="./programs/apxs.html">apxs</a></code> + (<dfn>APache eXtenSion</dfn>) adında yeni bir destek programı + kullanılmaktadır. Bu program Apache httpd modüllerini Apache httpd kaynak + ağacından ayrı olarak derlemek için kullanılabilir. Fikir basittir: Apache + HTTP Sunucusu derlenirken DSO dosyalarını derlemek için platforma bağımlı + derleyici ve ilintileyici seçenekleri <code class="program"><a href="./programs/apxs.html">apxs</a></code> + programının içine konur ve <code>make install</code> ile kurulum sırasında + Apache httpd C başlık dosyaları da kurulur. Böylece + kullanıcı Apache httpd dağıtımının kaynak ağacına ihtiyaç duymadan ve + platforma bağımlı derleyici ve ilintileyici seçeneklerini bilmek zorunda + kalmadan istediği Apache httpd modülünü <code class="program"><a href="./programs/apxs.html">apxs</a></code> + programını kullanarak derleyebilir.</p> +</div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div> +<div class="section"> +<h2><a name="usage" id="usage">Kullanım Özeti</a></h2> + + <p>Apache HTTP Sunucusu 2.x’in DSO özelliklerine bir giriş olarak burada + kısaca bir bilgi vermekle yetinilecektir:</p> + + <ol> + <li><p>Kaynak dosyası <code>mod_filanca.c</code> dosyasında dağıtılan bir + <em>özgün</em> Apache htpd modülünü <code>mod_filanca.so</code> isminde + bir DSO modülü olarak derlemek ve kurmak için şöyle yapılır:</p> + +<div class="example"><p><code> + $ ./configure --prefix=/kurulum/yeri --enable-filanca<br /> + $ make install +</code></p></div> + </li> + + <li><p>Apache HTTP Sunucusunu tüm modüller etkin olarak + derleyebilirsiniz. Fakat sunucunun başlatılması sırasında sadece temel + modüller yüklenir. Daha sonra <code>httpd.conf</code> içindeki + <code class="directive"><a href="./mod/mod_so.html#loadmodule">LoadModule</a></code> yönergelerini etkin + veya etkisiz hale getirerek yüklenecek modülleri + değiştirebilirsiniz.</p> + +<div class="example"><p><code> +$ ./configure --enable-mods-shared=all<br /> +$ make install +</code></p></div> + </li> + + <li><p>Bazı modüller sadece geliştiriciler içindir ve bunlar tüm + modüllerin derlenmesini (<em>all</em>) seçseniz bile derlenmeyecektir. + Geliştirici modülleri dehil tüm modülleri derlemek isterseniz + <em>reallyall</em> kullanınız. Ek olarak, derlenmiş modüller için + kullanılan <code class="directive"><a href="./mod/mod_so.html#loadmodule">LoadModule</a></code> + yönergelerinin tamamını <code>--enable-load-all-modules</code> derleme + seçeneği ile etkin kılabilirsiniz.</p> + +<div class="example"><p><code> +$ ./configure --enable-mods-shared=reallyall --enable-load-all-modules<br /> +$ make install +</code></p></div> + </li> + + <li><p>Kaynak dosyası <code>mod_filanca.c</code> dosyasında dağıtılan bir + <em>üçüncü parti</em> Apache httpd modülü <code>mod_filanca.so</code> + isminde bir DSO modülü olarak Apache httpd kaynak ağacının dışında + <code class="program"><a href="./programs/apxs.html">apxs</a></code> kullanarak derlemek ve kurmak için şöyle + yapılır:</p> + +<div class="example"><p><code> +$ cd /bir/kurulum/yeri<br /> +$ apxs -c mod_filanca.c<br /> +$ apxs -aci filanca mod_filanca.la +</code></p></div> + </li> + </ol> + + <p>Tüm durumlarda derlenen paylaşımlı modülü Apache httpd’nin etkin + kılabilmesi 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> + + <p>Ayrıntılı bilgi için <a href="programs/apxs.html">apxs belgelerine</a> + bakınız.</p> +</div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div> +<div class="section"> +<h2><a name="background" id="background">Artalan Bilgisi</a></h2> + + <p>Günümüzün Unix türevlerinde var olan bir mekanizma sayesinde + çalıştırılabilir bir programın adres uzayına çalışma anında yüklenmek + veya ilintilenmek üzere <em>Devingen Paylaşımlı Nesneler</em> (DSO - + Dynamic Shared Object) adı verilen, özel bir biçem kullanarak kodlanmış + program parçaları oluşturulabilir.</p> + + <p>Bu yükleme normalde iki yolla yapılabilir: Ya çalıştırılabilir + programın başlatılması sırasında yüklenen <code>ld.so</code> adlı bir + sistem programınının devingen olarak yüklenmesi ile ya da + çalıştırılabilir programın içinden Unix yükleyicisine programsal sistem + arayüzü sağlayan <code>dlopen()/dlsym()</code> sistem çağrılarının elle + yapılması suretiyle.</p> + + <p>İlk yöntemde kullanılan DSO’lara genelde <em>paylaşımlı + kütüphaneler</em> veya <em>DSO kütüphaneleri</em> adı verilir ve + bunların dosyaları <code>libfilanca.so</code> veya + <code>libfilanca.so.1.2</code> biçiminde isimlendirilir. Belli bir + sistem dizininde (normalde <code>/usr/lib</code>) bulunurlar ve derleme + sırasında ilintileyici komutuna <code>-lfilanca</code> şeklinde + belirtilerek çalıştırılabilir programla ilintilenirler. Doğrudan + çalıştırılabilir koda eklenen bu kodlar Unix yükleyicisinin programın + başlatılması sırasında kütüphaneyi <code>/usr/lib</code> altında + <code>libfilanca.so</code> adıyla bulabilmesini sağlar. Kütüphanelerin + aranacağı yerler ya <code>-R</code> gibi bir ilintileyici seçeneği ile + koda eklenir ya da arama yolları <code>LD_LIBRARY_PATH</code> ortam + değişkeni aracılığıyla yapılandırılır. Böylece çalıştırılabilir + programda henüz çözümlenmemiş simgeler DSO içinde bulunarak + çözümlenebilir.</p> + + <p>Çalıştırılabilir program içindeki simgelere normalde DSO içinden + atıfta bulunulmaz (genel kod kütüphanesinin başka programlarca da + kullanılması nedeniyle). Bu bakımdan DSO tarafında böyle bir çözümleme + yapılmaz. Çalıştırılabilir program da DSO’daki simgeleri kendisi + çözümlemeye uğraşmaz, bu işlemlerden tamamen Unix yükleyicisi + (<code>ld.so</code>) sorumludur. (Aslında, <code>ld.so</code>’yu + çağıracak kod, her çalıştırılabilir programın içine ilintilenmiş + (durağan değil) başlatma kodunun bir parçasıdır.) Programlar tarafından + ortaklaşa kullanılan kütüphanelerin devingen olarak yüklenmesinin sebebi + basittir: Kütüphane kodu <code>libc.so</code> gibi bir sistem + kütüphanesine bir kere kaydedilip disk alanından yer kazanılmış + olur.</p> + + <p>İkinci yöntemde kullanılan DSO’lara yine <em>paylaşımlı + kütüphaneler</em> veya <em>DSO kütüphaneleri</em> adı verilir fakat + bunların dosyaları geçerli kabule göre <code>filanca.so</code> gibi + isimlendirilse de genelde keyfi olarak seçilen bir dosya uzantısı + kullanılarak isimlendirilirler. Bu dosyalar genellikle programa özel bir + dizinde dururlar ve bu dosyaları kullanacak olan çalıştırılabilir + programla aralarında özdevimli olarak bağ kurulmamıştır. Bunun yerine, + çalıştırılabilir program DSO’yu çalışma anında <code>dlopen()</code> + sayesinde kendi adres uzayına ekler. Çalıştırılabilir program için + DSO’daki simgeler bu sırada çözümlenmez. Özdevimli olarak devreye + giren Unix yükleyicisi, (varsa) artakalan simgeleri, çalıştırılabilir + ihraç edilen simge kümelerini (ve özellikle her yerde hazır ve nazır + <code>libc.so</code> içindeki tüm simgeleri) kullanarak çözümler. Bu + yolla DSO, çalıştırılabilir programın simge kümesi bilgilerini sanki + kendisine baştan durağan olarak ilintilenmiş gibi ulaşabilir.</p> + + <p>Son olarak, DSO’nun programlama arayüzünün getirilerinden yararlanmak + amacıyla çalıştırılabilir program, daha sonra dağıtım tabloları vb. + yerlerde kullanmak üzere <code>dlsym()</code> üzerinden DSO’daki belli + simgeleri çözümlemek zorundadır. Başka bir deyişle: Çalıştırılabilir + program ihtiyaç duyduğu her simgeyi kullanmak için kendisi çözümleme + yapmak zorundadır. Böyle bir mekanizmanın getirisi, programın isteğe + bağlı parçalarının gerekli olana kadar yüklenmemesidir (böylece daha az + bellek alanı kullanılır). Gerektiği zaman programın işlevselliğini + arttırmak amacıyla bu parçalar devingen olarak programa + yüklenebilir.</p> + + <p>DSO mekanizmasının bu basit gibi görünen işleyişinde zorluk içeren bir + adım şudur (başkaları da olabilir): Bir programın işlevselliğini + genişletmek için DSO kullanılırken (ikinci yöntem) çalıştırılabilir + programdan DSO için simgelerin çözümlenmesi. Zorluğun sebebi, + "tersine çözümleme" yapılmasıdır; çalıştırılabilir programın simge + kümesindeki DSO simgeleri kütüphane tasarımına aykırı bir şekilde + çözümlenir ve bu uygulama tüm platformlarda hazır olarak + desteklenmediği gibi standartlaşmış da değildir. Geçer uygulamada + çalıştırılabilir programın evrensel simgeleri çoğunlukla yeniden dışa + verilmez ve bu bakımdan bir DSO içinde kullanılmaları uygun değildir. + Esas sorun, çalıştırılabilir bir programın işlevselliğini çalışma + anında genişletmek için DSO kullanımı sırasında ilintileyicinin tüm + evrensel simgeleri dışa vermesini zorlamanın bir yolunu bulmaktır.</p> + + <p>Paylaşımlı kütüphane yaklaşımı bu bakımdan türünün tek örneğidir, + çünkü DSO mekanizması özellikle bunun için tasarlanmıştır, dolayısıyla + işletim sisteminin sağladığı hemen hemen tüm kütüphaneler için + kullanılabilir.</p> +</div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div> +<div class="section"> +<h2><a name="advantages" id="advantages">Getiriler ve Götürüler</a></h2> + + <p>Yukarıda bahsedilen DSO’ya dayalı özelliklerin getirileri + şunlardır:</p> + + <ul> + <li>Sunucu paketi çalışma anında daha esnektir çünkü, sunucuyu + oluşturan parçalar derleme sırasında <code class="program"><a href="./programs/configure.html">configure</a></code> + seçenekleriyle birleştirilmek yerine <code>httpd.conf</code> içinde + <code class="directive"><a href="./mod/mod_so.html#loadmodule">LoadModule</a></code> yönergeleri + sayesinde çalışma anında birleştirilebilmektedir. Bu yolla, örneğin + tek bir Apache kurulumuyla birbirinden farklı yapılandırmalara sahip + çok sayıda sunucu çalıştırmak mümkündür. (standart veya SSL sürümü; + basitleştirilmiş veya devingen sürümü [mod_perl, PHP3], vs.)</li> + + <li>Sunucu paketi kurulumdan sonra bile üçüncü parti modüllerle kolayca + genişletilebilir. Bu özellikle, bir Apache temel paketinin yanında + PHP, mod_perl, mod_security gibi ek paketler oluşturan paket + dağıtıcılarına büyük yarar sağlar.</li> + + <li>Yeni Apache httpd modülleri için daha kolay prototip + geliştirilebilir: Modül kaynak kodunu DSO/<code class="program"><a href="./programs/apxs.html">apxs</a></code> çifti + sayesinde Apache httpd kaynak ağacının dışında derleyip modülün yeni + bir sürümünü bir <code>apxs -i</code> komutunun ardından + <code>apachectl restart</code> yaparak çalışan bir Apache HTTP + Sunucusunda denemek daha kolay hale getirilmiştir.</li> + </ul> + + <p>DSO kullanımının götürüleri ise şunlardır:</p> + + <ul> + <li>İlk yüklemede %20 yavaşlama: Unix yükleyicisi simgeleri çözümlemek + zorunda olduğundan sunucu ilk başlatılırken yaklaşık %20 daha yavaş + faaliyete geçer.</li> + + <li>Çalışma sırasında % 5 yavaşlama: Konumdan bağımsız kodun (PIC - + Position Independent Code) göreli adresleme için karmaşık oyunlara + girmesi ve bunun mutlak adresleme kadar hızlı olmaması nedeniyle + sunucu bazı platformlarda çalışma anında yaklaşık %5 daha yavaş + çalışabilir.</li> + + <li>DSO'nun tüm modüller için uygun olmaması: DSO modülleri bazı + platformlarda diğer DSO temelli kütüphanelerle ilintilenemediğinden + (<code>ld -lfilanca</code>) DSO mekanizmasını tüm modül türleri için + kullanamazsınız (örneğin a.out temelli platformlar bu işlevselliği + ELF temelli platformlar kadar iyi sağlamaz). Başka bir deyişle, DSO + dosyaları olarak derlenmiş modüllerin kullanabileceği simgeler ya + Apache httpd temel kodunda vardır ya Apache httpd temel kodunun + kullandığı C kütüphanesinde (<code>libc</code>) ve diğer durağan ve + devingen kütüphanelerde vardır ya da konumdan bağımsız kodu içeren + durağan kütüphane arşivlerinde (<code>libfilanca.a</code>) + vardır. Diğer modülleri kullanmak için tek şansınız ya Apache httpd + çekirdeğinin modüle bir atıf içermesini sağlamak ya da modül kodunu + <code>dlopen()</code> vasıtasıyla yüklemektir.</li> + </ul> + +</div></div> +<div class="bottomlang"> +<p><span>Mevcut Diller: </span><a href="./en/dso.html" hreflang="en" rel="alternate" title="English"> en </a> | +<a href="./fr/dso.html" hreflang="fr" rel="alternate" title="Français"> fr </a> | +<a href="./ja/dso.html" hreflang="ja" rel="alternate" title="Japanese"> ja </a> | +<a href="./ko/dso.html" hreflang="ko" rel="alternate" title="Korean"> ko </a> | +<a href="./tr/dso.html" title="Türkçe"> tr </a></p> +</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">Yorumlar</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 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 Libera.chat, or sent to our <a href="https://httpd.apache.org/lists.html">mailing lists</a>.</div> +<script type="text/javascript"><!--//--><![CDATA[//><!-- +var comments_shortname = 'httpd'; +var comments_identifier = 'http://httpd.apache.org/docs/2.4/dso.html'; +(function(w, d) { + if (w.location.hostname.toLowerCase() == "httpd.apache.org") { + d.write('<div id="comments_thread"><\/div>'); + var s = d.createElement('script'); + s.type = 'text/javascript'; + s.async = true; + s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier; + (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s); + } + else { + d.write('<div id="comments_thread">Comments are disabled for this page at the moment.<\/div>'); + } +})(window, document); +//--><!]]></script></div><div id="footer"> +<p class="apache">Copyright 2023 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> +<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[//><!-- +if (typeof(prettyPrint) !== 'undefined') { + prettyPrint(); +} +//--><!]]></script> +</body></html>
\ No newline at end of file |