momoto.github.io

Apache HTTP Server 2.4.6をインストールする(ソースからビルドする方法)

 Apache HTTP Server 2.4.6をソースコードからビルドして、Unix系システムへインストールする手引きです。 この記事ではCentOS 6.4環境でインストールの例を示しますが、自身でソースからビルドする方法は特定のLinuxディストリビューションに依りません。

 インストールを行うユーザは、インストール先ディレクトリに対して書込み権限をもっている必要があります。/usr/local/* にインストールする場合、通常、root権限が必要です。

  1. ソースコードを取得する

     ソースコードをインストールするマシンに用意します。 インターネットからダウンロードする場合、httpd.apache.orgにソースコードのURLが示されています。 bzip2、gzipのアーカイブが用意されていますので、マシンで解凍・展開できる形式を選択してください。

     ダウンロードにはcURLやGNU Wgetなどのダウンロードマネージャやウェブブラウザを使用します。 次の例では、cURLをつかって理化学研究所のミラーからhttpd-2.4.6.tar.gzをダウンロードします。

    [root@localhost ~]# curl -LsO http://ftp.riken.jp/net/apache//httpd/httpd-2.4.6.tar.gz
    

     取得したアーカイブファイルは適宜、解凍・展開して、ワーキングディレクトリを移動させます。 FHSに従うシステムであれば、独自にインストールするソフトウェアのためのディレクトリ /usr/local が予め用意されていますので、この記事ではソースコードを /usr/local/src に配置してインストールをすすめます。

    [root@localhost ~]# tar xfz httpd-2.4.6.tar.gz -C /usr/local/src/
    [root@localhost ~]# cd /usr/local/src/httpd-2.4.6/
    [root@localhost httpd-2.4.6]# 
    
  2. インストール要件を満たす

     マシンがインストールの要件を満たしている必要があります。 要件についてはDocumentationに詳しい説明があります。

    • Cコンパイラ

      [root@localhost ~]# yum install gcc
      
    • Make

      [root@localhost ~]# yum install make
      
    • APR – 予めシステムに備わっていない場合(またはシステムが提供するバージョンを使用したくない場合)はapr.apache.orgから取得してhttpdに含めてビルドします。取得したAPRとAPR-Utilはバージョン番号を取り除いて”./srclib/apr”と”./srclib/apt-util”に展開します。

      [root@localhost httpd-2.4.6]# cd srclib/
      [root@localhost srclib]# curl -Lso apr-1.4.8.tar.gz http://ftp.jaist.ac.jp/pub/apache//apr/apr-1.4.8.tar.gz
      [root@localhost srclib]# tar xfz apr-1.4.8.tar.gz
      [root@localhost srclib]# mv apr-1.4.8/ apr
      [root@localhost srclib]# curl -Lso apr-util-1.5.2.tar.gz http://ftp.jaist.ac.jp/pub/apache//apr/apr-util-1.5.2.tar.gz
      [root@localhost srclib]# tar xfz apr-util-1.5.2.tar.gz
      [root@localhost srclib]# mv apr-util-1.5.2/ apr-util
      
    • PCREライブラリ – www.pcre.orgやディストリビューションからインストールします。

      [root@localhost httpd-2.4.6]# yum install pcre-devel
      
  3. ビルドファイルを作成する

     configureをつかってビルドファイルを作成します。configureにオプションを与えることで、インストール先のディレクトリや有効にするモジュールを調整できます。 指定できるオプションについてはconfigure --helpDocumentationを参照してください。 ビルドの要件を満たしていない場合、configureの処理は中断されます。

     例えば、インストール先のディレクトリを /usr/local/httpd-2.4.6 として、 DSOサポートを有効、MPMpreforkと明示して、 新たに取得したAPRを使用する場合は次のようにconfigureを実行します。

    [root@localhost httpd-2.4.6]# ./configure --prefix=/usr/local/httpd-2.4.6 --enable-so --with-mpm=prefork --with-included-apr
    

     次に、configureのエラー例をいくつか示します。

    • APR not found.

      checking for APR... no
      configure: error: APR not found.  Please read the documentation.
      

       APRが正しくインストールされているか確認してください。

    • no acceptable C compiler found in $PATH

      checking for gcc... no
      checking for cc... no
      checking for cl.exe... no
      configure: error: in `/usr/local/src/httpd-2.4.6/srclib/apr':
      configure: error: no acceptable C compiler found in $PATH
      

       Cコンパイラが正しくインストールされているか確認してください。

    • pcre-config for libpcre not found.

      checking for pcre-config... false
      configure: error: pcre-config for libpcre not found. PCRE is required and available from http://pcre.org/
      

       PCREライブラリが正しくインストールされているか確認してください。

     configureの処理が終了してMakefileが作成されていれば、ビルドの段階へすすみます。

  4. ビルドとインストール

     ビルドとインストールにはmakeを使います。ディスクの容量が充分足りていることを確認してください。

    [root@localhost httpd-2.4.6]# make && make install
    

     makeの処理が無事に終了したらインストールは完了です。 configureの--prefixに指定した位置にファイルが展開されているはずです。PREFIXを指定していなかった場合は”/usr/local/apache2”になります。

    [root@localhost httpd-2.4.6]# /usr/local/httpd-2.4.6/bin/httpd -v
    Server version: Apache/2.4.6 (Unix)
    

インストール後

 必要に応じて、httpd.confの設定、起動スクリプトの設置、自動起動の設定、実行バイナリへのパスの設定を行なってください。 ソースコードのアーカイブには、標準のLSB起動スクリプトが用意されています。

[root@localhost httpd-2.4.6]# cp /usr/local/src/httpd-2.4.6/build/rpm/httpd.init /etc/init.d/httpd

動作を確認する

 最後に、ウェブサーバの動作を少し確認してみます。 ウェブサーバにとって外部のホストから動作を確認する場合はファイアウォール等の制限を受けやすいので、まずはインストールを行ったマシンからループバックで確認するとネットワークアクセスの問題と区別できます。

 FirefoxやLynxなどのブラウザや、GNU WgetやcURLをつかって、自身に対してHTTPリクエストを送信します(Wget、cURLを使う場合、HTMLの描写はされません)。 うまく動作していればドキュメントルートに予め用意されているHTMLファイルを応答するはずです。

[root@localhost ~]# lynx localhost

 ネットワークアクセスを介すると動作が確認できなくなる場合、様々な原因が考えられますが、GNU/LinuxのシステムでよくあるのはiptablesやSELinuxなどのセキュリティによるものです。 外部からのアクセスを受け入れようとする場合はHTTPのネットワーク通信を許可する必要がありますが、これらの作業は実質、セキュリティ強度を緩和しているので、マシンが接続しているネットワークや記録しているコンテンツをよく確かめて設定するべきです。 Apache HTTP Serverの領域から少し外れますが、iptablesとSELinuxの設定の確認方法を示します。

参考

関連記事