前提
経緯
MastodonをApache上で動かすため、WebSocket対応のリバースプロキシを提供するmod_proxy_wstunnel
が必要だった。
これは、Apache 2.4.5
以降で有効とのことなので、2.4系のパッケージを導入する必要が生まれた。
手順
Software Collcetionを導入する
CentOS6.9の標準ではApache2.2までしかないので、Software Collectionを導入する。
sudo yum install centos-release-scl sudo yum-config-manager --enable rhel-server-rhscl-6-rpms
必要なパッケージの検索
sudo yum search httpd24
を実行して、必要そうなパッケージを選ぶ。
自分の場合は以下。
httpd24-httpd
httpd24-mod_proxy_html
httpd24-mod_session
httpd24-mod_ssl
パッケージのインストール
sudo yum install httpd24-httpd httpd24-mod_proxy_html httpd24-mod_session httpd24-mod_ssl scl enable httpd24 bash # rootでの作業 su - echo 'source /opt/rh/httpd24/enable' >> /etc/profile.d/httpd24.sh exit
コンテンツの移植
Software Collectionで導入すると/opt/rh/httpd/root/
の下にFilesystem Hierarchy Standard状のディレクトリ構成が広がっている。
諸々と共存できるようにするためだろうが、いざ旧環境とのすり合わせをするとなると非常にだるい
cp -av {/var/www,/opt/rh/httpd/root/var/www}/#コピーしたいディレクトリを指定する
設定の移植
元々の設定をhttpd.conf.org
で残しているので、当時の設定内容を抽出する。
diff /etc/httpd/conf/httpd.conf{,.org} > httpd.conf.diff
# オリジナルを残しておいてもりもり修正する sudo cp -v /opt/rh/httpd/root/etc/httpd/conf/httpd.conf{,.org} sudo vi /opt/rh/httpd/root/etc/httpd/conf/httpd.conf # includeされるように書くもよし sudo vi /opt/rh/httpd/root/etc/httpd/conf.d/other.conf
その他、/etc/httpd/conf.d/*.conf
を/opt/rh/httpd24/root/etc/httpd/conf.d/
にコピーする。
cp -av {/etc/httpd/conf.d,/opt/rh/httpd/root/etc/httpd/conf.d}/#コピーしたいconfを指定する
シンボリックリンクの作成
標準の位置にすり替える。
sudo mv -v /etc/{,_}httpd sudo ln -s /opt/rh/httpd24/root/etc/httpd/ /etc/httpd sudo mv -v /var/{,_}www sudo ln -s /opt/rh/httpd24/root/var/www/ /var/www
Apacheの起動
# 起動済みの古いApacheを止める sudo service httpd stop sudo chkconfig httpd off sudo service httpd24-httpd start sudo chkconfig httpd24-httpd on
トラブルシュート
RewriteLogで怒られる
Apache2.4ではRewriteLog
はなくなっている網様。LogLevel
を使えとのこと。
LogLevel crit
これまで使っていたPHPが使いまわせない
どうも2.2で動かしていた頃のPHPでは参照できないシンボルがあった模様。
まぁ、SoftwareCollectionのApacheを使うようになるのだから、その上で動くPHPもSoftwareCollection化するのは必然。
apache2.4が動いている状態でinstallすれば特に困らず動かせるはず。
sudo yum install rh-php70-php scl enable rh-php70 bash # rootでの作業 su - echo 'source /opt/rh/rh-php70/enable' >> /etc/profile.d/rh-php70.sh exit