Apache2.4にsuphpをインストールしてみた時の備忘録です。

■環境

項目バージョンダウンロード先
CentOS6.5 64bit理研
apr1.5.0aprダウンロード先
apr-util1.5.3apr-utilダウンロード先
apache2.4.7apacheダウンロード先
suphp0.7.1suphpダウンロード先


■概要
ここでは、apache、apr、apr-util、suphpは全てrpmパッケージ化してインストールします。
apache、apr、apr-utilは公式から提供されているspecファイルを利用してパッケージ化します。
suphp及びdistcacheは黒ぶちが作成したsrpmでインストールします。

ビルドに必要なパッケージはyumでインストールします。
ただし、一部パッケージが提供されていないためEPELを利用します。

※注意
野良パッケージなので何があっても私は責任を持ちません!!

・ダウンロード
suphp-0.7.1-2.src.rpm
MD5(suphp-0.7.1-2.src.rpm)= 3a02dba0a2fb38d944a7991999df7eff

■補足
OSインストール時は、最小限にして開発ツールのみインストールしています。
 


 

(1)インストール準備

1-1. 必要なパッケージのインストール

yumで必要なパッケージをインストールします。

[root@localhost ~]# yum -y install wget expat-devel libuuid-devel db4-devel postgresql-devel mysql-devel sqlite-devel unixODBC-devel openldap-devel openssl-devel nss-devel pcre-devel lua-devel libxml2-devel

 
rpmパッケージ化に必要なディレクトリを作成します。

[root@localhost ~]# mkdir -p rpmbuild/{SPECS,SOURCES}

 
一部、パッケージが無いのでEPELからダウロードしてインストールします。

[root@localhost ~]# wget http://dl.fedoraproject.org/pub/epel/6/x86_64/freetds-0.91-2.el6.x86_64.rpm
[root@localhost ~]# wget http://dl.fedoraproject.org/pub/epel/6/x86_64/freetds-devel-0.91-2.el6.x86_64.rpm
[root@localhost ~]# rpm -ivh freetds-0.91-2.el6.x86_64.rpm freetds-devel-0.91-2.el6.x86_64.rpm 
[root@localhost ~]# rm -f freetds-0.91-2.el6.x86_64.rpm freetds-devel-0.91-2.el6.x86_64.rpm

 

1-2. 不要なパッケージの削除

最初からインストールされているaprとapr-utilを削除します。

[root@localhost ~]# yum -y remove apr apr-util

※注意 : subversionも依存関係で消えるので必要であれば後から手動でインストールします。
 

(2)aprインストール

2-1. aprダウンロード

aprをダウンロードします。

[root@localhost ~]# wget http://ftp.jaist.ac.jp/pub/apache//apr/apr-1.5.0.tar.bz2

 

2-2. aprのrpm化

まず、aprのアーカイブからspecファイルを取り出します。

[root@localhost ~]# tar jxvf apr-1.5.0.tar.bz2 apr-1.5.0/apr.spec
apr-1.5.0/apr.spec


specファイルとソースを移動して不要なディレクトリを削除ます。

[root@localhost ~]# mv apr-1.5.0/apr.spec rpmbuild/SPECS/
[root@localhost ~]# mv apr-1.5.0.tar.bz2 rpmbuild/SOURCES/
[root@localhost ~]# rmdir apr-1.5.0/

rpmbuildコマンドでaprのrpmパッケージ化をします。

[root@localhost ~]# cd rpmbuild/SPECS/
[root@localhost SPECS]# rpmbuild -bb apr.spec

 

2-3. aprのrpmインストール

aprのrpmパッケージをインストールします。

[root@localhost SPECS]# cd ../RPMS/x86_64/
[root@localhost x86_64]# rpm -ivh apr-1.5.0-1.x86_64.rpm apr-devel-1.5.0-1.x86_64.rpm 
準備中...                ########################################### [100%]
   1:apr                    ########################################### [ 50%]
   2:apr-devel              ########################################### [100%]
[root@localhost x86_64]# cd

 

(3)apr-utilインストール

3-1. apr-utilダウンロード

apr-utilをダウンロードします。

[root@localhost ~]# wget http://ftp.jaist.ac.jp/pub/apache//apr/apr-util-1.5.3.tar.bz2

 

3-2. apr-utilのrpm化

まず、apr-utilのアーカイブからspecファイルを取り出します。

[root@localhost ~]# tar jxvf apr-util-1.5.3.tar.bz2 apr-util-1.5.3/apr-util.spec
apr-util-1.5.3/apr-util.spec


specファイルとソースを移動して不要なディレクトリを削除します。

[root@localhost ~]# mv apr-util-1.5.3/apr-util.spec rpmbuild/SPECS/
[root@localhost ~]# mv apr-util-1.5.3.tar.bz2 rpmbuild/SOURCES/
[root@localhost ~]# rmdir apr-util-1.5.3/


rpmbuildコマンドでapr-utilのrpmパッケージ化をします。

[root@localhost ~]# cd rpmbuild/SPECS/
[root@localhost SPECS]# rpmbuild -bb apr-util.spec

 

3-3. apr-utilのrpmインストール

apr-utilのrpmパッケージをインストールします。

[root@localhost x86_64]# rpm -ivh apr-util-1.5.3-1.x86_64.rpm apr-util-devel-1.5.3-1.x86_64.rpm 
準備中...                ########################################### [100%]
   1:apr-util               ########################################### [ 50%]
   2:apr-util-devel         ########################################### [100%]
[root@localhost x86_64]# cd

※注意 : 他に色々apr-util関連のパッケージが作成されていますがapacheのビルドには使用しません。
 

(4)apacheインストール

4-1. distcacheのインストール

・4-1-1. distcacheダウンロード

 
まず、apacheのビルドに必要なdistcacheをインストールをします。
distcacheのsrpmをダウンロードします。

[root@localhost ~]# wget http://www.kurobuti.com/download/distcache/1.4.5/5/distcache-1.4.5-1.src.rpm
[root@localhost ~]# openssl md5 distcache-1.4.5-1.src.rpm 
MD5(distcache-1.4.5-1.src.rpm)= 5651b05e33c97044c74e50c7e4eb4ecb

MD5(distcache-1.4.5-1.src.rpm)= 5651b05e33c97044c74e50c7e4eb4ecb

distcache-1.5.1のsrpmは以下にダウンロード方法が書いてあります。
また、以下のページにはdistcacheをビルドするために必要なパッチの説明もあります。
http://www.kurobuti.com/blog/?p=3878
 

・4-1-2. distcacheのsrpmインストール

 
ダウンロードしたsrpmをインストールします

[root@localhost ~]# rpm -ivh distcache-1.4.5-1.src.rpm 
   1:distcache              ########################################### [100%]
[root@localhost ~]# rm -f distcache-1.4.5-1.src.rpm


もし、ソースのアーカイブ(distcache-1.4.5.tar.gz)のmd5ハッシュ値も見たい場合はsourceforgeからパッケージをダンロードして比べてみてください。
http://sourceforge.net/projects/distcache/files/2.%20distcache-stable/1.4.5/

・比較例

[root@localhost ~]# wget http://sourceforge.net/projects/distcache/files/2.%20distcache-stable/1.4.5/distcache-1.4.5.tar.gz/download
[root@localhost ~]# openssl md5 rpmbuild/SOURCES/distcache-1.4.5.tar.gz 
MD5(rpmbuild/SOURCES/distcache-1.4.5.tar.gz)= ba6f7c855f0092530e925743f1c1ecd1
[root@localhost ~]# openssl md5 distcache-1.4.5.tar.gz 
MD5(distcache-1.4.5.tar.gz)= ba6f7c855f0092530e925743f1c1ecd1

 

・4-1-3. distcacheのrpm化

 
distcacheをrpm化します。

[root@localhost ~]# cd rpmbuild/SPECS/
[root@localhost SPECS]# rpmbuild -bb distcache.spec

 

・4-1-4. distcacheのrpmインストール

  
distcacheのrpmパッケージをインストールします。

[root@localhost SPECS]# cd ../RPMS/x86_64/
[root@localhost x86_64]# rpm -ivh distcache-1.4.5-1.x86_64.rpm distcache-devel-1.4.5-1.x86_64.rpm 
準備中...                ########################################### [100%]
   1:distcache              ########################################### [ 50%]
   2:distcache-devel        ########################################### [100%]
[root@localhost x86_64]# cd

 

4-2. Apacheダウンロード

Apacheをダウンロードします。

[root@localhost ~]# wget http://ftp.riken.jp/net/apache//httpd/httpd-2.4.7.tar.bz2

 

4-3. Apacheのrpm化

まず、Apacheのアーカイブからspecファイルを取り出します。

[root@localhost ~]# tar jxvf httpd-2.4.7.tar.bz2 httpd-2.4.7/httpd.spec
httpd-2.4.7/httpd.spec


specファイルとソースを移動して不要なディレクトリを削除します。

[root@localhost ~]# mv httpd-2.4.7/httpd.spec rpmbuild/SPECS/
[root@localhost ~]# mv httpd-2.4.7.tar.bz2 rpmbuild/SOURCES/
[root@localhost ~]# rmdir httpd-2.4.7/


rpmbuildコマンドでapr-utilのrpmパッケージ化をします。

[root@localhost ~]# cd rpmbuild/SPECS/
[root@localhost SPECS]# rpmbuild -bb httpd.spec

 

4-4. Apacheのrpmインストール

Apacheのrpmパッケージをインストールします。

[root@localhost SPECS]# cd ../RPMS/x86_64/
[root@localhost x86_64]# rpm -ivh httpd-2.4.7-1.x86_64.rpm httpd-devel-2.4.7-1.x86_64.rpm mod_ssl-2.4.7-1.x86_64.rpm 
準備中...                ########################################### [100%]
   1:httpd                  ########################################### [ 33%]
   2:httpd-devel            ########################################### [ 67%]
   3:mod_ssl                ########################################### [100%]
[root@localhost x86_64]# cd

 

(5)suphpインストール

5.1 suphpのダウンロード

suphpのsrpmをダウンロードします。

[root@localhost ~]# openssl md5 suphp-0.7.1-2.src.rpm 
MD5(suphp-0.7.1-2.src.rpm)= 3a02dba0a2fb38d944a7991999df7eff

MD5(suphp-0.7.1-2.src.rpm)= 3a02dba0a2fb38d944a7991999df7eff
 

5.2 suphpのsrpmインストール

ダウンロードしたsrpmをインストールします。

[root@localhost ~]# rpm -ivh suphp-0.7.1-2.src.rpm 
   1:suphp                  ########################################### [100%]

 

5.3 suphpのrpm化

suphpをrpm化します。

[root@localhost ~]# cd rpmbuild/SPECS/
[root@localhost SPECS]# rpmbuild -bb suphp.spec

 

5.4 suphpのrpmインストール

suphpのrpmパッケージをインストールします。

[root@localhost SPECS]# cd ../RPMS/x86_64/
[root@localhost x86_64]# rpm -ivh suphp-0.7.1-2.x86_64.rpm 
準備中...                ########################################### [100%]
   1:suphp                  ########################################### [100%]
[root@localhost x86_64]# cd

 

(6)suphpの設定

6.1 httpd.confの設定

httpd.confにsuphpの設定をIncludeします。

[root@localhost ~]# vi /etc/httpd/conf/httpd.conf 
#---以下を最終行にでも追加---
Include /etc/httpd/conf/extra/httpd-suphp.conf

 

6.2 httpd-suphp.confの設定

httpd-suphp.confの設定をします。
モジュールのパスを変更するだけです。

[root@localhost ~]# vi /etc/httpd/conf/extra/httpd-suphp.conf 
LoadModule suphp_module modules/mod_suphp.so
# ↓ 変更
LoadModule suphp_module lib64/httpd/modules/mod_suphp.so

 

6.3 suphp.confの設定

以下のページを参考にしてください。

http://www.kurobuti.com/blog/?p=3270
http://www.kurobuti.com/blog/?p=4013
 

(7)suphpのパッチについて

suphpのパッチを当てずにビルドすると以下のエラーが出力されます。

 (snip)
gcc -DHAVE_CONFIG_H -I. -I../../src -I/usr/include/httpd -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -DSUPHP_PATH_TO_SUPHP=\"/usr/local/sbin/suphp\" -DSUPHP_USE_USERGROUP -g -O2 -MT mod_suphp.lo -MD -MP -MF .deps/mod_suphp.Tpo -c mod_suphp.c  -fPIC -DPIC -o .libs/mod_suphp.o
/usr/include/httpd/ap_config.h:25 から include されたファイル中,
                 /usr/include/httpd/httpd.h:44 から,
                 mod_suphp.c:24 から:
/usr/include/httpd/ap_hooks.h:39:17: error: apr.h: そのようなファイルやディレクトリはありません
/usr/include/httpd/ap_hooks.h:40:23: error: apr_hooks.h: そのようなファイルやディレクトリはありません
/usr/include/httpd/ap_hooks.h:41:32: error: apr_optional_hooks.h: そのようなファイルやディレクトリはありません
mod_suphp.c:24 から include されたファイル中:
/usr/include/httpd/httpd.h:50:25: error: apr_general.h: そのようなファイルやディレクトリはありません
/usr/include/httpd/httpd.h:51:24: error: apr_tables.h: そのようなファイルやディレクトリはありません
/usr/include/httpd/httpd.h:52:23: error: apr_pools.h: そのようなファイルやディレクトリはありません
/usr/include/httpd/httpd.h:53:22: error: apr_time.h: そのようなファイルやディレクトリはありません
/usr/include/httpd/httpd.h:54:28: error: apr_network_io.h: そのようなファイルやディレクトリはありません
/usr/include/httpd/httpd.h:55:25: error: apr_buckets.h: そのようなファイルやディレクトリはありません
/usr/include/httpd/httpd.h:56:22: error: apr_poll.h: そのようなファイルやディレクトリはありません
/usr/include/httpd/httpd.h:57:29: error: apr_thread_proc.h: そのようなファイルやディレクトリはありません
(snip)


これを解決するため色々と探した結果、custombuildに答えがありました。
http://forum.directadmin.com/showthread.php?t=42938&page=2

 
build-1.2の4397行目にあります。
http://www.custombuild.eu/build-1.2

 
終わり!!!
久しぶりに備忘録書いたら疲れた。



2月 11, 2014 at 5:01 pm by 黒ぶちメガネ
Category: Apache, Linux