まえがき
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ファイルの場所の変更作業まで終わりました。
あとがき
一旦こんな感じでやってみて、問題なく動いているようです。
環境によってはビルドやインストールするときに○○が必要!って怒られることもあると思うので、都度それを用意する必要があります。
まあ、今回の記事も自分用の備忘録ということで・・・
コメント