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でビルドすればエラーは回避できると思いますが、今回は遊ぶためなので、やめときます。