Amazon Linux2 ec2にphp7.4 +laravel7+mysql8.0環境構築


概要

Amazon Linux2 ec2インスタンスに接続し、ec2-userの状態でphp7.4、laravel7、mysql8.0をインストールし環境構築します。
途中、必要に応じてapache、php-fpm、git、bitbucket、phpmyadminのインストール、設定も行っていますがこちらは必須ではありません。

なお、Amazon Linux ec2インスタンスに接続した後、yumコマンドがうまく実行できない場合はAWS VPCのポリシーの編集が必要な場合がありますので注意してください。その場合、VPC から Amazon Linux AMI リポジトリをホストする S3 バケットへのトラフィックを許可する必要があります。
詳細は、AWS公式ドキュメントを参照してください。

{
"Statement": [
   {
      "Sid": "Amazon Linux AMI Repository Access",
      "Principal": "*",
      "Action": [
         "s3:GetObject"
      ],
      "Effect": "Allow",
      "Resource": [
         "arn:aws:s3:::packages.*.amazonaws.com/*",
         "arn:aws:s3:::repo.*.amazonaws.com/*"
      ]
   }
]
}

php7.4 install

最新版のphp7.4をインストールします。
リポジトリのおいてある場所は、都度最新版のURLから取得するようにしてください。

   sudo amazon-linux-extras install epel
   sudo yum install epel-release
   sudo rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
   sudo yum install -y php74 php74-php php74-php-fpm
   sudo ln -s /usr/bin/php74 /usr/bin/php
   php -v

php.ini symbolic link

上記でインストールした場合、php.iniの場所は/etc直下には存在しません。
今後の使い勝手を良くするためにシンボリックリンク設定を行います。

   sudo find / -name php.ini
   ln -s /etc/opt/remi/php74/php.ini /etc/php.ini
   sudo ln -s /etc/opt/remi/php74/php.ini /etc/php.ini

apache & php-fpm start

php-fpmが必要な場合のみ実施します。

   sudo systemctl enable httpd.service
   sudo systemctl start httpd.service
   sudo systemctl status httpd.service
   sudo systemctl enable php74-php-fpm.service
   sudo systemctl start php74-php-fpm.service
   sudo systemctl status php74-php-fpm.service

composer install

   php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
   php composer-setup.php
   rm composer-setup.php
   mv composer.phar /usr/local/bin/composer
   sudo mv composer.phar /usr/local/bin/composer
   composer 

sshd setting

ssh接続の設定が必要な場合のみ実施します。

   sudo vi /etc/ssh/sshd_config
   sudo chkconfig --list
   sudo service sshd restart

laravel install

   sudo yum install php74-php-pecl-zip
   composer global require laravel/installer

git install & ssh-key generate & git clone from bitbucket

gitを利用する場合に実施します。

   sudo yum install git
   git --version

また、bitbucketを利用する場合、以下の流れで設定していきます。

   ssh-keygen
   eval `ssh-agent`
   ssh-add ~/.ssh/id_rsa
   cat ~/.ssh/id_rsa.pub
   ssh -T [email protected]
   git clone [email protected]:xxxxxxx/xxxxxxx.git

laravel project create

  cd /var/www/html/xxxx
  sudo yum install php74-php-mbstring
  sudo yum install php74-php-xml
  sudo yum install php74-php-bcmath
  composer create-project --prefer-dist laravel/laravel .
  sudo chmod -R 777 storage
  sudo chmod -R 777 bootstrap/cache

git push

  git add .
  git commit -m "laravel7 installed"
  git remote add origin [email protected]:xxxxxxx/xxxxxxx.git
  git push origin master
  git config --global user.name "xxxxxxx"
  git config --global user.email "xxxxxxx"

apache document root setting

Document Rootを変更したい場合、実施します。
laravelにアクセスする場合、/var/www/html/xxxx/publicを設定します。

  sudo vi /etc/httpd/conf/httpd.conf
httpd.conf
  DocumentRoot "/var/www/html/xxxx/public"
  sudo service httpd restart

mysql8.0 install & start

最新のmysql8.0をインストールします。
リポジトリの場所は、こちらで確認してください。

  sudo yum localinstall https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm -y
  yum install mysql-community-server
  sudo yum install mysql-community-server
  mysql --version
  sudo systemctl start mysqld.service
  sudo systemctl enable mysqld.service

mysql8.0 setting

  sudo grep 'temporary password' /var/log/mysqld.log
  mysql_secure_installation

phpmyadmin install

最新のphpmyadminをインストールしたい場合、実施します。
ダウンロードのURLは、こちらで確認してください。サイト右上にある「Download x.x.x」のリンクアドレスをコピーして利用する。

  cd /var/www/html
  wget https://files.phpmyadmin.net/phpMyAdmin/5.0.2/phpMyAdmin-5.0.2-all-languages.zip
  unzip phpMyAdmin-5.0.2-all-languages.zip
  mv phpMyAdmin-5.0.2-all-languages phpmyadmin #リネームは各自の環境に合わせて設定
  rm -rf phpMyAdmin-5.0.2-all-languages.zip
  sudo yum install php74-php-mysqlnd

apache setting for phpmyadmin

  sudo vi /etc/httpd/conf/httpd.conf #Alias、バーチャルホスト設定など、各自の環境に合わせて設定
  sudo service httpd configtest
  sudo service httpd restart

上記の状態でもphpmyadminの使用は可能ですが、warningが出ているため以下で解消します。

  cd /var/www/html/phpmyadmin
  mkdir tmp
  sudo chmod -R 777 tmp
  cp -a config.sample.inc.php config.inc.php
  vi config.inc.php
config.inc.php
  $cfg['blowfish_secret'] = 'ここに32文字以上の文字列を設定して保存';

access phpmyadmin

laravel setting for mysql connetion

laravelからmysqlに接続できるように、.envファイルを編集します。

/var/www/html/xxxx/.env
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel
DB_USERNAME=mysqlユーザ名
DB_PASSWORD=mysqlパスワード

access laravel