centos6.9にphp7.1とapache2.4をインストール

概要

テスト環境のCentOS6.9のapache2.2のバージョンを上げたかっただけなのにphp7.0はphpがソースのまま表示されて大変だった。
phpのapacheの依存関係ってapache2.2で使えるビルドとapache2.4で使えるビルドとに別れてるってことなんだね…。
結局php7.1にバージョンアップしてphp7.1用のエクステンションをビルドしてなんとかした。
ついでにapache2.4ドキュメントルートが長いので/var/www/htmlに変更したりした。

作業環境

Windows8.1
Vagrant 2.0.2
VirtualBox 5.2.6

実行内容

既存のapacheを削除する
これで依存の関係でphp7.0を削除するはめになった…

# yum remove httpd*

下記記事を参考にインストールしなおすことにした。
CentOS6.9 + Apache2.4 + PHP7.1 の環境構築

コンパイル済みのphp7.1エクステンションはyumリポジトリにないみたいだからコンパイルして入れ直すしかないらしい

# rpm -ivh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
# yum install -y --enablerepo=remi,remi-php71 php

# wget https://repos.fedorapeople.org/repos/jkaluza/httpd24/epel-httpd24.repo
# mv epel-httpd24.repo /etc/yum.repos.d/
# yum -y install --enablerepo=epel-httpd24 httpd24-httpd httpd24-httpd-devel httpd24-mod_proxy_html httpd24-mod_session httpd24-mod_ssl
# ln -s /opt/rh/httpd24/root/etc/httpd /etc/httpd
# ln -s /etc/init.d/httpd24-httpd /etc/init.d/httpd
# chkconfig httpd on
# yum -y install \
  bison \
  libxml2-devel
# ln -s /opt/rh/httpd24/root/usr/lib64/pkgconfig/apr-1.pc /usr/lib64/pkgconfig/apr-1.pc
# wget https://github.com/php/php-src/archive/php-7.1.17.tar.gz
# tar xvf php-7.1.17.tar.gz
# cd php-src-php-7.1.17
# ./buildconf --force
# ./configure \
    --with-config-file-path=/etc/ \
    --with-config-file-scan-dir=/etc/php.d \
    --with-apxs2=/opt/rh/httpd24/root/usr/bin/apxs
# make
# cp /root/php-src-php-7.1.17/libs/libphp7.so /opt/rh/httpd24/root/usr/lib64/httpd/modules/libphp7.so
# echo "LoadModule php7_module /opt/rh/httpd24/root/usr/lib64/httpd/modules/libphp7.so" >> /etc/httpd/conf/httpd.conf

# service httpd start

一応、apache2.4があるリポジトリをダウンロードしてインストール

# cd /etc/yum.repos.d
# sudo wget https://repos.fedorapeople.org/repos/jkaluza/httpd24/epel-httpd24.repo
# sudo yum install httpd24

バージョン確認する

# /opt/rh/httpd24/root/usr/sbin/apachectl -V
Server version: Apache/2.4.6 (Red Hat)
Server built:   Sep 25 2013 05:25:46

なぜか、service httpd startだと2.2が起動してしまうので下記で2.4を起動する。
先にapache2.2の方は停止させておかないと起動に失敗するので注意

# service httpd stop
# service httpd24-httpd start

ついでに自動起動をONにする

# sudo chkconfig httpd24-httpd on

これでipを叩くと無事pache2.4のテストページが表示されるようになった。

php.iniをざっくり設定変更する

php.iniの位置を確認してタイムゾーンだけ変更する。

# find / -name 'php.ini'
/etc/php.ini
/etc/opt/remi/php70/php.ini

# vi /etc/php.ini
date.timezone = "Asia/Tokyo"

ルートディレクトリの変更

2.4では/var/www/htmlにファイルを置いてもnot foundになる
DocumentRootが変わったそうなので設定を変更しようと思う
DocumentRootの設定ファイルがどこにあるのかわからなかったのでhttpd.confで検索してみる

# find / -name 'httpd.conf'
/etc/httpd/conf/httpd.conf
/opt/rh/httpd24/root/etc/httpd/conf/httpd.conf

たぶんhttpd24のほうがapache2.4の設定ファイルなので編集(てきとう)

# vi /opt/rh/httpd24/root/etc/httpd/conf/httpd.conf

下記DocumentRootとDirectoryに箇所を#をつけて新しい設定をすぐ下に追加する

## ↓をコメントにする、/opt/rh/httpd24/root/var/www/html は正式なapache2.4の初期ドキュメントルート ##
#DocumentRoot "/opt/rh/httpd24/root/var/www/html"
## ↓追加、ドキュメントルートを/var/www/htmlに変更したものを追加する ##
DocumentRoot "/var/www/html"

#
# Relax access to content within /opt/rh/httpd24/root/var/www.
#
## ↓をコメントにする ##
#<Directory "/opt/rh/httpd24/root/var/www">
## ↓追加 ##
<Directory "/var/www">

# Further relax access to the default document root:
## ↓をコメントにする ##
#<Directory "/opt/rh/httpd24/root/var/html">
## ↓追加 ##
<Directory "/var/www/html">

<IfModule dir_module>
## ↓index.phpをDirectoryIndexの末尾に追加 ##
    DirectoryIndex index.html index.php
</IfModule>


## すべてファイル末尾に追加、phpの起動設定 ##
<IfModule php7_module>
    AddType application/x-httpd-php .php
    AddType application/x-httpd-php-source .phps
</IfModule>
LoadModule php7_module modules/libphp7.so
AddHandler php7-script .php

再起動

# service httpd24-httpd restart

これで /var/www/htmlにソースを置けば公開されるようになった。
うまくいっていれば公開サーバーにアクセスすると下記のようなテストページが出るはず。