1 <?xml version="1.0" encoding="UTF-8" ?>
2 <!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd">
3 <?xml-stylesheet type="text/xsl" href="../style/manual.ja.xsl"?>
4 <!-- English Revision: 1433861:1727637 (outdated) -->
7 Licensed to the Apache Software Foundation (ASF) under one or more
8 contributor license agreements. See the NOTICE file distributed with
9 this work for additional information regarding copyright ownership.
10 The ASF licenses this file to You under the Apache License, Version 2.0
11 (the "License"); you may not use this file except in compliance with
12 the License. You may obtain a copy of the License at
14 http://www.apache.org/licenses/LICENSE-2.0
16 Unless required by applicable law or agreed to in writing, software
17 distributed under the License is distributed on an "AS IS" BASIS,
18 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
19 See the License for the specific language governing permissions and
20 limitations under the License.
23 <modulesynopsis metafile="mod_so.xml.meta">
26 <description>起動時や再起動時に実行コードとモジュールをサーバにロードする
28 <status>Extension</status>
29 <sourcefile>mod_so.c</sourcefile>
30 <identifier>so_module</identifier>
31 <compatibility>このモジュールは Window では (常に含まれている) Base
32 モジュールです</compatibility>
36 <p>いくつかのオペレーティングシステムでは、サーバの再コンパイルをする代わりに、
38 <a href="../dso.html">動的共有オブジェクト</a>
39 (DSO) 機構により、実行時に Apache HTTP Server にモジュールを読み込ませることが
42 <p>Unix 上では、読み込まれるコードは通常は共有オブジェクトファイル
43 (普通 <code>.so</code> という拡張子が付いています) からです。
44 Windows 上ではこのモジュールの拡張子は <code>.so</code> か <code>.dll</code>
47 <note type="warning"><title>警告</title>
48 <p>Apache HTTP Server のあるメジャーバージョン向けにビルドされたモジュールは一般に
49 他のメジャーバージョンでは動きません。(例えば 1.3 と 2.0、 2.0 と 2.2)
50 またメジャーバージョン間ではAPIの変更がしばしば発生し、そのため新しい
51 メジャーバージョン向けにモジュールの修正が必要になることがあります。</p>
55 <section><title>Windows 用のロード可能なモジュールを作成する</title>
57 <note><title>注</title>
58 <p>Windows において動的にロードされるモジュールの拡張子は普通 <code>.dll</code>
59 ですが、Apache httpd のモジュールは <code>mod_whatever.so</code>
60 といった名前を持ちます。これは、他のプラットフォームでの通常の形式に
61 あわせたものです。しかしながら、サードパーティ製モジュール、例えばPHPなど、
62 は今でも <code>.dll</code> の拡張子を使っています。</p>
64 <p>まだ <code>mod_so</code> で <code>ApacheModuleFoo.dll</code> という名前の
65 モジュールもロードされますが、新しい名前の付け方を使う方が好まれます。
66 モジュールを 2.0 用に移植しているのであれば、2.0 の習慣に合うように名前を
69 <p>Apache httpd のモジュール API は UNIX と Windows 間では変更されていません。
70 多くのモジュールは全く変更なし、もしくは簡単な変更により Windows
71 で実行できるようになります。ただし、それ以外の Windows には無い Unix
72 アーキテクチャーの機能に依存したモジュールは動作しません。</p>
75 二つの方法のどちらかでサーバに追加することができます。まず、Unix
76 と同様にサーバにコンパイルして組み込むことができます。Windows
77 用の Apache httpd は Unix 用の Apache にある <code>Configure</code>
78 プログラムがありませんので、モジュールのソースファイルを
79 ApacheCore プロジェクトファイルに追加し、シンボルを
80 <code>os\win32\modules.c</code> ファイルに追加する必要があります。</p>
82 <p>二つ目はモジュールを DLL としてコンパイルする方法です。
84 <code><directive>LoadModule</directive></code>
85 ディレクティブによりサーバに読み込むことができます。これらのモジュール
86 DLL はそのまま配布することが可能で、サーバを再コンパイルすることなく、Windows
87 用の Apache httpd のすべてのインストールで実行することができます。</p>
89 <p>モジュール DLL を作成するためには、
90 モジュールの作成に小さな変更を行なう必要があります。
91 つまり、モジュールのレコード (これは後で作成されます。
92 以下を参照してください) が DLL からエクスポートされなければなりません。
93 これを行なうには、<code>AP_MODULE_DECLARE_DATA</code> (Apache httpd
94 のヘッダファイルで定義されています) をモジュールのモジュールレコード
95 定義の部分に追加してください。たとえば、モジュールに</p>
100 <p>があるとすると、それを次のもので置き換えてください。</p>
102 module AP_MODULE_DECLARE_DATA foo_module;
106 変更無しで使い続けられるように、このマクロは Windows
107 上でのみ効力を持ちます。<code>.DEF</code>
108 ファイルの方を良く知っているという場合は、
111 <p>さあ、あなたのモジュールの DLL を作成しましょう。これを、
112 libhttpd.lib 共有ライブラリがコンパイルされたときに作成された
113 ibhttpd.lib エクスポートライブラリとリンクしてください。この時に、
114 Apache httpd のヘッダファイルが正しい位置にあるように、
115 コンパイラの設定を変える必要があるかもしれません。
116 このライブラリはサーバルートの modules ディレクトリにあります。
117 ビルド環境が正しく設定されるように、既存のモジュール用の .dsp を
118 取ってくるのが一番良いでしょう。もしくは、あなたの .dsp と
119 コンパイラとリンクのオプションを比較する、というものでも良いです。</p>
121 <p>これで DLL 版のモジュールが作成されているはずです。
122 サーバルートの <code>modules</code>
124 <code><directive>LoadModule</directive></code>
125 ディレクティブを使って読み込んでください。</p>
129 <name>LoadFile</name>
130 <description>指定されたオブジェクトファイルやライブラリをリンクする</description>
131 <syntax>LoadFile <em>filename</em> [<em>filename</em>] ...</syntax>
133 <context>server config</context>
134 <context>virtual host</context>
139 <p>LoadFile ディレクティブは、サーバが起動されたときや再起動されたときに、
140 指定されたオブジェクトファイルやライブラリをリンクします。
141 これはモジュールが動作するために必要になるかもしれない追加の
142 コードを読み込むために使用されます。<em>Filename</em> は絶対パスか、<a
143 href="core.html#serverroot">ServerRoot</a> からの相対パスです。</p>
147 <highlight language="config">LoadFile libexec/libxmlparse.so</highlight>
153 <name>LoadModule</name>
154 <description>オブジェクトファイルやライブラリをリンクし、使用モジュールの
155 リストに追加する</description>
156 <syntax>LoadModule <em>module filename</em></syntax>
158 <context>server config</context>
159 <context>virtual host</context>
164 <p>LoadModule ディレクティブは <em>filename</em>
165 というオブジェクトファイルおよびライブラリをリンクし、<em>module</em>
166 という名前のモジュールの構造をアクティブなモジュールのリストに追加します。
167 <em>Module</em> はファイル中の <code>module</code>
168 型の外部変数の名前で、モジュールのドキュメントに
169 <a href="module-dict.html#moduleidentifier"
170 >モジュール識別子</a>として書かれているものです。例 :</p>
172 <highlight language="config">
173 LoadModule status_module modules/mod_status.so
176 <p>これは ServerRoot の modules サブディレクトリから指定された名前の