CentOS6のApache 2.2.15をApache 2.2.34にアップデートする

Linux
スポンサーリンク
スポンサーリンク

まえがき

CentOS6で運用しているWebサーバのApacheのバージョンがすごい古くなっていたので、アップデートしてみました。

apache 2.4かapache 2.2.34のどちらか迷ったのですが、別にサービスで使用していないし、メジャーバージョンアップだとPHPあたりとの互換性が心配だったので一旦2.2.34に上げることにしました。

2.2系はすでにサポート終わっているのでそのうち2.4系に上げることになると思いますが・・・

で、最初は

「どっかにapache用のyumレポジトリ落ちとるでしょ」

って思ってyumでインストールするつもりだったんですが、

レポジトリ探してもなかったので仕方なくソースを引っ張ってくることにしました。

ただ、yumでの管理はしたいのでソースインストールではなく、ビルドしてrpmをyumでインストールさせる方式にしました。

インストール手順

ビルドに必要なもののインストール

まずはapacheのrpmをビルドするために必要なものをインストールします。

基本的には全てCentOSのbaseレポジトリからインストールできるはずです。

# yum install rpm-build gcc-c++ postgresql-devel sqlite-devel unixODBC-devel nss-devel doxygen libuuid-devel apr-devel expat-devel mysql-devel openldap-devel openssl-devel pcre-devel autoconf libtool db4-devel

ちなみに、develとついているパッケージは 開発に必要なヘッダファイル等が含まれているものらしいです。

こちらのサイトにてわかりやすく解説されておりました。

ソースファイルをダウンロードする

次に、apache2.2.34やそれのビルドに必要なものをダウンロードします。

ソースファイルを保存するディレクトリに移動します。

今回は/usr/local/srcとしてますが、別にどこでもよいです。

# cd /usr/local/src

そんで、各ソースファイルをダウンロードしていきます。

必要なのはapr 1.6.5とapr-util 1.6.1とdistcache 1.5.1、そしてapache 2.2.34です。

# wget https://archive.apache.org/dist/httpd/httpd-2.2.34.tar.gz
# wget http://www.kurobuti.com/download/distcache/1.5.1/distcache-1.5.1-1.src.rpm
# wget http://ftp.meisei-u.ac.jp/mirror/apache/dist//apr/apr-1.6.5.tar.gz
# wget http://ftp.meisei-u.ac.jp/mirror/apache/dist//apr/apr-util-1.6.1.tar.gz

必要ないかどうかわからないですが、一応以下もダウンロードしておきます。

# wget http://ftp.meisei-u.ac.jp/mirror/apache/dist//apr/apr-1.6.5.tar.bz2
# wget http://ftp.meisei-u.ac.jp/mirror/apache/dist//apr/apr-util-1.6.1.tar.bz2

2019年1月16日までは上記のURLでダウンロードできました。

apr 1.6.5のビルド、インストール

まずはapr 1.6.5をビルドしてyumでインストールします。

# rpmbuild -ta apr-1.6.5.tar.gz
# cd ~/rpmbuild/RPMS/x86_64/
# yum localinstall apr-1.6.5-1.x86_64.rpm apr-devel-1.6.5-1.x86_64.rpm apr-debuginfo-1.6.5-1.x86_64.rpm

正常にインストールできたらyum listで以下が表示されるはずです。

# yum list apr
Installed Packages
apr.x86_64 1.6.5-1 @/apr-1.6.5-1.x86_64

apr-util 1.6.1のビルド、インストール

同様にapr-utilをインストールしていきます。

ちなみに、先にaprをインストールしておかないとビルドで弾かれるので注意です。

# cd /usr/local/src
# rpmbuild -ta apr-util-1.6.1.tar.gz
# cd ~/rpmbuild/RPMS/x86_64/
# yum localinstall apr-util*.rpm

インストールできたことを確認

# yum list apr-util*
Installed Packages
apr-util.x86_64 1.6.1-1 @/apr-util-1.6.1-1.x86_64
apr-util-dbm.x86_64 1.6.1-1 @/apr-util-dbm-1.6.1-1.x86_64
apr-util-debuginfo.x86_64 1.6.1-1 @/apr-util-debuginfo-1.6.1-1.x86_64
apr-util-devel.x86_64 1.6.1-1 @/apr-util-devel-1.6.1-1.x86_64
apr-util-ldap.x86_64 1.6.1-1 @/apr-util-ldap-1.6.1-1.x86_64
apr-util-mysql.x86_64 1.6.1-1 @/apr-util-mysql-1.6.1-1.x86_64
apr-util-nss.x86_64 1.6.1-1 @/apr-util-nss-1.6.1-1.x86_64
apr-util-odbc.x86_64 1.6.1-1 @/apr-util-odbc-1.6.1-1.x86_64
apr-util-openssl.x86_64 1.6.1-1 @/apr-util-openssl-1.6.1-1.x86_64
apr-util-pgsql.x86_64 1.6.1-1 @/apr-util-pgsql-1.6.1-1.x86_64
apr-util-sqlite.x86_64 1.6.1-1 @/apr-util-sqlite-1.6.1-1.x86_64

distcache 1.5.1 のビルド、インストール

最後にdistcacheをインストールします。

これでapacheのビルドができるようになります。

# cd /usr/local/src
# rpm -ivh distcache-1.5.1-1.src.rpm
# rpmbuild -bb ~/rpmbuild/SPECS/distcache.spec
# cd ~/rpmbuild/RPMS/x86_64/
# yum localinstall distcache-1.5.1-1.x86_64.rpm distcache-devel-1.5.1-1.x86_64.rpm
# yum list distcache
Installed Packages
distcache.x86_64 1.5.1-1 @/distcache-1.5.1-1.x86_64

apache 2.2.34のビルド、インストール

メインディッシュです。

すぐにインストールを始めたいところですが、まずは現在使用しているapacheのコンフィグを一応バックアップを取っておきます。

# mkdir -p /usr/local/src/backup/init.d
# cp -rf /etc/httpd /usr/local/src/backup/httpd-2.2.15
# cp /etc/init.d/httpd /usr/local/src/backup/init.d/httpd-2.2.15

バックアップを取るディレクトリはどこでもいいと思いますが、超暫定的に/usr/local/srcの下にbackupディレクトリを作りました。

起動スクリプトもついでにバックアップを取っておきます。

ここまでできたらビルド&インストールです。

# cd /usr/local/src
# rpmbuild -ta httpd-2.2.34.tar.gz

ビルドが完了したらインストール

# cd ~/rpmbuild/RPMS/x86_64/
# yum localinstall ./*2.2.34*.rpm

このとき、環境によってはhttpdとhttpd-toolsの依存関係によりインストールできない、というエラーが出るときがあります。

そのエラーが出力されたら、先にアンインストールしておきましょう。

# rpm --nodeps -ev httpd httpd-tools

以上でインストール完了ですが、ちょっと気に食わない部分があったので以下を修正しました。

別に気にならない人であればここまでで終了です。

pidファイルの生成場所の修正

デフォルトだと、pidは/var/log/httpdの下に生成されるようになっていますが、めちゃくちゃ気持ち悪いので/var/run/httpdの下に生成するように修正します。

まずは起動スクリプトの修正

# vi /etc/init.d/httpd

以下の行を修正します。

<変更前>
pidfile=${PIDFILE-/var/log/httpd/${prog}.pid}
<変更後>
pidfile=${PIDFILE-/var/run/httpd/${prog}.pid}

コンフィグもいじります。

# vi /etc/httpd/conf/httpd.conf

以下を修正します。

<変更前>
PidFile log/httpd.pid
<変更後>
PidFile run/httpd.pid

で、/etc/httpdの下にシンボリックリンクを貼ります。

# mkdir /var/run/httpd
# cd /etc/httpd
# ln -snf /var/run/httpd run

これでpidファイルの場所の変更作業まで終わりました。

あとがき

一旦こんな感じでやってみて、問題なく動いているようです。

環境によってはビルドやインストールするときに○○が必要!って怒られることもあると思うので、都度それを用意する必要があります。

まあ、今回の記事も自分用の備忘録ということで・・・

 

 

 

コメント

タイトルとURLをコピーしました