[CentOS7]PHPとMySQLをアップデートする

# はじめに

[前回の記事](https://qiita.com/caique/items/e066316c76f464ec2a87)ではWebminを設置した。
CentOSは[セットアップの際にアップデート](https://qiita.com/caique/items/3fb91fb0dcd7a5ad9e15#%E3%82%A2%E3%83%83%E3%83%97%E3%83%87%E3%83%BC%E3%83%88)していたが、PHPとMySQLは最新のものにアップデートしていなかった。
せっかくなので、最初から最新のものを入れておきたい。


環境は以下の通り

- さくらVPS
- スタートアップスクリプト「CentOS_LAMP」を使用
- CentOS 7.6.1810
- Apache 2.4.6

アップデートするのは以下の二つ

- PHP 5.4.16 -> PHP 7.3.0
- MariaDB 5.5.60 -> MariaDB 10.3

# PHPのアップデート

最新のバージョンを確認
http://php.net/downloads.php
最新はPHP7.3.0

現在インストール済みのPHPをチェックする

```
# rpm -qa | grep php
php-mysql-5.4.16-46.el7.x86_64
php-process-5.4.16-46.el7.x86_64
php-xml-5.4.16-46.el7.x86_64
php-gd-5.4.16-46.el7.x86_64
php-cli-5.4.16-46.el7.x86_64
php-mbstring-5.4.16-46.el7.x86_64
php-common-5.4.16-46.el7.x86_64
php-devel-5.4.16-46.el7.x86_64
php-pdo-5.4.16-46.el7.x86_64
php-pear-1.9.4-21.el7.noarch
```

後で同じ拡張モジュールを入れようと思うので、とりあえずインストール済みのものをメモしておく。

## 古いPHPの削除

削除しなくてもいいらしいけど、他のサイトを見るとみんな削除してるっぽいので、PHP5関連のものは全部削除する。

```
# yum remove php-*
 :
省略
 :
Complete!
```
削除されたかどうかの確認

```
# php -v
bash: php: command not found
```

## PHP7のインストール

Remiリポジトリを使ってインストールする
[Remiの公式サイト](http://rpms.remirepo.net/)にダウンロードのリンクがある。

![remi.JPG](https://qiita-image-store.s3.amazonaws.com/0/322587/bbe7a185-c25a-df64-1713-6b05a6e0abaf.jpeg)

リンクを確認して、
以下のコマンドでインストール

```
# rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
```

そもそもRemiがよくわからなかったんですが、僕はこのサイトで何となく理解できました。
参考：[Linuxのパッケージ管理についての用語を理解する](http://kayakuguri.github.io/blog/2015/12/18/linux-package/)

ちゃんとインストールされたかどうか確認する。

```
# ls -l /etc/yum.repos.d
total 80
 :
省略
 :
-rw-r--r--. 1 root root  951 Oct  3  2017 epel.repo
-rw-r--r--  1 root root  446 Jun 19 17:28 remi-glpi91.repo
-rw-r--r--  1 root root  446 Jun 19 17:28 remi-glpi92.repo
-rw-r--r--  1 root root  446 Jun 19 17:28 remi-glpi93.repo
-rw-r--r--  1 root root  456 Jun 19 17:28 remi-php54.repo
-rw-r--r--  1 root root 1314 Jun 19 17:28 remi-php70.repo
-rw-r--r--  1 root root 1314 Jun 19 17:28 remi-php71.repo
-rw-r--r--  1 root root 1314 Jun 19 17:28 remi-php72.repo
-rw-r--r--  1 root root 1314 Jun 19 17:28 remi-php73.repo
-rw-r--r--  1 root root  750 Jun 19 17:28 remi-safe.repo
-rw-r--r--  1 root root 2605 Jun 19 17:28 remi.repo
```
`remi-*`が追加されていることを確認。

いよいよPHP7のインストール
使用するのは最新の`remi-php73`
以下のコマンドでインストールする。

`yum install --enablerepo=remi,remi-php73 php`以降の部分には、先ほどメモした元々入っていた拡張モジュールを全部追加。

```
# yum install --enablerepo=remi,remi-php73 php php-mysql php-process php-xml php-gd php-cli php-mbstring php-common php-devel php-pdo php-pear
 :
省略
 :
Complete!
```
インストールされたかを確認する。

```
# php -v
PHP 7.3.0 (cli) (built: Dec  4 2018 16:12:20) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.3.0-dev, Copyright (c) 1998-2018 Zend Technologies

# rpm -qa | grep php
php-cli-7.3.0-1.el7.remi.x86_64
php-pear-1.10.7-1.el7.remi.noarch
php-common-7.3.0-1.el7.remi.x86_64
php-fedora-autoloader-1.0.0-1.el7.remi.noarch
php-devel-7.3.0-1.el7.remi.x86_64
php-json-7.3.0-1.el7.remi.x86_64
php-pdo-7.3.0-1.el7.remi.x86_64
php-gd-7.3.0-1.el7.remi.x86_64
php-7.3.0-1.el7.remi.x86_64
php-xml-7.3.0-1.el7.remi.x86_64
php-mbstring-7.3.0-1.el7.remi.x86_64
php-process-7.3.0-1.el7.remi.x86_64
php-mysqlnd-7.3.0-1.el7.remi.x86_64
```

無事、PHP7.3.0になりました。

# MariaDBのアップデート

続いてMariaDBのアップデートをします。
`MariaDB 5.5.60`を`MariaDB 10.3`にアップデート

まずは現在のバージョンを確認する

```
# mysql --version
mysql  Ver 15.1 Distrib 5.5.60-MariaDB, for Linux (x86_64) using readline 5.1
```

## yumリポジトリの作成

[追記：コメントでもっと簡単な方法を教えていただきました。こっちをぜひ試してみてください。](#追記-20181228)

MariaDBのリポジトリを新規に作成します。
[MariaDBの公式](http://mariadb.org/)にリポジトリのジェネレーターがある。

リポジトリジェネレーター：https://downloads.mariadb.org/mariadb/repositories/

`CentOS > CentOS7(x86_64) > 10.3[Stable]`の順に選択していくとリポジトリの中身が生成される。

![mariadb.JPG](https://qiita-image-store.s3.amazonaws.com/0/322587/c1d1e38b-881f-a658-3caa-cdfe4ff07b5c.jpeg)

これをコピペして使う

設置する場所は`/etc/yum.repos.d/`
`/etc/yum.repos.d/`に移動して、`MariaDB.repo`というファイルを新規作成

```
# cd /etc/yum.repos.d/
# vi MariaDB.repo
```
さっきのリポジトリジェネレーターの内容をコピペする。

```/etc/yum.repos.d/MariaDB.repo
# MariaDB 10.3 CentOS repository list - created 2018-12-24 01:31 UTC
# http://downloads.mariadb.org/mariadb/repositories/
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.3/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1
```

### 追記 2018/12/28

コメントでもっと簡単な方法を教えていただきました。
以下のコマンドだけでyumリポジトリの設定ができてしまうそうです。
詳細は[こちら](https://mariadb.com/kb/en/library/mariadb-package-repository-setup-and-usage/)

```
curl -sS https://downloads.mariadb.com/MariaDB/mariadb_repo_setup | sudo bash
```

私はこの方法を試していませんが、とても簡単そうなのでぜひ試してみてください。

## アップデート

今回は、`MariaDB 5.5`を`MariaDB 10.3`にアップデートする作業なので、
一旦MariaDBを停止してアップデートコマンドをたたく。

まずは停止してから、止まっていることを確認。

```
# systemctl stop mariadb
# systemctl status mariadb
 :
省略
 :
   Active: inactive (dead) since 
 :
省略
 :
```

`Active: inactive (dead)`になっていることを確認。
確認できたら以下のコマンドでアップデートする。

```
# yum update MariaDB-server MariaDB-client
 :
省略
 :
Complete!
```

## バージョン確認

バージョンを確認する

```
# mysql --version
mysql  Ver 15.1 Distrib 10.3.11-MariaDB, for Linux (x86_64) using readline 5.1
```

無事にバージョンアップができました。

# まとめ

結局この作業をするのなら、さくらVPSのスタートアップスクリプト「CentOS_LAMP」でインストールする必要はないのかなぁ…なんてことが脳裏をよぎってしまった。

次回は[Composerを入れてPHPフレームワークのCodeigniterを導入する](https://qiita.com/caique/items/cfa8c7c7971b2cd9d349)予定です。