LaravelをAWS Cloud9にインストールする為の環境作り

LaravelをAWS Cloud9にインストールする為の環境作り

Cloud9がAWSに買収されてからも元々のCloud9が無料で使えてましたのでそこに甘えてたのですが、ついにこれまでのCloud9のサービスが完全に終了してしまい、ようやくAWS Cloud9を使うことにしました。

私自身AWSのアカウントは既に 持ってますのでログインして Cloud9のメニューを選択するだけですぐに使用可能です。しかし、これまで買収前の方のサービスを使っていましたので、データとかそのまま使えません。AWSが移行の仕組みを用意しくてれてたのですが、どうも環境をまったく同じに移行してくれるわけではないようで移行したLaravelが動かなくなりましたので結局最初から環境を設定し直すことになりました。

自分があまり環境作りに詳しくなく、四苦八苦しましたので覚書として、そしてこの記事が同じような状況に置かれた方の少しでも手助けになればと思います。

AWSでワークスペースの立ち上げ

それでは早速、AWS Cloud9にワークスペースを作成して環境を整えていきたいと思います。

AWSにサインインし、メニューよりCloud9を選択したらオレンジの「Create environment」ボタンですぐにワークスペースを作成可能です。しかしその前に左上のリージョンの選択もしておいた方が良いでしょう。

バージニアやオハイオのリージョンが割安なので魅力的だったのですが、ちょっと使ってみて作業が重たいのはやはり距離によるものなのでしょう。。。
自分自身そこまでヘビーに使うわけではないので東京リージョンを選択しました。

ワークスペースを立ち上げて、気に入らなければ簡単に削除できますので色々と試しても良いでしょう。私自身も今回の作業で10個以上は立ち上げたり消したりガチャガチャしてます。

ちなみにガチャガチャいじってた今月の請求は$8.39程度(1000円くらい?)になりそうです。おそらく粛々と作業をする程度であれば数百円程度で済むのだと思います。

ワークスペースに関してはサクッと紹介しておくだけになりますが、「Create environment」を押してワークスペースを作成開始したら次に名前(NAME ) を入力します。Discriptionは省略可能ですので、名前が決定したら次に進んであとは下の設定でとりあえずは大丈夫でしょう。

上記は必要最低限のスペックになります。Platformに関してはそれぞれ得意分野もあるでしょうが、今回は扱うコマンド等の関係でAmazon Linuxで環境を構築していきます。

composerのインストール

Laravelのインストールには必要不可欠のcomporser。まずはコイツをインストールして使えるようにしておきます。

#composerをインストール
curl -sS https://getcomposer.org/installer | php

#移動、リネーム
sudo mv composer.phar /usr/local/bin/composer

#確認
composer

phpのバージョンアップ

今回のLaravel(5.8.x)を入れるにはデフォルトで入っているの5系のPHPのバージョンでは不具合が出てきますので7系にバージョンアップしておきます。

#phpのバージョン確認
php -v

#phpインストール
sudo yum -y install php71 php71-cli php71-common php71-devel php71-mysqlnd php71-pdo php71-xml php71-gd php71-intl php71-mbstring php71-mcrypt php71-opcache php71-pecl-apcu php71-pecl-imagick php71-pecl-memcached php71-pecl-redis php71-pecl-xdebug

#phpバージョン変更
sudo alternatives --set php /usr/bin/php-7.1

mysqlのバージョンアップ

mysqlのバージョンも低いと作業中にエラー出たりしますのでバージョンを上げておきます。(ここでは5.5から5.7へ)

#バージョンの確認
mysql --version

#mysqlストップ
sudo service mysqld stop

#現在のmysqlを削除
sudo yum -y erase mysql-config mysql55-server mysql55-libs mysql55

#あたらしいmysqlをインストール
sudo yum -y install mysql57-server mysql57

#mysqlを起動
sudo service mysqld start

mysqlの文字コードに UTF-8 を利用するための設定

こちらの作業はAWS Cloud9 でLaravelインストール(後半)を参考にしました。

慣れてない方は失敗してもやり直しが効くようにバックアップをとっておくと安心です。
私は最初の頃vimの編集に慣れてなくてなぜかmysqlが動かなくなるっていう状態が頻発しましたのでバックアップをとるようにしました。

#念の為バックアップ
sudo cp /etc/my.cnf /etc/my.cnf.org

#mysqlをストップ
sudo service mysqld stop

#ステータスの確認
sudo service mysqld status

バックアップが取れればとりあえずファイルの編集に失敗してもすぐに戻せますので安心です。ということでバックアップが完了したらvimでmy.cnfファイルを編集します。

#vimでmy.cnfファイルの編集
sudo vi /etc/my.cnf

#↓↓↓の部分をmy.cnfファイル[mysqld]の最終行に追記

character-set-server=utf8

#↓↓↓の部分を上記の文の下に追記

[client]
default-character-set=utf8

#三行文ファイルに追記します。コマンドモードにして保存終了なら「:wq」、保全せずに終了する場合は「:q!」

ファイルの編集が完了したら、mysqlを起動してステータス確認をしておきます。問題なければ、次回サーバーを立ち上げた時に自動でmysqlが起動されるように設定しておきます。

#mysql起動
sudo service mysqld start

#ステータス確認
sudo service mysqld status

#MySQL の自動起動を設定しておく
sudo chkconfig mysqld on

mysqlのバージョンアップとファイル設定が完了し、無事起動できたらLaravelで使用するデータベースを作成します。

#mysqlにログイン
mysql -u root -p

#データベースの作成(xxxxは任意の名前で)
create database xxxx;

#データベースが作成できたか確認
show databases;

#ログアウト
exit;

Laravelのインストール

主にphpやmysqlの設定でしたが、これでようやくLaravelをインストールする準備が整いました。
composerを使ってLaravelをインストールしていきます。バージョン指定をしませんので最新のLaravelがインストールされます。

#composerを使ってLaravelのインストール、プロジェクト「hoge」の作成(最新バージョン)
composer create-project --prefer-dist laravel/laravel hoge

app.phpファイルの設定

作業開始のときでも良いでしょうが、app.phpファイルのタイムゾーンなどを編集しておきます。


#config/app.php、2箇所変更しておきます

'timezone' => 'UTC',
↓
'timezone' => 'Asia/Tokyo',

'locale' => 'en',
↓
'locale' => 'ja',

ここまで完了したらビルトインサーバーを立ち上げてデモ画面を確認。

php artisan serve --port=8080

ビルトインサーバーの立ち上げまで無事完了したら、「Preview」>「Preview Running Application」でデモ画面の確認ができます。

作業中は基本ビルトインサーバーを立ち上げっぱなしにしますので、続けて作業する場合は新しいターミナルタブを追加して作業します。
ビルトインサーバーを停止するときは「control」+「c」で停止します。

.envの設定

この記事ではとりあえずAWS Cloud9に5.8.x系のLaravelをインストールできる環境を作成することが目的ですのでここからはおまけになりますが、mysqlまで設定しましたので、.envファイルのDB設定まで掲載しておきます。xxxxには作成したデータベース名を入れておきましょう。

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=xxxx
DB_USERNAME=root
DB_PASSWORD=

ここまでの設定を行っていれば上記の設定でLaravelとDBを接続可能なはず!

Laravelのバージョンが上がるたびに環境の設定も変える必要がありますのでただ新しいものを使えばいいと言うわけではないわけですね。自身が取り扱うサーバの環境も制限があると思いますのでしっかり考慮する必要があると思います。