mirror of
https://github.com/apache/httpd.git
synced 2025-11-02 06:53:27 +03:00
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1331236 13f79535-47bb-0310-9956-ffa450edef68
176 lines
8.6 KiB
XML
176 lines
8.6 KiB
XML
<?xml version="1.0" encoding="UTF-8" ?>
|
|
<!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd">
|
|
<?xml-stylesheet type="text/xsl" href="../style/manual.ja.xsl"?>
|
|
<!-- English Revision: 420990:1331227 (outdated) -->
|
|
|
|
<!--
|
|
Licensed to the Apache Software Foundation (ASF) under one or more
|
|
contributor license agreements. See the NOTICE file distributed with
|
|
this work for additional information regarding copyright ownership.
|
|
The ASF licenses this file to You under the Apache License, Version 2.0
|
|
(the "License"); you may not use this file except in compliance with
|
|
the License. You may obtain a copy of the License at
|
|
|
|
http://www.apache.org/licenses/LICENSE-2.0
|
|
|
|
Unless required by applicable law or agreed to in writing, software
|
|
distributed under the License is distributed on an "AS IS" BASIS,
|
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
See the License for the specific language governing permissions and
|
|
limitations under the License.
|
|
-->
|
|
|
|
<modulesynopsis metafile="mod_so.xml.meta">
|
|
|
|
<name>mod_so</name>
|
|
<description>起動時や再起動時に実行コードとモジュールをサーバにロードする
|
|
</description>
|
|
<status>Extension</status>
|
|
<sourcefile>mod_so.c</sourcefile>
|
|
<identifier>so_module</identifier>
|
|
<compatibility>このモジュールは Window では (常に含まれている) Base
|
|
モジュールです</compatibility>
|
|
|
|
<summary>
|
|
|
|
<p>いくつかのオペレーティングシステムでは、サーバの再コンパイルをする代わりに、
|
|
このモジュールを使用して
|
|
<a href="../dso.html">動的共有オブジェクト</a>
|
|
(DSO) 機構により、実行時に Apache にモジュールを読み込ませることが
|
|
できます。</p>
|
|
|
|
<p>Unix 上では、読み込まれるコードは通常は共有オブジェクトファイル
|
|
(普通 <code>.so</code> という拡張子が付いています) からです。
|
|
Windows 上ではこのモジュールの拡張子は <code>.so</code> か <code>.dll</code>
|
|
です。</p>
|
|
|
|
<note type="warning"><title>警告</title>
|
|
<p>Apache 1.3 のモジュールを直接 Apache 2.0 で使うことはできません
|
|
― モジュールは Apache 2.0 用に動的にロードされるか、
|
|
直接組み込まれるために修正されなければなりません。</p>
|
|
</note>
|
|
</summary>
|
|
|
|
<section><title>Windows 用のロード可能なモジュールを作成する</title>
|
|
|
|
<note><title>注</title>
|
|
<p>Apache 1.3.15 と 2.0 とで Windows のモジュール名の形式は変更されました
|
|
― モジュールは mod_foo.so という名前になりました。</p>
|
|
|
|
<p>まだ mod_so で ApacheModuleFoo.dll という名前のモジュールも
|
|
ロードされますが、新しい名前の付け方を使う方が好まれます。モジュールを
|
|
2.0 用に移植しているのであれば、2.0 の習慣に合うように名前を
|
|
修正してください。</p></note>
|
|
|
|
<p>Apache のモジュール API は UNIX と Windows 間では変更されていません。
|
|
多くのモジュールは全く変更なし、もしくは簡単な変更により Windows
|
|
で実行できるようになります。ただし、それ以外の Windows には無い Unix
|
|
アーキテクチャーの機能に依存したモジュールは動作しません。</p>
|
|
|
|
<p>モジュールが実際に動作するときは、
|
|
二つの方法のどちらかでサーバに追加することができます。まず、Unix
|
|
と同様にサーバにコンパイルして組み込むことができます。Windows
|
|
用の Apache は Unix 用の Apache にある <code>Configure</code>
|
|
プログラムがありませんので、モジュールのソースファイルを
|
|
ApacheCore プロジェクトファイルに追加し、シンボルを
|
|
<code>os\win32\modules.c</code> ファイルに追加する必要があります。</p>
|
|
|
|
<p>二つ目はモジュールを DLL としてコンパイルする方法です。
|
|
DLL は共有ライブラリで、実行時に
|
|
<code><directive>LoadModule</directive></code>
|
|
ディレクティブによりサーバに読み込むことができます。これらのモジュール
|
|
DLL はそのまま配布することが可能で、サーバを再コンパイルすることなく、Windows
|
|
用の Apache のすべてのインストールで実行することができます。</p>
|
|
|
|
<p>モジュール DLL を作成するためには、
|
|
モジュールの作成に小さな変更を行なう必要があります。
|
|
つまり、モジュールのレコード (これは後で作成されます。
|
|
以下を参照してください) が DLL からエクスポートされなければなりません。
|
|
これを行なうには、<code>AP_MODULE_DECLARE_DATA</code> (Apache
|
|
のヘッダファイルで定義されています) をモジュールのモジュールレコード
|
|
定義の部分に追加してください。たとえば、モジュールに</p>
|
|
<example>
|
|
module foo_module;
|
|
</example>
|
|
|
|
<p>があるとすると、それを次のもので置き換えてください。</p>
|
|
<example>
|
|
module AP_MODULE_DECLARE_DATA foo_module;
|
|
</example>
|
|
|
|
<p>Unix 上でもこのモジュールを
|
|
変更無しで使い続けられるように、このマクロは Windows
|
|
上でのみ効力を持ちます。<code>.DEF</code>
|
|
ファイルの方を良く知っているという場合は、
|
|
代わりにそれを使ってモジュールレコードを
|
|
エクスポートすることもできます。</p>
|
|
<p>さあ、あなたのモジュールの DLL を作成しましょう。これを、
|
|
libhttpd.lib 共有ライブラリがコンパイルされたときに作成された
|
|
ibhttpd.lib エクスポートライブラリとリンクしてください。この時に、
|
|
Apache のヘッダファイルが正しい位置にあるように、
|
|
コンパイラの設定を変える必要があるかもしれません。
|
|
このライブラリはサーバルートの modules ディレクトリにあります。
|
|
ビルド環境が正しく設定されるように、既存のモジュール用の .dsp を
|
|
取ってくるのが一番良いでしょう。もしくは、あなたの .dsp と
|
|
コンパイラとリンクのオプションを比較する、というものでも良いです。</p>
|
|
|
|
<p>これで DLL 版のモジュールが作成されているはずです。
|
|
サーバルートの <code>modules</code>
|
|
ディレクトリにモジュールを置いて、
|
|
<code><directive>LoadModule</directive></code>
|
|
ディレクティブを使って読み込んでください。</p>
|
|
</section>
|
|
|
|
<directivesynopsis>
|
|
<name>LoadFile</name>
|
|
<description>指定されたオブジェクトファイルやライブラリをリンクする</description>
|
|
<syntax>LoadFile <em>filename</em> [<em>filename</em>] ...</syntax>
|
|
<contextlist>
|
|
<context>server config</context>
|
|
</contextlist>
|
|
|
|
<usage>
|
|
|
|
<p>LoadFile ディレクティブは、サーバが起動されたときや再起動されたときに、
|
|
指定されたオブジェクトファイルやライブラリをリンクします。
|
|
これはモジュールが動作するために必要になるかもしれない追加の
|
|
コードを読み込むために使用されます。<em>Filename</em> は絶対パスか、<a
|
|
href="core.html#serverroot">ServerRoot</a> からの相対パスです。</p>
|
|
|
|
<p>例:</p>
|
|
|
|
<example>LoadFile libexec/libxmlparse.so</example>
|
|
|
|
</usage>
|
|
</directivesynopsis>
|
|
|
|
<directivesynopsis>
|
|
<name>LoadModule</name>
|
|
<description>オブジェクトファイルやライブラリをリンクし、使用モジュールの
|
|
リストに追加する</description>
|
|
<syntax>LoadModule <em>module filename</em></syntax>
|
|
<contextlist>
|
|
<context>server config</context>
|
|
</contextlist>
|
|
|
|
<usage>
|
|
|
|
<p>LoadModule ディレクティブは <em>filename</em>
|
|
というオブジェクトファイルおよびライブラリをリンクし、<em>module</em>
|
|
という名前のモジュールの構造をアクティブなモジュールのリストに追加します。
|
|
<em>Module</em> はファイル中の <code>module</code>
|
|
型の外部変数の名前で、モジュールのドキュメントに
|
|
<a href="module-dict.html#moduleidentifier"
|
|
>モジュール識別子</a>として書かれているものです。例 :</p>
|
|
|
|
<example>
|
|
LoadModule status_module modules/mod_status.so
|
|
</example>
|
|
|
|
<p>これは ServerRoot の modules サブディレクトリから指定された名前の
|
|
モジュールをロードします。</p>
|
|
</usage>
|
|
|
|
</directivesynopsis>
|
|
</modulesynopsis>
|