2015年5月19日2021年2月11日

Mac OS X YosemiteにApache2.4をソースコードからインストール


Max OS X YosemiteにLAMP環境(Linux,Apache,MySQL,PHP)をソースコードからインストールしたときのメモです。と、言いながら、Mac OS X環境なのでLinuxではありませんが。。。

今回はApacheのインストールを行いました。
PHP,MySQLのインストールについては別記事で書いています。

前提となる環境

OS

・Mac OS X Yosemite(10.10.3)

開発環境

・XcodeとCommand Line Toolsがインストールされていること
(こちらの記事)

0.方針

自分でソースコードからビルドして遊ぶためのディレクトリとして、

/Users/ユーザ名/

内にprogramsディレクトリを作成して、すべてこの中にインストールしました。

/Users/ユーザ名/programs

です。なので、これから

/Users/ユーザ名/programs/httpd
/Users/ユーザ名/programs/php
/Users/ユーザ名/programs/mysql

というような形でインストールしていきます。

1.各種ライブラリのインストール

まず、Apacheのビルドに必要な各種ライブラリをインストールします。
今回ビルドしたのは
・APR(https://apr.apache.org/)
・APR-util(https://apr.apache.org/)
・PCRE (http://www.pcre.org/)
・zlib (http://www.zlib.net/)
・libxml2 (http://www.xmlsoft.org/)
・OpenSSL (https://www.openssl.org/)
です。

APRのビルド

./configure --prefix='/Users/ユーザ名/programs/apr'

make
make test
make install

APR-utilのビルド

./configure \
 --with-apr='/Users/ユーザ名/programs/apr' \
 --prefix='/Users/ユーザ名/programs/apr-util'

make
make test
make install

PCREのビルド

./configure \
 --enable-utf8 \
 --enable-pcre16 \
 --enable-pcre32 \
 --enable-unicode-properties \
 --with-pcre='/Users/ユーザ名/programs/pcre' \
 --prefix='/Users/ユーザ名/programs/pcre'

make
make test
make install

zlibのビルド

./configure --prefix='/Users/ユーザ名/programs/zlib'

make
make test
make install

libxml2のビルド

./configure --with-zlib='/Users/ユーザ名/programs/zlib' \
--prefix='/Users/ユーザ名/programs/libxml2'

make
make test
make install

※make install時に起こるPython関係のエラーについては今回は無視します。記事末尾に詳細記載。

OpenSSLのビルド

./Configure darwin64-x86_64-cc \
 --prefix='/Users/ユーザ名/programs/openssl'

make
make test
make install

注:OpenSSLはconfigureではなく、頭文字が大文字のConfigureです。
./Configureの”darwin64-x86_64-cc”という引数は、64bitライブラリを作成するためのオプションのようです。

Apacheのインストール

最後にApacheをビルド&インストールします。これまでビルドしてきたライブラリのパスをconfigureオプションで指定します。

./configure \
--prefix='/Users/ユーザ名/programs/httpd' \
--with-pcre='/Users/ユーザ名/programs/pcre' \
--with-z='/Users/ユーザ名/programs/zlib' \
--with-ssl='/Users/ユーザ名/programs/openssl/lib' \
--with-libxml2='/Users/ユーザ名/programs/libxml2' \
--with-apr='/Users/ユーザ名/programs/apr' \
--with-apr-util='/Users/ユーザ名/programs/apr-util' \
--with-crypto

make
make test
make install

各種ライブラリまでのパス名が同じ箇所が続いて、タイピングorコピペがめんどくさいですね(´・ω・`)。
シェルの変数を使ってスッキリ記述します。
ターミナルで

HENSUU='/Users/ユーザー名'

とするとHENSUUという変数名で値を格納することができます。
参照するときは

${HENSUU}

のように、変数名を${}で囲います。
ただし、シェルでもともと使われている変数(PATHなど)を使ってしまうと、シェルコマンドが正しく動かなくなるなど、問題が起きますので、シェル変数を使うときは注意します。
シェル変数でライブラリへのパスを置き換えた例です。

#インストールするディレクトリのトップ階層
INST_DIR='/Users/ユーザ名/programs'
#各種インストール先
PREF_HTTPD=${INST_DIR}/httpd
PREF_PCRE=${INST_DIR}/pcre
PREF_ZLIB=${INST_DIR}/zlib
PREF_OPENSSL=${INST_DIR}/openssl
PREF_LIBXML2=${INST_DIR}/libxml2
PREF_APR=${INST_DIR}/apr
PREF_APR_UTIL=${INST_DIR}/apr-util
#
./configure \
--prefix=${PREF_HTTPD} \
--with-pcre=${PREF_PCRE} \
--with-z=${PREF_ZLIB} \
--with-ssl=${PREF_OPENSSL}/lib \
--with-libxml2=${PREF_LIBXML2} \
--with-apr=${PREF_APR} \
--with-apr-util=${PREF_APR_UTIL} \
--with-crypto

make
make test
make install

Apache2.4の起動・停止確認

Apache2.4を起動するにはsudoでbinディレクトリ内にあるhttpdという名前のファイルを実行します。
以下、コマンド実行例ではbinディレクトリ内にいることを想定しています。

起動

sudo ./httpd -k start

停止

sudo ./httpd -k stop

以上です。

おまけ

Apacheのconfigureで起こるエラー

自前でAPRとAPR-utilをインストールしていない場合、
./configureすると、

configure: Configuring Apache Portable Runtime Utility library...
configure: 
checking for APR-util... yes
checking for gcc... /Applications/Xcode.app/Contents/Developer/Toolchains/OSX10.10.xctoolchain/usr/bin/cc
checking whether the C compiler works... no
configure: error: in `/Users/iron_right/bin2/httpd-2.4.12':
configure: error: C compiler cannot create executables
See `config.log' for more details

のようなエラーがでてビルドに進めないことがあります。
原因はAPRとAPR-utilが指すgccの場所が

/Applications/Xcode.app/Contents/Developer/Toolchains/OSX10.10.xctoolchain/usr/bin/cc

となっていることですが、実際、Finderでこのパスを探しても存在しません。
原因をもう少し掘り下げると、
Apacheのconfigure時にオプションの–with-aprと–with-apr-utilを指定していない場合、あらかじめMacにインストールされているAPRとAPR-utilが読み込まれ(/usr/bin/apr-1-config)、これらが指すgccのパスが

/Applications/Xcode.app/Contents/Developer/Toolchains/OSX10.10.xctoolchain/usr/bin/cc

になっているためです。しかし、正しい場所は

/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cc

です。

本記事のように自前でAPR,APR-utilをビルドして、これらをApacheのconfigure時に指定していればこの問題は起きません(のはず)。

自前でAPRビルドしたくねえ、という場合の解決策として

/Applications/Xcode.app/Contents/Developer/Toolchains/

の中で

sudo ln -s XcodeDefault.xctoolchain OSX10.10.xctoolchain

のようにリンクを貼るという方法があります。

libxml2ビルド時のPython関連エラー

install: /Library/Python/2.7/site-packages/drv_libxml2.py: Permission denied
make[5]: *** [install-dist_pythonDATA] Error 71
make[4]: *** [install-am] Error 2
make[3]: *** [install-recursive] Error 1
make[2]: *** [install] Error 2
make[1]: *** [install-recursive] Error 1
make: *** [install] Error 2

システムライブラリの中のpython関連のファイルに手を入れようとして、パーミッションエラーが起きています。sudoでビルドすればエラーは回避できると思いますが、今回は遊ぶためなので、やめときます。

コメントはこちらから

メールアドレスは公開されません。 * が付いている欄は必須項目です

タグ一覧

© 2021 びわ湖のほとりの人 All Rights Reserved.