LoginSignup
7

More than 5 years have passed since last update.

Apacheをソースからインストールした際にファイル配置を変更する

Last updated at Posted at 2016-01-21

どこにApache関連のファイル群がインストールされているのか迷ったことはありませんか?

サーバーによってApacheがインストールされている場所は、/usr/local/apache2だったり、/opt/httpdだったり、/usr/sbinだったりで環境によって様々です。

Apacheは、ソースからインストールする際にファイル/ディレクトリのレイアウトをconfigureオプションで設定することができます

指定の仕方は、大きく分けて2種類あります。

  1. 予め定義された設定を使う場合
  2. 自分でひとつづつ定義していく場合

予め定義された設定を使う場合

apacheのソースを解凍すると中に、config.layoutというファイルが入っています。
この中に予め定義された設定が記述してあります。

この設定を使うためには、configureのオプションとして、--enable-layout=ID を付与するだけです。簡単ですね。

例)RedHat系のディレクトリレイアウトでインストールしたい場合

$ sudo ./configure --enable-layout=RedHat
$ sudo make && make install

現時点での最新版として、httpd-2.4.18をサンプルに見てみると、
予め用意された設定の種類はこのくらいあります。

  • Apache
  • GNU
  • Mac OS X Server
  • Darwin
  • RedHat
  • opt
  • SuSE
  • BSDI
  • Solaris
  • OpenBSD
  • FreeBSD
  • Debian
  • RPM
  • AIX
  • Slackware-FHS
$ cd /usr/local/src
$ curl -s -O http://www.eu.apache.org/dist//httpd/httpd-2.4.18.tar.gz
$ tar zxvf httpd-2.4.18.tar.gz
$ grep "<Layout" httpd-2.4.18/config.layout | sed -e "s/<Layout//g;s/>//g"
 Apache
 GNU
 Mac OS X Server
 Darwin
 RedHat
 opt
 SuSE
 BSDI
 Solaris
 OpenBSD
 FreeBSD
 Debian
 RPM
 AIX
 Slackware-FHS

config.layoutからいくつかレイアウトを抜粋してみます。

何も指定しない場合の初期レイアウトは、Apacheレイアウト が適用されます。
他には、OSXだったりRedHatだったりするとこんな感じなります。

#   Classical Apache path layout.
<Layout Apache>
    prefix:        /usr/local/apache2
    exec_prefix:   ${prefix}
    bindir:        ${exec_prefix}/bin
    sbindir:       ${exec_prefix}/bin
    libdir:        ${exec_prefix}/lib
    libexecdir:    ${exec_prefix}/modules
    mandir:        ${prefix}/man
    sysconfdir:    ${prefix}/conf
    datadir:       ${prefix}
    installbuilddir: ${datadir}/build
    errordir:      ${datadir}/error
    iconsdir:      ${datadir}/icons
    htdocsdir:     ${datadir}/htdocs
    manualdir:     ${datadir}/manual
    cgidir:        ${datadir}/cgi-bin
    includedir:    ${prefix}/include
    localstatedir: ${prefix}
    runtimedir:    ${localstatedir}/logs
    logfiledir:    ${localstatedir}/logs
    proxycachedir: ${localstatedir}/proxy
</Layout>

#   Darwin/Mac OS Layout
<Layout Darwin>
    prefix:        /usr
    exec_prefix:   ${prefix}
    bindir:        ${exec_prefix}/bin
    sbindir:       ${exec_prefix}/sbin
    libdir:        ${exec_prefix}/lib
    libexecdir:    ${exec_prefix}/libexec+
    mandir:        ${prefix}/share/man
    datadir:       /Library/WebServer
    sysconfdir:    /etc+
    installbuilddir: ${prefix}/share/httpd/build
    errordir:      ${prefix}/share/httpd/error
    iconsdir:      ${prefix}/share/httpd/icons
    htdocsdir:     ${datadir}/Documents
    manualdir:     ${datadir}/share/httpd/manual
    cgidir:        ${datadir}/CGI-Executables
    includedir:    ${prefix}/include+
    localstatedir: /var
    runtimedir:    ${localstatedir}/run
    logfiledir:    ${localstatedir}/log+
    proxycachedir: ${runtimedir}/proxy
</Layout>

#   Red Hat Linux 7.x layout
<Layout RedHat>
    prefix:        /usr
    exec_prefix:   ${prefix}
    bindir:        ${prefix}/bin
    sbindir:       ${prefix}/sbin
    libdir:        ${prefix}/lib
    libexecdir:    ${prefix}/lib/apache
    mandir:        ${prefix}/man
    sysconfdir:    /etc/httpd/conf
    datadir:       /var/www
    installbuilddir: ${datadir}/build
    errordir:      ${datadir}/error
    iconsdir:      ${datadir}/icons
    htdocsdir:     ${datadir}/html
    manualdir:     ${datadir}/manual
    cgidir:        ${datadir}/cgi-bin
    includedir:    ${prefix}/include/apache
    localstatedir: /var
    runtimedir:    ${localstatedir}/run
    logfiledir:    ${localstatedir}/log/httpd
    proxycachedir: ${localstatedir}/cache/httpd
</Layout>

ちなみに、httpdの2.2系ではレイアウトの種類が若干異なるのでご留意ください。

個別に設定する場合

大枠は何かしらのレイアウトを使いつつ、一部だけ書き換えたい場合などは個別に設定することもできます。

設定できる項目は、configure --helpで確認できます。
以下は httpd-2.4.18 での設定項目を抜粋したものです。

Installation directories:
  --prefix=PREFIX         install architecture-independent files in PREFIX
                          [/usr/local/apache2]
  --exec-prefix=EPREFIX   install architecture-dependent files in EPREFIX
                          [PREFIX]

Fine tuning of the installation directories:
  --bindir=DIR            user executables [EPREFIX/bin]
  --sbindir=DIR           system admin executables [EPREFIX/sbin]
  --libexecdir=DIR        program executables [EPREFIX/libexec]
  --sysconfdir=DIR        read-only single-machine data [PREFIX/etc]
  --sharedstatedir=DIR    modifiable architecture-independent data [PREFIX/com]
  --localstatedir=DIR     modifiable single-machine data [PREFIX/var]
  --libdir=DIR            object code libraries [EPREFIX/lib]
  --includedir=DIR        C header files [PREFIX/include]
  --oldincludedir=DIR     C header files for non-gcc [/usr/include]
  --datarootdir=DIR       read-only arch.-independent data root [PREFIX/share]
  --datadir=DIR           read-only architecture-independent data [DATAROOTDIR]
  --infodir=DIR           info documentation [DATAROOTDIR/info]
  --localedir=DIR         locale-dependent data [DATAROOTDIR/locale]
  --mandir=DIR            man documentation [DATAROOTDIR/man]
  --docdir=DIR            documentation root [DATAROOTDIR/doc/PACKAGE]
  --htmldir=DIR           html documentation [DOCDIR]
  --dvidir=DIR            dvi documentation [DOCDIR]
  --pdfdir=DIR            pdf documentation [DOCDIR]
  --psdir=DIR             ps documentation [DOCDIR]

まとめ

config.layoutを便利に使えば、configureでパス指定しているオプションはすっきりさせることができると思います。
昨今、パッケージマネージャを使ってhttpdをインストールすることも多いですが、ちゃんとconfigureの中身を見ると色々発見があって面白いですね :smile:

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7