VirtualBoxでLamp環境の構築 CentOS7 MariaDB

Linux環境でLAMP環境の構築をする必要があり、その備忘録です。
CentOS Linux release 7.8とMariaDBの指定がありました。

# VirtualBoxの備忘録

1年以上ぶりにVirtualBoxを立ち上げるとアップデートの表示があったので、[macOS の VirtualBox をサクッとアップデートする方法](https://webgroove.work/macos-virtualbox-update/)を参考にしました。

アップデートを完了し、再起動後にVirtualBoxを立ち上げると下記のエラーが発生。
`You must specify a machine to start, using the command line.  Usage: VirtualBoxVM --startvm <name|UUID> Starts the VirtualBox virtual machine with the given name or unique identifier (UUID).`
以前作った仮想マシンが原因っぽい？ので、[古いバージョンの VirtualBox で作った VM が vagrant up で起動しなくなった際の対処方法](https://inokara.hateblo.jp/entry/2015/09/27/102524)を参考にしました。
以前作った仮想マシンが立ち上がるのですが、VirtualBoxマネージャーは飛ばされているのか表示してくれません。
とりあえず再インストールしようとすると<b>開発元が未確認のため開ません</b>と表示されたので[macOS上のVirtualBoxで”Kernel driver not installed (rc=-1908)” が出た時の対処方法](https://www.nemotos.net/?p=3707)を参考にして再インストール完了。
再起動後はエラーもなく問題なく立ち上がりました。

<br>

# Lamp環境の構築

## CentOSのインストール
[VirtualBoxを使って、LAMP環境の構築](https://qiita.com/ka8210/items/ced8a4b1353d0d83b4ea)を参考にして、インストールを行います。<br>「仮想マシンを操作しやすくするための設定。」の箇所は上手くいかないので、ssh接続の設定を行います。

## ssh接続の設定
[macでVirtualBoxにCentOS7をいれてssh接続する](https://qiita.com/ebkn/items/751ed657629ba8d4ab0a)を参考に設定。<br>CentOS上ではコピペができないので、ssh接続をしてターミナルを使うことでコピペが可能になります。<br>WindowsだとTera Termを使った記憶があります。

```
vim ~/.ssh/config
-bash: vim: コマンドが見つかりません
```

というエラーがでたら、下記コマンドでvimをインストールします。

```
yum -y install vim-enhanced
```

`~/.ssh/config`に書き込みをするんですが、`sudo vim ~/.ssh/config`をしても`.ssh/config" E212: 書込み用にファイルを開けません`とでるばかり。
ファイルがないのかな？と思ったので、下記の手順でファイル作成と編集を行い、'ssh ホスト名'で接続できるようになりました。

```
mkdir ~/.ssh
chmod 700 .ssh
touch ~/.ssh/config
```

## apacheのインストール
[VirtualBoxを使って、LAMP環境の構築](https://qiita.com/ka8210/items/ced8a4b1353d0d83b4ea)を参考にして、インストールを行います。<br>以下は参考サイトからの引用です。

```
#提供されている Apache httpd 2.4 を確認
yum info httpd

#Apache httpd 2.4 をインストール
yum -y install httpd

#確認
httpd -v

#自動起動の設定
systemctl enable httpd.service

#起動
systemctl start httpd.service
```

## MariaDBのインストール

CentOS7からデフォルトのSQLがMariaDBになったようです。
MySQLのインストールをする場合は、下の方に書いているMySQLのインストールを参照してください。

[CentOS 7 に MariaDB Community Server 最新版をインストール](https://mariadb.com/ja/resources/blog/install-mariadb-server-centos7/)を参考に最新版のMariaDBをインストールします。

```
sudo yum install mariadb-server // サポートの切れている旧バージョンのインストール？
sudo yum install MariaDB-server // こちらが最新っぽい
```

参考にしている記事は2019年に執筆され、CentOS標準のMariaDBは2020年にサポート終了のようです。
ですので、現在は2022年のため`sudo yum install MariaDB-server`でインストールしていきます。

```
# yumレポジトリの設定
curl -sS https://downloads.mariadb.com/MariaDB/mariadb_repo_setup | sudo bash

# MariaDB Server のインストール
sudo yum install MariaDB-server

# mysql --version
# インストールされたバージョンは10.6.5のようです
mysql  Ver 15.1 Distrib 10.6.5-MariaDB, for Linux (x86_64) using readline 5.1

# 文字コード設定。日本語を扱えるよう，utf8mb4に変更(※2)
#  [mariadb] セクションに設定を追加
vi /etc/my.cnf.d/server.cnf 

[mariadb]
character-set-server = utf8mb4　// 追記
[client-mariadb]　// 追記
default-character-set = utf8mb4　// 追記

# mariadb serviceの有効化と開始
sudo systemctl enable mariadb
sudo systemctl start mariadb

# 接続してバージョン確認
mysql -u root
MariaDB [(none)]> select version();
+----------------+
| version()      |
+----------------+
| 10.6.5-MariaDB |
+----------------+

# 設定した文字コード(character_set)設定を確認
MariaDB [(none)]> show variables like 'char%';
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | utf8mb4                    |
| character_set_connection | utf8mb4                    |
| character_set_database   | utf8mb4                    |
| character_set_filesystem | binary                     |
| character_set_results    | utf8mb4                    |
| character_set_server     | utf8mb4                    |
| character_set_system     | utf8mb3                    |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
```

```
# mariadb serviceの再起動
sudo systemctl restart mariadb
```
参考にしたサイトは文字コードがutf8mb3になっていたので、[MariaDB(MySQL)初期設定時のセキュリティとutf8mb4化の手順](https://onoredekaiketsu.com/mariadb-secure-installation-and-chenge-to-utf8mb4/)を参考に、utf8mb4にしました。
「character_set_system」が「utf8mb3」なのはよくわかりませんが、参考サイトには「character_set_system」が「utf8」が正常と書いてあったので、とりあえずこのままで。


## PHPのインストール
[VirtualBoxを使って、LAMP環境の構築](https://qiita.com/nooboolean/items/de4e6bbae5df040177af)ではPHP7.1をインストールしていますが、せっかくなので[RemiでCentOS7にPHP8をインストールする](https://qiita.com/C_HERO/items/1512ba1e33c330c9ab0d)を参考にして、2022年2月現在の一番新しいPHP8.1.2をインストールすることにします。

以下参考サイトを引用しつつ、自分のまとめです。
コマンドは参考サイトと少々違いますが、Wizard answerに書いてある物です。

[Remi's RPM repository - Configuration wizard](https://rpms.remirepo.net/wizard/)で下記のように選択。

![スクリーンショット 2022-02-03 23.01.29.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/485388/a50ccc1c-5f30-be8d-440f-9bea9d458b64.png)


```
# Remiの使用に必要なEPEL（=標準リポジトリでは提供されないパッケージの使用を可能にする）をインストールします。
yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm

# Remiレポジトリの構成パッケージをインストール
yum install https://rpms.remirepo.net/enterprise/remi-release-7.rpm

# yum-config-managerコマンドの使用に必要なyum-utilsパッケージをインストール
yum install yum-utils

# PHP8.1のパッケージのみを有効にします
yum-config-manager --disable 'remi-php*'
yum-config-manager --enable   remi-php81

# 使用可能なレポジトリの確認。「remi-php81」が表示されればOKです。
yum repolist

# インストールパッケージの最新化を実施。ただしCentOS7.8が指定されているので、centosは除く。
# 最後止まったかなと思いましたが、待ってれば終わりました。
yum update --exclude=centos*

# PHPをインストール。
yum install -y php

# PHPのバージョン確認
php --version
PHP 8.1.2

# CentOS7.8指定なので、7.9に上がっていないかを確認
cat /etc/redhat-release
CentOS Linux release 7.8.2003 (Core)
```

yum updateの除外は、/etc/yum.confに書き込む方法もあるようですが、今回はコマンドのみで対応しました。

これで、VirtualBoxでLamp環境の構築 CentOS7 MariaDBを終了です。

<br>

<hr>

# MySQLのインストール

MariaDBが指定されているにもかかわらず、MySQLをインストールしてたので、メモとして残しておきます・・・。

[VirtualBoxを使って、LAMP環境の構築](https://qiita.com/ka8210/items/ced8a4b1353d0d83b4ea)を参考にして、インストールを行います。
一部エラーがでたので、参考サイトを引用しつつ修正します。

```
#mariaDBがインストールしてある場合を考えて、mariaDB ライブラリとデータフォルダを削除
yum remove mariadb-libs
rm -rf /var/lib/mysql/

#MySQL の yum リポジトリを追加
yum localinstall http://dev.mysql.com/get/mysql57-community-release-el7-7.noarch.rpm

#パッケージの詳細情報を確認
yum info mysql-community-server

#新しいGPGキーをインストール(※1)
sudo rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022

#mysql-community-serverのインストール
yum -y install mysql-community-server

#MySQL Serverインストール＆バージョン確認
mysqld --version

#自動起動の設定
systemctl enable mysqld.service

#起動
systemctl start mysqld.service

```

参考サイトには(※1)がなく、`yum -y install mysql-community-server`をすると下記のエラーが発生しました。

```
yum -y install mysql-community-server

警告: /var/cache/yum/x86_64/7/mysql57-community/packages/mysql-community-server-5.7.37-1.el7.x86_64.rpm: ヘッダー V4 RSA/SHA256 Signature、鍵 ID 3a79bd29: NOKEY
file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql から鍵を取得中です。

The GPG keys listed for the "MySQL 5.7 Community Server" repository are already installed but they are not correct for this package.
Check that the correct key URLs are configured for this repository.

 Failing package is: mysql-community-server-5.7.37-1.el7.x86_64
 GPG Keys are configured as: file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql


mysqld --version
bash: mysqld: コマンドが見つかりませんでした...
```

[[MySQL] アップデート時にGPGキーのエラーで停止してしまう場合](https://blog.katsubemakito.net/mysql/mysql-update-error-gpg)を参考に解決したのですが、MySQL8.0.28がリリースされたタイミングでGPGキーが変更されたようです。

<br>

# 失敗メモ

上手くいかなかったことのメモです。
コピペ可能にするためにVBoxGuestAdditionsのインストールをした試み。
<b>結局はssh接続の設定で、ターミナルから接続することにしました。</b>
GUIでもVBoxGuestAdditionsが立ち上がらず。

- ネットワークインターフェースの自動接続を双方向にする<br>VirtualBox Guest Additionsをインストールするためにyumを通らなかったので、[CentOS7 yum update でエラー](https://studio73-pg.com/linux/centos7-yum-update-err/)を参考にし、ネットワークインターフェースの自動接続を有効したところyumが通りました。
yum updateをした時に出たエラーは`centos7 yum update cannot find a valid baseurl for repo`でした。

- VirtualBox Guest Additionsのインストール

- デバイス＞クリップボードの共有を有効