どこにApache関連のファイル群がインストールされているのか迷ったことはありませんか?
サーバーによってApacheがインストールされている場所は、/usr/local/apache2
だったり、/opt/httpd
だったり、/usr/sbin
だったりで環境によって様々です。
Apacheは、ソースからインストールする際にファイル/ディレクトリのレイアウトをconfigureオプションで設定することができます。
指定の仕方は、大きく分けて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の中身を見ると色々発見があって面白いですね