新しき環境は良いことだ?
とりあえず使って判断してみようの精神。
結局、Apache2.4とMySQL8.0とPHP7.4のLAMP環境をササッと作ってあげたいですよね。
(WordPressの実行環境的にも新しいis最高みたいなこと言ってた)
バージョン選定理由をざっくり
Amazon Linux2
とりあえず立てるのが早いから。2020年01月現在、AmazonLinuxはサポート終了まで半年切ってますのでだめですよ!
何よりRHEL6系だし
Apache2.4
まぁ新しくApache立てるなら絶対使いたい2.2でしかないモジュールがあるんだ!とかでもない限り普通に2.4一択では。
Nginxではない理由は特にないです。Apacheで作りたかった。LAMPが文字通り良かった。
MySQL8.0
ここからが本題。
なんで8.0?というところで、確かに一部クエリの構文が5.7と大きく違うので初見でビビる。
ただ、身の回りでは未だに5.7を選定する場合が多く、8.0を立てる機会がなかったので……。
あと公式が5.7の2倍速いぜって言ってるその潔さに惚れたからです。こちらは冗談です。
PHP7.4
せっかくなら全部最新のものを!という精神。
シンプルに、7.x系の最新をセレクトしただけです。
構築してみた
AmazonLinux2のインスタンスを作成
AmazonLinux2のAMIからインスタンスを作成します。手順は省きます。
ただ、検証用にTシリーズを選択するのは良いですがt3a.nanoではMySQL8.0がスタート出来ませんでした。
必ずt3a.micro程度以上を選択してください。
最初にやること済ませとく
yumの更新します。必要に応じてカーネルアップデートもしておきます。
[ec2-user@ip-xxx-xxx-xxx-xxx ~]$ sudo yum all clean
[ec2-user@ip-xxx-xxx-xxx-xxx ~]$ sudo yum -y update
[ec2-user@ip-xxx-xxx-xxx-xxx ~]$ sudo yum update kernel
[ec2-user@ip-xxx-xxx-xxx-xxx ~]$ reboot
Apacheインストール
これは1行で済みます。
[ec2-user@ip-xxx-xxx-xxx-xxx ~]$ sudo yum -y install httpd
[ec2-user@ip-xxx-xxx-xxx-xxx ~]$ systemctl enable httpd
[ec2-user@ip-xxx-xxx-xxx-xxx ~]$ systemctl start httpd
[ec2-user@ip-xxx-xxx-xxx-xxx ~]$ httpd -v
PHP7.4インストール
まず、epelを有効化します。
[ec2-user@ip-xxx-xxx-xxx-xxx ~]$ sudo yum -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
[ec2-user@ip-xxx-xxx-xxx-xxx ~]$ sudo yum -y install epel-release
次に、remiを有効化します。
[ec2-user@ip-xxx-xxx-xxx-xxx ~]$ sudo rpm -Uvh https://rpms.remirepo.net/enterprise/remi-release-7.rpm
PHP7.4をインストールします。
[ec2-user@ip-xxx-xxx-xxx-xxx ~]$ sudo yum -y install --enablerepo remi php74
お好みでPHP拡張もインストールします。
[ec2-user@ip-xxx-xxx-xxx-xxx ~]$ sudo yum -y install --enablerepo remi php74-php-mbstring php74-php-gd php74-php-devel php74-php-xml php74-php-zip php74-php-posix php74-php-opcache php74-apcu
PHP7.4のインストール結果を確認します。
[ec2-user@ip-xxx-xxx-xxx-xxx ~]$ sudo yum list installed | grep php74
この状態だとphp74でコマンド実行になってしまうのでphpで実行できるようにする。
which php74でコマンドの場所を確認してからlnコマンド
[ec2-user@ip-xxx-xxx-xxx-xxx ~]$ which php74
[ec2-user@ip-xxx-xxx-xxx-xxx ~]$ sudo ln -sf /bin/php74 /bin/php
最後にPHPバージョン確認
[ec2-user@ip-xxx-xxx-xxx-xxx ~]$ php --version
最後にMySQL8.0インストール
MySQL8.0をインストールします。
[ec2-user@ip-xxx-xxx-xxx-xxx ~]$ sudo yum -y install https://dev.mysql.com/get/mysql80-community-release-el7-1.noarch.rpm
[ec2-user@ip-xxx-xxx-xxx-xxx ~]$ sudo yum -y install --enablerepo=mysql80-community mysql-community-server
MySQLバージョンチェック
[ec2-user@ip-xxx-xxx-xxx-xxx ~]$ mysql --version
rootユーザの一時パスワード確認
[ec2-user@ip-xxx-xxx-xxx-xxx ~]$ sudo cat /var/log/mysqld.log | grep "temporary password"
ログイン確認
[ec2-user@ip-xxx-xxx-xxx-xxx ~]$ mysql -uroot -p
MySQLログインして、以下クエリを発行。パスワードポリシをゆるふわに
mysql> set global validate_password.length=1;
mysql> set global validate_password.policy=LOW;
最後にrootユーザのパスワード設定や初期設定を行う
入力値は要件により任意(y/nでは私は全部yにしたりしてます)
[ec2-user@ip-xxx-xxx-xxx-xxx ~]$ mysql_secure_installation
おわりに
新しめのバージョンでLAMP環境チャッと作るよ!という時はこんな感じのやり方になると思います。
作ってみたは良いのですが、何を動かすか全然考えていなかったので、
一旦この後何を動かしてみるか考えてみたいと思います。
お疲れさまでした。