前回からの続きで、今回はApacheをソースからインストールします。
事前準備
・Cコンパイラのインストール
# yum install gcc
・PCREをApacheで利用するためのPCRE開発パッケージをインストール
(Perl Compatible Rebular Expression Library version 5.0)
# yum install pcre-devel
・前回ダウンロードしたソースコードを解凍・展開
# cd /usr/local/src/ # ls httpd-2.4.9.tar.gz # tar zxvf httpd-2.4.9.tar.gz
APRとAPR-Util、APR iconvの入手とApacheインストール
APR、APR-Util、APR iconvのソースをApacheに含めてビルドするため、/usr/local/src/httpd-2.4.9/srclib/に展開
ダウンロード先:http://apr.apache.org/download.cgi
・ディレクトリ移動
# cd /usr/local/src/httpd-2.4.9/srclib/
・ソースダウンロード
# wget http://ftp.jaist.ac.jp/pub/apache//apr/apr-1.5.1.tar.gz # wget http://ftp.jaist.ac.jp/pub/apache//apr/apr-util-1.5.3.tar.gz # wget http://ftp.jaist.ac.jp/pub/apache//apr/apr-iconv-1.2.1.tar.gz
・ソースの展開
# tar zxvf apr-1.5.1.tar.gz # tar zxvf apr-util-1.5.3.tar.gz # tar zxvf apr-iconv-1.2.1.tar.gz
・展開したディレクトリ名の変更
# mv apr-1.5.1 apr # mv apr-util-1.5.3 apr-util # mv apr-iconv-1.2.1 apr-iconv
・ビルドファイル作成
今回はsslとproxy、ロードバランサーのモジュールを静的に組み込むので以下のオプションで実行。
# cd /usr/local/src/httpd-2.4.9 # ./configure --prefix=/usr/local/httpd-2.4.9 --with-mpm=prefork --with-included-apr --enable-so --enable-ssl \ --enable-proxy --enable-proxy-balancer --enable-proxy-http --enable-proxy-ajp --enable-proxy-connect
ここでエラー発生…
checking for OpenSSL... checking for user-provided OpenSSL base directory... none checking for OpenSSL version >= 0.9.8a... FAILED configure: WARNING: OpenSSL version is too old no checking whether to enable mod_ssl... configure: error: mod_ssl has been requested but can not be built due to prerequisite failures
OpenSSLのバージョンが古いって出ていますが、そんなはずは…一応確認。
# rpm -qa | grep openssl openssl-1.0.1e-16.el6_5.14.x86_64
どうやらopensslv.hがないため、システム側でOpenSSLのバージョンができていないようです。こちらのサイトを参考にさせていただきました。
opensslv.hはopenssl-develパッケージに含まれているようなのでインストール。
# yum install openssl-devel
もう一度./confiureして無事処理完了。同ディレクトリにMakefileが作成されます。
・ビルドします。
# make
・インストール
# make install
動作確認の初期設定
・設定ファイルの編集
# cp /usr/local/httpd-2.4.9/conf/httpd.conf{,.org} # vi /usr/local/httpd-2.4.9/conf/httpd.conf #User daemon #Group daemon User apache Group apache #ServerAdmin you@example.com ServerAdmin <メールアドレス> #ServerName www.example.com:80 ServerName <ホスト名>:80
・Apache実行ユーザの作成
とりあえずUIDとGIDはパッケージインストールしたときのIDと同じものにしておきます。
# groupadd -g 48 apache # useradd -u 48 -g apache -s /sbin/nologin -M apache
・構文チェック
# /usr/local/httpd-2.4.9/bin/httpd -t Syntax OK または # /usr/local/httpd-2.4.9/bin/apachectl configtest Syntax OK
・Apache起動
# /usr/local/httpd-2.4.9/bin/apachectl start
ここでサーバのIPアドレスでブラウザアクセスすると「It works!」と表示されるはずなのですが、応答がありません。 エラーログを確認すると
# less /usr/local/httpd-2.4.9/logs/error_log [proxy_balancer:emerg] [pid 10948] AH01177: Failed to lookup provider 'shm' for 'slotmem': is mod_slotmem_shm loaded?? [:emerg] [pid 10948] AH00020: Configuration Failed, exiting
mod_slotmem_shmモジュールが読み込まれていないようなので、有効にします。
# vi /usr/local/httpd-2.4.9conf/httpd.conf #以下のコメントを外す LoadModule slotmem_shm_module modules/mod_slotmem_shm.so
Apache再起動します。
# /usr/local/httpd-2.4.9/bin/apachectl restart
ブラウザで「It works!」の表示確認。 これで一応Apacheが起動できることが確認できました。
起動スクリプトの設定
起動スクリプトを設定します。
・方法1:Apacheのインストールディレクトリにあるapachectlをコピーする
# コピー # cp /usr/local/httpd-2.4.9/bin/apachectl /etc/init.d/httpd # apache起動 # /etc/init.d/httpd start
・方法2:Apacheのソースディレクトリにあるhttpd.iniをコピーする
# コピー # cp /usr/local/src/httpd-2.4.9/build/rpm/httpd.init /etc/init.d/httpd # コピーした起動スクリプトを修正 # vi /etc/init.d/httpd #httpd=${HTTPD-/usr/sbin/httpd} httpd=${HTTPD-/usr/local/httpd-2.4.9/bin/httpd} #pidfile=${PIDFILE-/var/run/${prog}.pid} pidfile=${PIDFILE-/usr/local/httpd-2.4.9/logs/${prog}.pid} # httpd.confのパスを修正 # check for 1.3 configuration check13 () { CONFFILE=/usr/local/httpd-2.4.9/conf/httpd.conf # apache起動 # /etc/init.d/httpd start Starting httpd: [ OK ]
方法2だと起動時にOKかどうかのメッセージが表示されるので私は方法2を使っています。
起動スクリプト(httpd)をサービスに追加
最後に起動スクリプト(httpd)をサービスに登録して自動起動の設定をします。
# chkconfig --add httpd # chkconfig --level 35 httpd on # chkconfig --list httpd httpd 0:off 1:off 2:off 3:on 4:off 5:on 6:off
最新記事
参考サイト
http://momoto.github.io/blog/2013/07/31/guide-to-compiling-and-installing-apache-http-server-2-dot-4-6/ http://tt4cs.blogspot.jp/2013/01/apache-2.4-installation.html
http://tt4cs.blogspot.jp/2013/01/how-to-enable-dso-for-apache-2.4.html
http://w.builwing.info/2013/08/15/centos6-4%E3%81%ABapache2-4-6%E3%82%92%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB/ http://alfa.hatenablog.jp/entry/2013/07/03/222507
http://www.kakiro-web.com/linux/apache-install.html
http://blog.trippyboy.com/2012/centos/configure-openssl%E3%81%AE%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E3%81%8C%E4%BD%8E%E3%81%84%E3%81%A8%E6%80%92%E3%82%89%E3%82%8C%E3%81%A1%E3%82%83%E3%81%A3%E3%81%9F%E3%82%88%E3%81%AE%E5%B7%BB/
参考書籍
サーバ構築の実際がわかる Apache[実践]運用/管理 (Software Design plus)