2017年6月21日水曜日

CentOS6 phpのバージョンを5.3.3から7.0か7.1にアップする php version from 5 to 7

7.1を入れる前の自分のCentOS6のphpバージョンは、5.3.3
バージョンを上げてもほぼ問題なく動いている。

drupal8はphp5.5.9以上が必要。

CentOS6のphpを普通にyumでupdateすると5.3.3より上にいかない。

で、どうするか。
それ以上のバージョンを使うためには、fedora用の物をCentOS用にyumインストールできるリポジトリepel(Extra Packages for Enterprise Linux)と、最新のphpモジュールなどをCentOSで使えるようにしたyumが使えるremi(Remi Colletという人が管理しているからだそうだ。)が必要になる。

本当は、この際、古いCentOS6を7へアップして解決すればそれが一番いい。
でも、CentOS7のphpは5.4番台だからCentOSを6から7へバージョンアップしただけでは解決しない。だったら、とりあえずCentOS6のままphpのバージョンを上げようかと思った。
バージョンは中途半端に5.5に上げるよりもphp7.1にしてしまった方がいいだろう。
Windowsのxamppの7.1.4は問題なく動いているから7.1で大丈夫だろう。

ただ、ここで問題がある。
自分はepelもremiもインストール済みなのだが、それらはphp7.0などが出る前のものでバージョンが古い。
だから、/etc/yum.repos.d/remi.repoにremi-php71などの情報が書かれていない。(自分の場合[remi-php56]まで)。または、/etc/yum.repos.d/以下にremi-php71.repoファイルがない。
だから、epel、remiのデータの更新をしておく必要がある。

その前に自分のOSバージョンの確認
# cat /etc/centos-release
CentOS release 6.9 (Final)
現在、epel-release-6-8.noarchが最新で、それををインストールする。
(最初、epel-release-6-9.noarchとか、その上のものをを探してしまった。でも今入っているのが6-8でそれが現時点で最新。だからepelに関しては更新する必要なし。remiだけ更新する。)

更新の仕方
リポジトリはテキストファイルなので、簡単なものは自分で書ける。
でも、epelとremiはrpmでインストールできる。パッケージングした方が管理がちゃんとできるからその方がいい。

最初に現在インストールされているリポジトリを表示させる

# yum repolist all
(直接ファイルを見た方が見やすいかな。)

その中から、関係あるリポジトリのバージョンを調べる。
# rpm -qa | grep epel
epel-release-6-8.noarch     =>この下の確認でわかるのだが、最新版が入っている。
# rpm -qa | grep remi
remi-release-6.5-1.el6.remi.noarch

これからインストールするリポジトリのバージョン確認をする。
最初にepel
# rpm -qip http://ftp.riken.jp/Linux/fedora/epel/6/x86_64/epel-release-6-9.noarch.rpm
Name        : epel-release                 Relocations: (not relocatable)
Version     : 6                                 Vendor: Fedora Project
Release     : 8                             Build Date: Mon 05 Nov 2012 12:54:41 PM JST
これ、6-8だから今入っているのと同じ。2012年から変わってない。つまり今の自分のは最新。

次にremi
# rpm -qip http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
warning: http://rpms.famillecollet.com/enterprise/remi-release-6.rpm: Header V4 DSA/SHA1 Signature, key ID 00f97f56: NOKEY
Name        : remi-release                 Relocations: (not relocatable)
Version     : 6.8                               Vendor: Remi Collet
Release     : 2.el6.remi                    Build Date: Fri 10 Feb 2017 10:27:59 PM JST
For PHP 5.6 you must enable the remi-php56 repository:
    yum-config-manager --enable remi-php56

For PHP 7.0 you must enable the remi-php70 repository:
    yum-config-manager --enable remi-php70

For PHP 7.1 you must enable the remi-php71 repository:
    yum-config-manager --enable remi-php71
こっちは6.8-2で今の自分のものよりバージョンが上がっているしremi-php71が入っている。ということでこっち(remi)だけ更新すればいいと思う。

インストールされているリポジトリ削除のテスト(epelは更新しないことになったので削除しない。ただ、削除テストをすることで依存関係を知ることはできる。)
# rpm -e --test epel-release-6-8.noarch
error: Failed dependencies:
        epel-release >= 6 is needed by (installed) remi-release-6.5-1.el6.remi.noarch
上のことから、remi-release-6.5-1.el6.remi.noarchを削除してからepel-release-6-8.noarchを削除する。

# rpm -e --test remi-release-6.5-1.el6.remi.noarch

削除
rpm -e remi-release-6.5-1.el6.remi.noarch
/etc/yum.repos.d/remi.repoが消えていることを確認しておく。
rpm -e epel-release-6-8.noarch  (epelは更新しないことにしたので削除しない。)

最新リポジトリのインストール

もし、epelを更新するなら(更新しても同じ物になるはず。)
# rpm -ivh https://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpm

remiのインストール
# rpm -ivh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
(Remi's RPM repositoryというサイトのMaintained Enterprise Linux (RHEL / CentOS / Other clones)の下のリンク。Enterprise Linux 6 - repository auto-configuration package : remi-release-6.rpm)

remi-php54.repo
remi-php70.repo
remi-php71.repo
remi.repo
が/etc/yum.repos.d/に追加されたことを確認。

インストール後は、
リポジトリのファイル/etc/yum.repos.d/remi.repoなどで
enabled=0
の設定になっていることの確認をする。

次にphp7.1のインストール

その前にphp5.3.3をどうするか
php5.3.3をアンインストールするかどうか。
php5.3.3はphp7.1に上書きされるみたいなのだけど、
php5.3.3を削除しておいた方が安全なのかなぁ。
どこかのサイトで、php7は別ディレクトリにインストールされると書いてあるのを見た覚えがある。5を削除すれば5の位置に7が丸々入るのか。
上書きした場合phpの設定は引き継ぐのか。
自分の決定。
上書きをするといらないファイルが残って悪さをする可能性もあるからとりあえずきれいさっぱりphp5.3.3を削除することに決めた。

アンインストールする前に、
# rpm -qa | grep php
をやって、今インストールされている物をメモしておく。

で、アンインストール
/etc/init.d/httpd stop
/etc/init.d/mysqld stop
yum remove php-*

php7.1のインストールするものを決める
今、php5.3.3でインストールされていたのが
# rpm -qa | grep php       (# yum list installed | grep php)
php-gd-5.3.3-49.el6.x86_64
php-xml-5.3.3-49.el6.x86_64
php-5.3.3-49.el6.x86_64
php-devel-5.3.3-49.el6.x86_64
php-pdo-5.3.3-49.el6.x86_64
php-mbstring-5.3.3-49.el6.x86_64
php-cli-5.3.3-49.el6.x86_64
php-mysql-5.3.3-49.el6.x86_64
php-process-5.3.3-49.el6.x86_64
php-common-5.3.3-49.el6.x86_64
php-pear-1.9.4-5.el6.noarch

今の環境と同じものを作りたいのだから、
これのphp7.1バージョンをそのままインストールしてみる。

インストールする前に一つ一つの情報をinfoコマンドで確認する。
yum --enablerepo=epel,remi,remi-php71 info php php-gd php-xml php-devel php-pdo php-mbstring php-cli php-mysql php-process php-common php-pear
これを見れば、現在インストールされているもの(Installed Packages)と、remiからインストール可能なもの(Available Packages)が一覧になって表示される。

知りたい情報を表示させることもできる。(以下の2つの例はremiアップデート前の状態)
# yum --enablerepo=epel,remi info php71
Available Packages
Name        : php71
Arch        : x86_64
Version     : 1.0
Release     : 1.el6.remi
Size        : 2.1 k
Repo        : remi
Summary     : Package that installs PHP 7.1
License     : GPLv2+
Description : This is the main package for php71 Software Collection,
            : that install PHP 7.1 language.
(これはphp71がリポジトリremiの中に書かれてなくても表示される。)

# yum --enablerepo=epel,remi info php
Installed Packages
Name        : php
Arch        : x86_64
Version     : 5.3.3
Release     : 49.el6
Size        : 3.5 M
Repo        : installed
Available Packages
Name        : php
Arch        : x86_64
Version     : 5.4.45
Release     : 13.el6.remi
Size        : 2.8 M
Repo        : remi

php7.1のインストール

yum --enablerepo=epel,remi,remi-php71 install php php-gd php-xml php-devel php-pdo php-mbstring php-cli php-mysql php-process php-common php-pear

Installing:
 php               x86_64     7.1.6-1.el6.remi      remi-php71   2.8 M
 php-cli          x86_64     7.1.6-1.el6.remi      remi-php71   4.1 M
 php-common  x86_64     7.1.6-1.el6.remi      remi-php71    992 k
 php-devel      x86_64     7.1.6-1.el6.remi      remi-php71    1.3 M
 php-gd          x86_64     7.1.6-1.el6.remi      remi-php71    67 k
 php-mbstring  x86_64     7.1.6-1.el6.remi      remi-php71    977 k
 php-mysqlnd   x86_64     7.1.6-1.el6.remi      remi-php71    203 k
 php-pdo         x86_64     7.1.6-1.el6.remi      remi-php71    105 k
 php-pear        noarch     1:1.10.4-2.el6.remi  remi              367 k
 php-process    x86_64     7.1.6-1.el6.remi      remi-php71      61 k
 php-xml          x86_64     7.1.6-1.el6.remi     remi-php71     174 k
Installing for dependencies:
 gd-last           x86_64      2.2.4-1.el6.remi     remi               126 k
 libwebp           x86_64      0.4.3-3.el6            epel               210 k
 php-json        x86_64       7.1.6-1.el6.remi     remi-php71       53 k
こんな感じで入った。

/etc/init.d/httpd start
/etc/init.d/mysqld start
で、drupal7のサイトは普通に立ち上がった。

他のサイトが飛んでしまっていた。
何年も前に作ったサイトで、どんな設定だったかをを忘れてる。
phpのバックアップを取っておくべきだった。

-------------------------------------------------------------------------
リポジトリepelとremiは
どちらも普段はoff(enabled=0)にしておく。
理由は本来のパッケージとごちゃ混ぜになってしまったり、アップデートしなくていいものがアップデートされたりするからだ。
offにすると、php上位バージョンをインストール後は、いちいち
yum --enablerepo=remi,epel update php*
で、php関係のアップデートの確認が必要になる。
面倒だけどしようがない。(yumのcronアップデートを使えばいいのだろうけど、cronはUpdate後にPCがおかしくなっていても気づかずにいたことがあったのでそれはやらない。)

--------------------------------------------------------------------------
drupalで推薦されているphpのバージョンが書かれている場所。

\drupal-8.3.3\core\INSTALL.txt
に、
 PHP 5.5.9 (or greater). For better security support it is
  recommended to update to at least 5.5.21 or 5.6.5.
と書いてある。
drupalのサイトには
PHP Built-in Web Server (Development Only)
PHP Built-in Web Server is included as a CLI SAPI tool in PHP versions 5.4.0 and above.
と書いてある。セキュリティを考慮しなくてもいいなら5.4.0でも動くよってことなのかな。
drupal7 PHP 5.2.5 or higher (5.4 or higher recommended)
だそうだ。
-----------------------------------------------------------------------------------
何かの時のために、削除した時の情報を残しておく。
# yum remove php-*
Loaded plugins: fastestmirror, priorities, refresh-packagekit, security
Setting up Remove Process
Resolving Dependencies
--> Running transaction check
---> Package php.x86_64 0:5.3.3-49.el6 will be erased
---> Package php-cli.x86_64 0:5.3.3-49.el6 will be erased
---> Package php-common.x86_64 0:5.3.3-49.el6 will be erased
---> Package php-devel.x86_64 0:5.3.3-49.el6 will be erased
---> Package php-gd.x86_64 0:5.3.3-49.el6 will be erased
---> Package php-mbstring.x86_64 0:5.3.3-49.el6 will be erased
---> Package php-mysql.x86_64 0:5.3.3-49.el6 will be erased
---> Package php-pdo.x86_64 0:5.3.3-49.el6 will be erased
---> Package php-pear.noarch 1:1.9.4-5.el6 will be erased
---> Package php-process.x86_64 0:5.3.3-49.el6 will be erased
---> Package php-xml.x86_64 0:5.3.3-49.el6 will be erased
--> Finished Dependency Resolution

Dependencies Resolved

=============================================================================================================================================================
 Package                                 Arch                              Version                                    Repository                        Size
=============================================================================================================================================================
Removing:
 php                                     x86_64                            5.3.3-49.el6                               @base                            3.5 M
 php-cli                                 x86_64                            5.3.3-49.el6                               @base                            6.2 M
 php-common                              x86_64                            5.3.3-49.el6                               @base                            2.9 M
 php-devel                               x86_64                            5.3.3-49.el6                               @base                            3.0 M
 php-gd                                  x86_64                            5.3.3-49.el6                               @base                            324 k
 php-mbstring                            x86_64                            5.3.3-49.el6                               @base                            2.1 M
 php-mysql                               x86_64                            5.3.3-49.el6                               @base                            216 k
 php-pdo                                 x86_64                            5.3.3-49.el6                               @base                            168 k
 php-pear                                noarch                            1:1.9.4-5.el6                              @base                            2.2 M
 php-process                             x86_64                            5.3.3-49.el6                               @base                             65 k
 php-xml                                 x86_64                            5.3.3-49.el6                               @base                            307 k

Transaction Summary
=============================================================================================================================================================
Remove       11 Package(s)

Installed size: 21 M
Is this ok [y/N]: y
Downloading Packages:
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
Warning: RPMDB altered outside of yum.
  Erasing    : php-mysql-5.3.3-49.el6.x86_64                                                                                                            1/11
  Erasing    : php-devel-5.3.3-49.el6.x86_64                                                                                                            2/11
  Erasing    : 1:php-pear-1.9.4-5.el6.noarch                                                                                                            3/11
  Erasing    : php-5.3.3-49.el6.x86_64                                                                                                                  4/11
  Erasing    : php-cli-5.3.3-49.el6.x86_64                                                                                                              5/11
  Erasing    : php-pdo-5.3.3-49.el6.x86_64                                                                                                              6/11
  Erasing    : php-process-5.3.3-49.el6.x86_64                                                                                                          7/11
  Erasing    : php-gd-5.3.3-49.el6.x86_64                                                                                                               8/11
  Erasing    : php-xml-5.3.3-49.el6.x86_64                                                                                                              9/11
  Erasing    : php-mbstring-5.3.3-49.el6.x86_64                                                                                                        10/11
  Erasing    : php-common-5.3.3-49.el6.x86_64                                                                                                          11/11
warning: /etc/php.ini saved as /etc/php.ini.rpmsave
  Verifying  : php-mbstring-5.3.3-49.el6.x86_64                                                                                                         1/11
  Verifying  : php-pdo-5.3.3-49.el6.x86_64                                                                                                              2/11
  Verifying  : php-mysql-5.3.3-49.el6.x86_64                                                                                                            3/11
  Verifying  : php-xml-5.3.3-49.el6.x86_64                                                                                                              4/11
  Verifying  : php-cli-5.3.3-49.el6.x86_64                                                                                                              5/11
  Verifying  : 1:php-pear-1.9.4-5.el6.noarch                                                                                                            6/11
  Verifying  : php-5.3.3-49.el6.x86_64                                                                                                                  7/11
  Verifying  : php-gd-5.3.3-49.el6.x86_64                                                                                                               8/11
  Verifying  : php-devel-5.3.3-49.el6.x86_64                                                                                                            9/11
  Verifying  : php-process-5.3.3-49.el6.x86_64                                                                                                         10/11
  Verifying  : php-common-5.3.3-49.el6.x86_64                                                                                                          11/11

Removed:
  php.x86_64 0:5.3.3-49.el6           php-cli.x86_64 0:5.3.3-49.el6            php-common.x86_64 0:5.3.3-49.el6       php-devel.x86_64 0:5.3.3-49.el6
  php-gd.x86_64 0:5.3.3-49.el6        php-mbstring.x86_64 0:5.3.3-49.el6       php-mysql.x86_64 0:5.3.3-49.el6        php-pdo.x86_64 0:5.3.3-49.el6
  php-pear.noarch 1:1.9.4-5.el6       php-process.x86_64 0:5.3.3-49.el6        php-xml.x86_64 0:5.3.3-49.el6

---------------------------------------------------------------------------------
OPcacheに関してのPHP7.1は
http://yasutam.blogspot.jp/search?q=PHP+OPCODE+CACHING+opcache++++CentOS++php7.1





0 件のコメント:

コメントを投稿