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」とは新しい機能が追加されないことを意味します。主要なバグ修正だけがそのバージョンにコミットされます。](https://translate.google.co.jp/translate?hl=ja&sl=en&tl=ja&u=https%3A%2F%2Fwww.nginx.com%2Fblog%2Fnginx-1-6-1-7-released%2F)

[stable板は必ずしもより信頼性の高い、またはバグのないことを意味するとは限りません。 実際は、安定したブランチに統合された重要な修正だけでなく、より広い範囲のバグ修正を行うため、 mainline版は一般に信頼性が高いと見なされます。](https://translate.google.co.jp/translate?hl=ja&sl=en&tl=ja&u=https%3A%2F%2Fwww.nginx.com%2Fblog%2Fnginx-1-8-and-1-9-released%2F&sandbox=1)

[新しい機能、パフォーマンスの改善、およびアップデートを維持したい場合は、（皮肉的に）stable板よりも一般に信頼性が高い。mainline版を選択してください](https://translate.google.co.jp/translate?hl=ja&sl=en&tl=ja&u=https%3A%2F%2Fwww.nginx.com%2Fblog%2Fnginx-1-10-1-11-released%2F)

###現行バージョン確認

```bash: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
```

###更新作業
[公式](http://nginx.org/en/linux_packages.html)を参考に

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

$ sudo vi /etc/yum.repos.d/nginx.repo
```

```bash:vi-nginx.repo
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
gpgcheck=0
enabled=1
```

```bash:console
$ sudo yum install nginx
```

###更新確認

```bash: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日に[サポート期限](https://translate.google.co.jp/translate?sl=en&tl=ja&js=y&prev=_t&hl=ja&ie=UTF-8&u=http%3A%2F%2Fphp.net%2Fsupported-versions.php&edit-text=&act=url)が切れているらしいので、最新バージョンにするように案内されてます。
リリースから3年でサポート終了するので現状の最新PHP7.1に合わせておきます。

###現行バージョン確認

```bash: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
```

###更新作業

```bash: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
```

###更新確認

```bash: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は[下位互換のない点](http://php.net/manual/ja/migration70.php)もあるので既存環境のテストを充分に行った方がええでしょう。
ざっくりPHP5で非推奨となってたのはあかんやろうなぁ・・・よう知らんけど


#MariaDB
##更新の背景
最新のは[開発](https://translate.google.co.jp/translate?hl=ja&sl=en&tl=ja&u=https%3A%2F%2Fmariadb.org%2Fget-involved%2Fgetting-started-for-developers%2F)10.2系で行われており、安定板の10.1系の[更新](https://translate.google.co.jp/translate?hl=ja&sl=en&tl=ja&u=https%3A%2F%2Fdownloads.mariadb.org%2Fmariadb%2F%2Breleases%2F)も頻繫行われているので、
バグとかもすぐ修正してくれるでしょう。とDB詳しくないので適当に

###現行バージョン確認

```bash: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
```

###更新作業
[公式](https://downloads.mariadb.org/mariadb/repositories/#mirror=yamagata-university&distro=CentOS&distro_release=centos7-amd64--centos7&version=10.1)を参考に

```bash:console
$ sudo vi /etc/yum.repos.d/MariaDB.repo
```

```bash:vi
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.1/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1
```

```bash:console
$ sudo yum install mariadb-server
```

###更新確認

```bash: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にアップグレードしてくださいと
[公式](https://translate.google.co.jp/translate?hl=ja&sl=en&u=https://www.openssl.org/&prev=search)で案内されたので、安定版は1.1.0シリーズに更新します。

###現行バージョン確認

```bash: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
```

###更新作業

```bash: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
```

###更新確認

```bash: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」は更新されたけど依存関係は旧バージョンを参照してるので
うまいこといってないんやろうなぁ
いろんなところ参照したのでいろいろ混ざってしまったかも

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