LoginSignup
4
2

More than 3 years have passed since last update.

AWS Cloud9でPHP7.1、MySQL5.7、Laravel5.5環境を構築しHerokuにデプロイするまでにやったこと

Last updated at Posted at 2019-07-16

ちょいちょいつまづいたので自分用にまとめておきます。

前提条件

AWS Cloud9の開発環境を新規作成(EC2、Amazon Linuxを使用)したところからスタート。
AWSアカウント自体の作成やIAMユーザの作成などは本稿では扱いません。

EBSボリュームのリサイズ

まずはこれを行います。
別にやらなくてもいいんですが、AWS Cloud9は初期設定のままだとEBSボリュームのサイズがけっこう小さいです。
スクリーンショット 2019-07-09 21.48.00.png
(↑ボリュームサイズが9.8Gしかなく、しかも既に59%を使用しています)

ストレージとして使用するわけではないのでそこまで大容量は必要ないかと思いますが、composerでlaravelをインストールした拍子に使用率が100%に達してしまい、にっちもさっちもいかなくなってしまった経験から最初にある程度余裕をもたせておくことにしました。やり方は下記の記事を参考に。

AWS Cloud9 で利用している EBS ボリューム領域を拡張する - Qiita

シェルスクリプトを実行して拡張するやり方もあるようなのですが↓私の場合は権限がないよ的なエラーが出てしまってうまくいきませんでした。この方法でうまくいくなら一番簡単かもしれません。

AWS Cloud9 で Environment を移動またはサイズ変更する - AWS Cloud9

ボリュームサイズを変更後、確認。とりあえず16Gまで増やしてみました。
スクリーンショット 2019-07-10 20.36.14.png

PHPのバージョンを7.1に上げる

初期設定だとPHPのバージョンが5.6とかなので7.1に上げます。下記をターミナルで実行。

>sudo yum -y update
>sudo yum -y install php71 php71-mbstring php71-pdo php71-intl php71-pdo_mysql php71-pdo_pgsql php71-xdebug php71-opcache php71-apcu
>sudo unlink /usr/bin/php
>sudo ln -s /etc/alternatives/php7 /usr/bin/php

ポイントは2行目でMySQLのPDOドライバを一緒にインストールしているところです。

初期設定ではPDOドライバがSQLiteのみとなっているため、あとでMySQLに接続してマイグレーションを走らせようとしたときにcould not find driverと言われてしまいます。そうならないようにここでMySQLのPDOドライバをインストールしておきます。

PDOドライバを確認するには以下のように実行

>php -m | grep pdo

初期状態で↑を実行するとおそらくpdo_sqliteしか出てこないと思います。
が、先ほどMySQLのPDOドライバを(PostgreSQLのもついでに)インストールしているので下記のような結果になっているはずです。
スクリーンショット 2019-07-10 20.45.54.png
PHPのバージョンも無事上がりました。
スクリーンショット 2019-07-10 20.47.50.png

composerインストール

composerをインストールします。

>curl -sS https://getcomposer.org/installer | php
>sudo mv composer.phar /usr/local/bin/composer

composerの設定をします。

>sudo dd if=/dev/zero of=/var/swap.1 bs=1M count=2048    //ちょっと時間かかる
>sudo chmod 600 /var/swap.1
>sudo mkswap /var/swap.1
>sudo swapon /var/swap.1
>sudo cp -p /etc/fstab /etc/fstab.ORG
>sudo sh -c "echo '/var/swap.1 swap swap defaults 0 0' >> /etc/fstab"

Laravelプロジェクトを作成

Laravel5.5でプロジェクトを作成します。

>composer create-project laravel/laravel hoge-project "5.5.*"

MySQLのバージョンを5.7に上げる

デフォルトは5.5とかなので5.7に上げます。これもやっておかないとmigrate時にSyntax Errorが出たりします。下記をターミナルで実行。

>sudo service mysqld stop
>sudo yum -y erase mysql-config mysql55-server mysql55-libs mysql55
>sudo yum -y install mysql57-server mysql57
>sudo service mysqld start

その他環境設定

環境に合わせて.envの編集や、タイムゾーンの設定などを行います。

これでローカル(?)の開発環境はだいたいできたので開発自体は行える状況になりましたが、もうひとつだけやることがあります。それはHerokuでMySQL5.7を使えるようにすることです。HerokuのデフォルトDBはPostgreSQLなのでMySQLを使うにはアドオンを追加してやる必要があります。HerokuでMySQLを使う場合、ClearDBが第一候補かと思いますが今回はJawsDBというアドオンを使ってみることにしました。

JawsDBの追加

>heroku addons:add jawsdb

(herokuコマンドを使用するにはheroku-cliが必要なので注意)

JawsDBを選んだ理由はMySQL5.7を使用するためです。
ClearDBでもアドオン追加時にオプションでMySQLのバージョンを指定できるらしいのですが、5.7を指定してもなぜか毎回5.5になってしまった(もしかして無料プランだと5.5以外使えないとか?)ので諦めてJawsDBを入れてみることにしました。

Heroku側のDB環境設定を行い、とりあえずマイグレーションが走ってCRUDが正常に行えることは確認できたので一旦これで進めてみようと思っている次第です。

4
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
2