CentOS7に稼働中のnginx1.10.2→1.11.9/PHP5.4→7.1/MariaDB 5.5.52→10.1.21/OpenSSL1.0.1e→1.1.0dをアップデート


アップデートいろいろ
CentOS7に対して現状yumではサポートされていないが最新の安定板に更新したい。

* nginx 1.10.2 → 1.11.9
* PHP 5.4.16 → 7.1.1
* MariaDB 5.5.52 → 10.1.21
* OpenSSL 1.0.1e → 1.1.0d

nginx

更新の背景

ちょっと古い記事ですけど公式的に要はmainline版は細かいバグ修正を頻繁にしているので、信頼性が高いですよ~
stable板はメジャーバグのみしか修正しませんよ~ってことみたい。
公式でも推奨してるので、まめにアップデートできるならmainline版でもええんじゃないかなと

NGINXの命名法では、「stable」とは新しい機能が追加されないことを意味します。主要なバグ修正だけがそのバージョンにコミットされます。

stable板は必ずしもより信頼性の高い、またはバグのないことを意味するとは限りません。 実際は、安定したブランチに統合された重要な修正だけでなく、より広い範囲のバグ修正を行うため、 mainline版は一般に信頼性が高いと見なされます。

新しい機能、パフォーマンスの改善、およびアップデートを維持したい場合は、(皮肉的に)stable板よりも一般に信頼性が高い。mainline版を選択してください

現行バージョン確認

console
$ nginx -v
nginx version: nginx/1.10.2
$ rpm -qa | grep nginx
nginx-mod-mail-1.10.2-1.el7.x86_64
nginx-1.10.2-1.el7.x86_64
nginx-mod-http-perl-1.10.2-1.el7.x86_64
nginx-mod-stream-1.10.2-1.el7.x86_64
nginx-mod-http-image-filter-1.10.2-1.el7.x86_64
nginx-mod-http-xslt-filter-1.10.2-1.el7.x86_64
nginx-filesystem-1.10.2-1.el7.noarch
nginx-mod-http-geoip-1.10.2-1.el7.x86_64
nginx-all-modules-1.10.2-1.el7.noarch

更新作業

公式を参考に

console
※旧バージョンを削除するなら実行
$ sudo yum remove nginx

$ sudo vi /etc/yum.repos.d/nginx.repo
vi-nginx.repo
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
gpgcheck=0
enabled=1
console
$ sudo yum install nginx

更新確認

console
$ nginx -v
nginx version: nginx/1.11.9

$ rpm -qa | grep nginx
nginx-1.11.9-1.el7.ngx.x86_64

nginx起動
$ sudo systemctl start nginx
$ sudo systemctl status nginx

注意

従来「/etc/nginx/nginx.conf」に記載されていた「server」ブロックは
「/etc/nginx/conf.d/default.conf」へと分割されています。
設定が一新されるので更新前にバックアップは必要です。

PHP

更新の背景

PHP 5.4は2015年9月3日にサポート期限が切れているらしいので、最新バージョンにするように案内されてます。
リリースから3年でサポート終了するので現状の最新PHP7.1に合わせておきます。

現行バージョン確認

console
$ rpm -qa | grep php
php-mbstring-5.4.16-42.el7.x86_64
php-mysql-5.4.16-42.el7.x86_64
php-fpm-5.4.16-42.el7.x86_64
php-pdo-5.4.16-42.el7.x86_64
php-common-5.4.16-42.el7.x86_64

更新作業

console
$ sudo rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
$ sudo yum install --enablerepo=remi,remi-php71 php-fpm php-mbstring php-mysqli

更新確認

console
$ rpm -qa | grep php
php-json-7.1.1-2.el7.remi.x86_64
php-fpm-7.1.1-2.el7.remi.x86_64
php-common-7.1.1-2.el7.remi.x86_64
php-pdo-7.1.1-2.el7.remi.x86_64
php-mbstring-7.1.1-2.el7.remi.x86_64
php-mysqlnd-7.1.1-2.el7.remi.x86_64

サービス有効化
$ sudo systemctl start php-fpm
$ sudo systemctl status php-fpm

注意

PHP5→7は下位互換のない点もあるので既存環境のテストを充分に行った方がええでしょう。
ざっくりPHP5で非推奨となってたのはあかんやろうなぁ・・・よう知らんけど

MariaDB

更新の背景

最新のは開発10.2系で行われており、安定板の10.1系の更新も頻繫行われているので、
バグとかもすぐ修正してくれるでしょう。とDB詳しくないので適当に

現行バージョン確認

console
$ rpm -qa | grep -i mariadb
mariadb-server-5.5.52-1.el7.x86_64
mariadb-libs-5.5.52-1.el7.x86_64
mariadb-5.5.52-1.el7.x86_64

更新作業

公式を参考に

console
$ sudo vi /etc/yum.repos.d/MariaDB.repo
vi
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.1/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1
console
$ sudo yum install mariadb-server

更新確認

console
$ rpm -qa | grep -i mariadb
MariaDB-common-10.1.21-1.el7.centos.x86_64
MariaDB-client-10.1.21-1.el7.centos.x86_64
MariaDB-shared-10.1.21-1.el7.centos.x86_64
MariaDB-server-10.1.21-1.el7.centos.x86_64

mariadb起動
$ sudo systemctl start mariadb
$ sudo systemctl status mariadb

OpenSSL

更新の背景

2-Jan-2017にOpenSSL 1.0.1シリーズのリリースはサポートを終了の為、1.1.0または1.0.2にアップグレードしてくださいと
公式で案内されたので、安定版は1.1.0シリーズに更新します。

現行バージョン確認

console
$ rpm -q openssl
openssl-1.0.1e-60.el7.x86_64

$ rpm -qa | grep openssl
openssl-libs-1.0.1e-60.el7.x86_64
openssl-devel-1.0.1e-60.el7.x86_64
openssl-1.0.1e-60.el7.x86_64

更新作業

console
gccのインストール(コンパイルに必要)
yum install gcc
perlのインストール(コンパイルopensslに必要)
yum install perl-core

手順としては公式からダウンロードしてから適当なディレクトリに展開してインストール
$ cd /usr/local/src
$ wget -
$ sudo tar xvzf openssl-1.1.0d.tar.gz
$ cd openssl-1.1.0d

$ sudo ./config --prefix=/usr --openssldir=/etc/pki/tls shared
$ sudo make
$ sudo make install

更新確認

console
バージョンは更新された模様
$ openssl version
OpenSSL 1.1.0d  26 Jan 2017

パッケージで入れてないからまぁないのは当然かな
$ rpm -qa | grep openssl
openssl-libs-1.0.1e-60.el7.x86_64
openssl-devel-1.0.1e-60.el7.x86_64
openssl-1.0.1e-60.el7.x86_64

パッケージの削除テストで依存関係がないか確認すると
インストールされても依存関係は移行しないのかな?
$ sudo rpm -e openssl-1.0.1e-60.el7.x86_64 --test
エラー: 依存性の欠如:
openssl >= 1.0.1 は (インストール済み)nginx-1:1.11.9-1.el7.ngx.x86_64 に必要とされています
openssl は (インストール済み)galera-25.3.19-1.rhel7.el7.centos.x86_64 に必要とされています
/usr/bin/openssl は (インストール済み)authconfig-6.2.8-14.el7.x86_64 に 必要とされています

phpinfo()で確認したところ旧バージョンを参照してました。

openssl
OpenSSL support enabled
OpenSSL Library Version OpenSSL 1.0.1e-fips 11 Feb 2013
OpenSSL Header Version OpenSSL 1.0.1e-fips 11 Feb 2013
Openssl default config /etc/pki/tls/openssl.cnf

う~ん

「openssl version」は更新されたけど依存関係は旧バージョンを参照してるので
うまいこといってないんやろうなぁ
いろんなところ参照したのでいろいろ混ざってしまったかも

結果

インストール方法で検索したらやり方がいろいろあっって、
切った張ったでごちゃ混ぜになってまとまりがない感じになりました。
もっとちゃんと調べらんとあかんねやろなぁ。