Debian 10 Busterの、Buster。この犬ねw
やっぱりDebianが好き
やっとWeb用VMをDebian GNU/Linux 10(Buster)に移行した。
Debian 8のi386を長らく使い続けていたので、これを機にamd64にしたい。しかも廃止パッケージを数多く使っていたのでdist-upgradeは最初から諦め。この規制を乗り越えるのはかなり時間を要して滅入った(汗
そもそも使い込んだDebianが難なくアップグレードできることなんて期待してはイケナイ(;´∀`) 難航した。。。
dpkg –get-selections > packages.list してパッケージ名のi386をamd64に置換、その上でBusterに持って行き、できる限り同じ構成を再現。40程度同名パッケージが消失していた。。。
移行元 dpkg --get-selections > packages.list 移行先 apt-get install dselect dselect update dpkg --clear-selections dpkg --set-selections < packages.list apt-get dselect-upgrade apt-get autoremove
いちばんの懸念材料だったのが、サイトコンテンツの都合上PHP 5.6環境を残したかった点。当然ながら、Busterでは標準パッケージから消え去っているため、標準外な構築を強いることになった。何回も環境を作り直し、やっと以下に落ち着いた次第。これでLTSの2024年までは安泰かな。
さて、タイトルの本題へ。PHP 7.3とPHP 5.6の共存方法について(2019/08現在)。
packages.sury.org/php パッケージ
libcurl4とlibcurl3を共存するのがかなり手こずった。そして、PHP 5.6の方はfpmに。これを決めてからはサクサクと進んだ。
PHP 5.6パッケージは、上記リンク先の通り。Busterも在るので以下のように書き換えればよい。
# cat /etc/apt/sources.list.d/php.list deb https://packages.sury.org/php/ buster main
インストール後のパッケージは以下のような感じ。
# dpkg -l|grep php ii php5.6-cgi 5.6.40-9+0~20190710.17+debian10~1.gbp923b30 amd64 server-side, HTML-embedded scripting language (CGI binary) ii php5.6-cli 5.6.40-9+0~20190710.17+debian10~1.gbp923b30 amd64 command-line interpreter for the PHP scripting language ii php5.6-common 5.6.40-9+0~20190710.17+debian10~1.gbp923b30 amd64 documentation, examples and common module for PHP ii php5.6-curl 5.6.40-9+0~20190710.17+debian10~1.gbp923b30 amd64 CURL module for PHP ii php5.6-fpm 5.6.40-9+0~20190710.17+debian10~1.gbp923b30 amd64 server-side, HTML-embedded scripting language (FPM-CGI binary) ii php5.6-json 5.6.40-9+0~20190710.17+debian10~1.gbp923b30 amd64 JSON module for PHP ii php5.6-mbstring 5.6.40-9+0~20190710.17+debian10~1.gbp923b30 amd64 MBSTRING module for PHP ii php5.6-mysql 5.6.40-9+0~20190710.17+debian10~1.gbp923b30 amd64 MySQL module for PHP ii php5.6-opcache 5.6.40-9+0~20190710.17+debian10~1.gbp923b30 amd64 Zend OpCache module for PHP ii php5.6-readline 5.6.40-9+0~20190710.17+debian10~1.gbp923b30 amd64 readline module for PHP ii php5.6-xml 5.6.40-9+0~20190710.17+debian10~1.gbp923b30 amd64 DOM, SimpleXML, WDDX, XML, and XSL module for PHP ii php7.3 7.3.7-2+0~20190725.42+debian10~1.gbp848ca5 all server-side, HTML-embedded scripting language (metapackage) ii php7.3-cli 7.3.7-2+0~20190725.42+debian10~1.gbp848ca5 amd64 command-line interpreter for the PHP scripting language ii php7.3-common 7.3.7-2+0~20190725.42+debian10~1.gbp848ca5 amd64 documentation, examples and common module for PHP ii php7.3-curl 7.3.7-2+0~20190725.42+debian10~1.gbp848ca5 amd64 CURL module for PHP ii php7.3-fpm 7.3.7-2+0~20190725.42+debian10~1.gbp848ca5 amd64 server-side, HTML-embedded scripting language (FPM-CGI binary) ii php7.3-gd 7.3.7-2+0~20190725.42+debian10~1.gbp848ca5 amd64 GD module for PHP ii php7.3-intl 7.3.7-2+0~20190725.42+debian10~1.gbp848ca5 amd64 Internationalisation module for PHP ii php7.3-json 7.3.7-2+0~20190725.42+debian10~1.gbp848ca5 amd64 JSON module for PHP ii php7.3-ldap 7.3.7-2+0~20190725.42+debian10~1.gbp848ca5 amd64 LDAP module for PHP ii php7.3-mbstring 7.3.7-2+0~20190725.42+debian10~1.gbp848ca5 amd64 MBSTRING module for PHP ii php7.3-mysql 7.3.7-2+0~20190725.42+debian10~1.gbp848ca5 amd64 MySQL module for PHP ii php7.3-opcache 7.3.7-2+0~20190725.42+debian10~1.gbp848ca5 amd64 Zend OpCache module for PHP ii php7.3-readline 7.3.7-2+0~20190725.42+debian10~1.gbp848ca5 amd64 readline module for PHP ii php7.3-sqlite3 7.3.7-2+0~20190725.42+debian10~1.gbp848ca5 amd64 SQLite3 module for PHP ii php7.3-xml 7.3.7-2+0~20190725.42+debian10~1.gbp848ca5 amd64 DOM, SimpleXML, WDDX, XML, and XSL module for PHPその後、5.6-fpm # /usr/bin/php7.3 -v PHP 7.3.7-2+0~20190725.42+debian10~1.gbp848ca5 (cli) (built: Jul 25 2019 11:53:58) ( NTS ) Copyright (c) 1997-2018 The PHP Group Zend Engine v3.3.7, Copyright (c) 1998-2018 Zend Technologies with Zend OPcache v7.3.7-2+0~20190725.42+debian10~1.gbp848ca5, Copyright (c) 1999-2018, by Zend Technologies # /usr/bin/php5.6 -v PHP 5.6.40-9+0~20190710.17+debian10~1.gbp923b30 (cli) Copyright (c) 1997-2016 The PHP Group Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies with Zend OPcache v7.0.6-dev, Copyright (c) 1999-2016, by Zend Technologies #
その後、5.6-fpmを動かしてプロキシモジュールも組み込み。
# systemctl status php5.6-fpm.service ● php5.6-fpm.service - The PHP 5.6 FastCGI Process Manager Loaded: loaded (/lib/systemd/system/php5.6-fpm.service; enabled; vendor preset: enabled) Active: active (running) since Tue 2019-08-04 18:29:30 JST; 6h ago ...... # a2enmod actions alias proxy_fcgi fcgid
特定サイトだけPHP 5.6-fpmに
最終的にPHP 7.3をメイン環境として、ヴァーチャルホストの一部サイトだけをPHP 5.6で動かすようにした。
# cat /etc/apache2/sites-enabled/.....conf <VirtualHost *:80> ServerAdmin webmaster@.....jp DocumentRoot /www/html/..... ServerName .....jp ScriptAlias /cgi-bin/ "/www/cgi-bin/" ErrorDocument 404 /missing.html ErrorLog ${APACHE_LOG_DIR}/.....-error.log SetEnvIf Remote_Addr 10.141.0.2 no_log CustomLog ${APACHE_LOG_DIR}/....-access.log combined env=!no_log SetEnvIf User-Agent "Googlebot" google SetEnvIf Request_URI "\.(gif)|(jpg)|(png)$" no_log CustomLog ${APACHE_LOG_DIR}/google......log combined env=google SetEnvIf User-Agent "slurp" slurp CustomLog ${APACHE_LOG_DIR}/slurp......log combined env=slurp <FilesMatch \.php$> SetHandler "proxy:unix:/var/run/php/php5.6-fpm.sock|fcgi://localhost/" </FilesMatch> </VirtualHost>
Muninのrrdもi386からamd64になることで互換性が無く、面倒だった。
このサイトのWordPressもPHP 7化で速くなった
このサイトもやっとPHP 7に出来たけれど、「WPは7になれば速い!」という噂通りだった。これも半信半疑ながらDebian 10にしたかった理由のひとつ。