Drupal7 では PHP 5.6 を使っていましたが、Drupal8 では 高速動作が期待できる PHP7を使いたいですね。
今回は、Vagrantで管理している CentOS6.7 の PHP をバージョンアップを行ったときのメモです。
##作業環境
- MAC OS X El Capitan
- Vagrant 1.7.4
- CentOS release 6.7 (Final)
- PHP 5.6.17(yum管理) → PHP 7.0.11(ソースからインストール)
- Apache 2.4.23(yum管理) → Apache 2.4.23(ソースからインストール)
- MySQL 5.6.33
- Drupal7/8
以上の CentOS6.7 環境下で、Apache 2.4、PHP5.6 はyumでパッケージ管理をしていましたが、新たにインストールする PHP7 はソースからインストールします。
合わせて mod_php と依存関係にある Apache 2.4 もソースからインストールし直しました。
##各種ライブラリをインストールする
PHP7 のコンパイルに必要なライブラリをあらかじめyumコマンドでインストールしておきます。
# yum install pcre-devel
# yum install libxml2-devel
# yum install openssl-devel
# yum install bzip2
# yum install bzip2-devel
# yum install libbz2
# yum install libbz2-dev
# yum install lbzip2-utils
# yum install lbzip2-devel
# yum install libssl-dev
# yum install curl-devel
# yum install db4-devel
# yum install libXpm-devel
# yum install gmp-devel
# yum install libc-client-devel
# yum install openldap-devel
# yum install postgresql-devel
# yum install aspell-devel
# yum install libxslt-devel
# yum install libxml2-devel
# yum install pcre-devel
# yum install t1lib-devel.x86_64
# yum install libmcrypt-devel.x86_64
# yum install libpng-devel
# yum install libjpeg-devel
# yum install libfreetype-dev
# yum install freetype-devel.x86_64
##Apache2.4をセットアップする
インストール済みのApacheをいったん削除して、新たにソースからインストールします。
まず、ソースファイルをダウンロードします。
Apache HTTP Server 2.4
http://httpd.apache.org/download.cgi#apache24
Apache2.4 では APR と APR-util が必要なのでこちらもダウンロードします。
http://apr.apache.org/download.cgi
ダウンロードファイルは、Vagrantマシン上の /vagrant に保存します。
(環境に合わせて任意の場所に保存して構いません)
##yumで管理されている Apache2.4 を削除する
# yum remove httpd24*
# rm -rf /opt/rh/httpd24/root/etc/httpd
# rm -rf /etc/httpd
##Apache2.4をソースからインストールする
# cd /vagrant
# tar -xjvf httpd-2.4.18.tar.bz2
# tar -xzvf apr-1.5.2.tar.gz
# cp -r apr-1.5.2 httpd-2.4.18/srclib/apr
# tar -xzvf apr-util-1.5.4.tar.gz
# cp -r apr-util-1.5.4 httpd-2.4.18/srclib/apr-util
# cd httpd-2.4.18
# ./configure
# make
# make install
###http.confファイルを編集する
# vim /usr/local/apache2/conf/httpd.conf
mod_rewriteのコメントアウトを外してロードできるようにします。
LoadModule rewrite_module modules/mod_rewrite.so
DirectoryIndexの設定行を見つけたら index.php を追加します。
<IfModule dir_module>
DirectoryIndex index.php index.html
</IfModule>
http.conf の最終行に SetHandler を追加します。
<FilesMatch \.php$>
SetHandler application/x-httpd-php
</FilesMatch>
http.conf の構文テストを行います。
"Syntax OK"と表示されれば編集完了です。
# /usr/local/apache2/bin/httpd -t
Syntax OK
###PHP7が動作することを確認する
PHPが動作することを確認するために phpinfo() の結果を表示します。
phpinfo.php ファイルを作成します。
# cd /usr/local/apache2/htdocs
# vim phpinfo.php
<?php phpinfo(); ?>
Apache2.4を起動します。
# /usr/local/apache2/bin/apachectl start
ブラウザから表示できることを確認します。
http://[サーバのIPアドレス]/phpinfo.php
###Apacheの自動起動を設定する
# cp /vagrant/httpd-2.4.23/build/rpm/httpd.init /etc/init.d/httpd
# vim /etc/init.d/httpd
前) httpd=${HTTPD-/usr/sbin/httpd}
後) httpd=${HTTPD-/usr/local/apache2/bin/httpd}
前) pidfile=${PIDFILE-/var/run/${prog}.pid}
後) pidfile=${PIDFILE-/usr/local/apache2/logs/httpd.pid}
前) CONFFILE=/etc/httpd/conf/httpd.conf
後) CONFFILE=/usr/local/apache2/conf/httpd.conf
###Apacheをサービスに登録する
chkconfigコマンドを使ってサービス登録します。
$ chkconfig --add httpd
サービス一覧に登録されたことを確認します。
$ chkconfig --list httpd
httpd 0:off 1:off 2:off 3:off 4:off 5:off 6:off
サービスをオンにします。
$ chkconfig httpd on
サービスが自動起動されることを確認します。
$ chkconfig --list httpd
httpd 0:off 1:off 2:on 3:on 4:on 5:on 6:off
以上でApache2.4の設定は完了ですが、その他、必要に応じてバーチャルホストを設定してください。
##PHP7をセットアップする
PHP7のソースファイルをダウンロードします。
Current Stable PHP
http://www.php.net/downloads.php
ダウンロードファイルは、Vagrantマシン上の /vagrant に保存します。
(環境に合わせて任意の場所に保存して構いません)
###古いPHPを削除する
インストール済みのPHP5.6をいったん削除して、新たにソースからインストールします。
まず、作業前に Apache をいったん停止します。
# /usr/local/apache2/bin/apachectl stop
では、yumで管理されている PHP5.6 を削除します。
$ sudo yum remove php*
PHP5.6が削除されたことを確認します。
$ yum list installed | grep php
###PHP7をソースからインストールする
# tar -xjvf php-7.0.2.tar.bz2
# cd php-7.0.2
# ./configure --with-apxs2=/usr/local/apache2/bin/apxs --libdir=/usr/lib64 --with-libdir=lib64 --with-curl --disable-debug --with-pic --disable-rpath --without-pear --with-bz2 --with-freetype-dir --with-png-dir --with-xpm-dir --enable-gd-native-ttf --without-gdbm --with-gettext --with-iconv --with-jpeg-dir --with-openssl --with-pcre-regex --with-zlib --enable-exif --enable-ftp --enable-sockets --enable-calendar --with-libxml-dir --enable-xml --with-mhash --enable-mbstring --enable-mbregex --with-gd --enable-bcmath --with-xmlrpc --with-mysqli --with-pdo-mysql --with-curl --with-pdo-mysql --enable-json --enable-zip --without-readline --with-mcrypt
# make
# make install
# cp php.ini-development /usr/local/php7/lib/php.ini
php.iniファイルを編集します。
# vim /usr/local/php7/lib/php.ini
DrupalはMySQLへの接続にPDOを利用するので MysqL PDO の接続設定をします。
pdo_mysql.default_socket=/var/lib/mysql/mysql.sock
大規模サイトにも耐えられるようにパラメーターをチューニングします。
memory_limit = 256M
realpath_cache_size = 256k
realpath_cache_ttl = 3600
upload_max_filesize = 20M
post_max_size = 64M
Apacheを起動します。
# /usr/local/apache2/bin/apachectl start
##環境変数を設定する
Apache2.4、PHP7 の実行ファイルへのパスを通します。
# export PATH=$PATH:/usr/local/apache2/bin:/usr/local/php7/bin
通したパスを全ユーザーへ反映されるように /etc/profile の最終行にも追加します。
# vim /etc/profile
export PATH=$PATH:/usr/local/apache2/bin:/usr/local/php7/bin
以上です。 これでDrupal7/8が動作できる環境が整いました。