3

Ubuntu 10.04.2 の新規インストールで Apache 2.2.17 をコンパイルしました。apt-get を使用するだけでなく、何かをコンパイルするときに実際に何が起こっているかを発見することは学習演習であるため、自分でコンパイルすることを優先して apt-get を使用することを避けます。

私は走った:

sudo ./configure --prefix=/etc/apache --enable-module=so --enable-rule=SHARED_CORE --enable-shared=max --enable-ssl=shared --enable-rewrite=shared

義務が続きます:

sudo make && sudo make install

mod_rewrite.so と mod_ssl.so が表示されるはずだった Apache モジュール ディレクトリに、代わりに次のように表示されることを除いて、すべてがうまくいっているように見えました (Apache は問題なく起動します)。

#cd /etc/apache/modules
#ls -l
mod_rewrite.a
mod_rewrite.la
mod_ssl.a
mod_ssl.la

これらを .so ファイルに変換して、Apache 構成で LoadModule とリンクできるようにするにはどうすればよいですか?

前もって感謝します。

4

4 に答える 4

4

すべてを root として実行するべきではありません。root 権限がなくても問題なく動作./configureします。や などのディレクトリへの書き込みには root 権限が必要です。makemake install/etc/usr/bin

/etcApache の完全なインストールは言うまでもなく、実行可能ファイルには適していません。構成ファイルを に配置する場合は/etc/apache--sysconfdir=/etc/apache. カスタム ビルドの Apache をインストールする正しい場所は/usr/local.

共有モジュールを有効にするには、オプションを渡す必要があります。共有モジュール--enable-soとしてコンパイルする必要があるモジュールを に追加する必要があります--enable-mods-shared

Apache + mod_ssl (共有モジュール) + mod_rewrite (共有モジュール) の正しい構成行は、次/usr/local/apacheの構成ファイルと共にインストールされ/etc/apacheます。

./configure --prefix=/usr/local/apache --sysconfdir=/etc/apache --enable-so \
  --enable-rewrite --enable-ssl --enable-mods-shared='rewrite ssl'

Apache HTTPd の構成に成功したら、実行make後にsudo make install.

構成オプションの詳細については、Apache HTTPd ドキュメントを参照してください。

于 2011-03-10T13:17:12.397 に答える
1

私は同じ問題に苦しんでいます.静的ではなく動的モジュールとしてコンパイルされたすべての(可能な)モジュールでapache 2.2.xをコンパイルしようとしました。

configure オプション (--enable-mods-shared="list,of,modules") を使用しましたが、モジュールは共有ではなく静的としてコンパイルされました。さらに悪いことに、"httpd -M" または "apachectl configtest" を試行すると、インストールしたばかりの httpd.conf (gmake install) にリストされているにもかかわらず、"*.so" ファイルが見つからないことに関連するいくつかのエラーが表示されました。

FreeBSD のポート システムを調査したところ、それらのポートが実際にすべての共有モジュールを含む apache2.2.x を作成していることがわかりました。「構成」オプションの問題であることがわかりました。

解決するために、ポートとまったく同じように構成しました。構成時に、構成に多くの「--disable-MODULE」エントリを使用して、最初にすべてのモジュールを「無効」にしました (それらの完全なリストを見つけるのは困難ですが、取得しました)。これが私の実際の例です:

"./configure" 
"--enable-layout=FreeBSD" 
"--with-perl=/usr/local/bin/perl5.12.4" 
"--with-expat=/usr/local" 
"--with-iconv=/usr/local" 
"--with-pcre=/usr/local" 
"--disable-authn-file" 
"--disable-authn-default" 
"--disable-authz-host" 
"--disable-authz-groupfile" 
"--disable-authz-user" 
"--disable-authz-default" 
"--disable-auth-basic" 
"--disable-charset-lite" 
"--disable-include" 
"--disable-log-config" 
"--disable-env" 
"--disable-setenvif" 
"--disable-mime" 
"--disable-status" 
"--disable-autoindex" 
"--disable-asis" 
"--disable-cgid" 
"--disable-cgi" 
"--disable-negotiation" 
"--disable-dir" 
"--disable-imagemap" 
"--disable-actions" 
"--disable-userdir" 
"--disable-alias" 
"--disable-filter" 
"--disable-substitute" 
"--disable-proxy" 
"--disable-proxy-connect" 
"--disable-proxy-ftp" 
"--disable-proxy-http" 
"--disable-proxy-ajp" 
"--disable-proxy-balancer" 
"--disable-proxy-scgi" 
"--disable-reqtimeout" 
"--enable-so" 
"--enable-mods-shared=auth_basic auth_digest authn_file authn_dbm authn_anon authn_default authn_alias authz_host authz_groupfile authz_user authz_dbm authz_owner authz_default cache disk_cache file_cache dav dav_fs actions alias asis autoindex cern_meta cgi charset_lite deflate dir dumpio env expires headers imagemap include info log_config logio mime mime_magic negotiation rewrite setenvif speling status unique_id userdir usertrack vhost_alias filter version reqtimeout ssl" 
"--with-dbm=sdbm" 
"--with-ssl=/usr" 
"--disable-ipv6" 
"--with-devrandom" 
"--with-mpm=worker" 
"--prefix=/usr/local" 
"--mandir=/usr/local/man" 
"--infodir=/usr/local/info/" 

このようにして、すべての apache2.2.x モジュールが静的ではなく動的としてビルドされました。それらを「--disable-XXX」するのを忘れて、「--enable-XXX」または「--enable-mods-shared=XXX,YYY,ZZZ」だけを試みても、機能しません。「--enable-mods-shared」構成オプションを設定する前に、それらを無効にする必要があります。

于 2014-12-16T20:05:33.517 に答える
0

これを試して

sudo ./configure --prefix=/etc/apache --enable-so --enable-shared=max --enable-rewrite -enable-mods-shared="all ssl ldap cache proxy authn_alias mem_cache file_cache authnz_ldap charset_lite dav_lock disk_cache"

警告: --enable-mods-shared=all は、実際にはすべてのモジュールをビルドするわけではありません。

--enable-shared=max は無効です。「ほとんど」を使いたかったと思いますか?

http://httpd.apache.org/docs/2.2/programs/configure.html

于 2011-03-10T13:16:53.080 に答える
0

素晴らしい。ご協力ありがとうございました。

数回の試行が必要でしたが、最終的に機能するようになりました。.a および .la ファイルを生成する代わりに、モジュールが正しくコンパイルされる前に、以前のバージョンの Apache のソースをダウンロードする必要がありました。それが、configure/make/install プロセス中に、私が気付いていない何らかのキャッシュが行われており、以前の (間違った) コンパイルの試みの一部が何らかの形で再実行されていたためか、またはおそらく再実行されていたためかどうかはわかりません。それは Apache の 2.2.17 バージョンに関係していました - よくわかりません。とにかく、それは最終的にはうまくいきました。

于 2011-03-12T12:51:27.210 に答える