2008-08-22 4 views
1

私たちの製品リリースの一環として、(UNIX)開発マシンでコンパイルしたApache HTTP Serverバイナリを出荷します。Apache HTTP Serverをコンパイルし、そのバイナリを別の場所に再デプロイできますか?

バイナリを(UNIXサーバー上に)コンパイルしたのと同じディレクトリ構造でインストールするようにクライアントに指示します。一部のクライアントでは、これは適切ではありません。どこのソフトウェアがサーバーにソフトウェアをインストールできるかに制限があり、Apache自身をコンパイルしたくないという場合です。

Apache HTTP Serverをコンパイルする方法はありますか?そのため、環境変数を使用してインストール場所を動的に指定できますか?

私はこれを整理しようと数日を費やし、それを行う方法を見つけることができませんでした。 Apacheバイナリはコンパイル時にいくつかのディレクトリパスをハードコーディングして私たちが必要とする移植性を妨げていると信じていました。

誰でもこれを行うことができましたか?

答えて

1

この問題を解決する方法は、クライアントがバイナリのインストール、指定、コンパイルに使用する "./configure & & make"スクリプトを開発することだと思います。それは、クライアントが自分のサーバーにインストールされているすべてのソースコードを持っていることを必要とするか、またはNFS共有で利用できるようにする必要があります。

0

私は、この問題はあなたのクライアントは、インストール指定し、バイナリをコンパイルするために使用する「./configureを& &メイク」スクリプトを開発することである(周りを取得)を行うための方法を考えます。それは、クライアントが自分のサーバーにインストールされているすべてのソースコードを持っていることを必要とするか、またはNFS共有で利用できるようにする必要があります。

完全なビルドツールチェーンはもちろんですが、今日では、GCCはほとんどの主要なディストリビューションではデフォルトになっていません。クライアントに/opt/my_apache2/かそのようなものをインストールさせてもらうのは無理でしょうか?

1

Apache2を特定の場所にコンパイルしていて、クライアントが別の場所にインストールできるようにしたい場合(そして私はそれらがビルドマシンと同じアーキテクチャとOSを持っていると仮定しています) apachectlスクリプトは、アフターマーケットのハッキングを必要とします。

私はこれらの手順をテストした:

  1. は、Apache2のソースをアンパック(これは同様にかかわらず、Apache 1.3ので動作するはずです)とは./configure --prefix =は/ opt/apache2の

  2. を走りました
  3. Ran make次にsudo make installをビルドマシンにインストールします。

  4. インストールディレクトリ(/ opt/apache2)に移動し、バイナリと設定ファイルをtarおよびgzipにします。私はcd/opt/apache2を使いました。 sudo tar cf - apache2 | gzip -c>〜/ apache2.tar.gz

  5. ターゲットマシンにtarファイルを移動します。私は/opt/mynewdir/dan/apache2にインストールすることに決めました。だから、基本的に、あなたのクライアントはrpmや何かそんなものを使うことはできません - あなたがその再配置可能なものを作る方法を知らない限り(私は:-))。

  6. とにかく、クライアントのconf/httpd.confファイルは、ハードコードされた絶対パスでいっぱいになります。 apachectlスクリプトには、ハードコーディングされたパスもあります。これは単なるシェルスクリプトなので、ハックするか、sedスクリプトを使用して、古いパスをビルドマシンからクライアント上の新しいパスに変換することができます。

  7. 私はすべてのこと牛車をスキップし、ちょうど./bin/httpd -f /opt/mynewdir/dan/conf/httpd.conf :-)に役立ちます

希望を走りました。それがあなたのために働いていない場合、あなたが得るエラーメッセージをお知らせください。

0

@Hissohathair

私は@ Hissohathairの答えに1つの変化を示唆しています。

6). ./bin/httpd -d <server path> (although it can be overridden in the config file) 

apachecltには、HTTPD用の変数があります。ここでは、その変数を使用するように変更できます。

関連する問題