Cloud9でLaravel5.8+PHP7.3の環境構築をして、gitHubにssh接続まで!


はじめに

Laravel5.2+php5.6の環境を作ったときは、特に詰まりもせず環境構築ができたが
Laravel5.8+php7.3の環境構築をしたら、いくつか詰まったところがあるので、備忘録として残しておく。

詰まったポイントとしては
- php7.3を入れたのに適用されない
(pho5.6のときはDefaultで入ってたから入れる必要がなかった)
- Laravel5.2ではインストール後すぐに起動できたのに、Laravel5.8ではうまく起動しない

などなど
他にも色々詰まったので、手順を書いていく。

※投稿者はLaravelを始めたばかりで、Laravelでアプリを作成したことすらありません。
記事を書いたことすらありません。初投稿です。
助言がありましたら、コメントをお願いいたします。

参考記事

AWS Cloud9 で PHP7.1、7.2 へ変更する
No application encryption key has been specified.となったときの対応方法
GitHubでssh接続する手順~公開鍵・秘密鍵の生成から~

参考にさせていただきました。ありがとうございます。

目次

前提条件
Cloud9のワークスペースを作成
PHPとLaravelのインストール
gitHubにssh接続

前提条件

以下の条件を満たしておいてください。
・AWSのアカウントが存在すること

Cloud9のワークスペースを作成

特段詰まるところではないので、簡潔に記載する

  1. AWSにログイン
  2. 真ん中の検索ボックスに「Cloud9」と入力すると下に「Cloud9」が出てくるので押下
  3. 「Create environment」を押下
  4. 「Name」にアプリ名を記入。必須   「Description」はアプリの説明。任意
  5. Configure settingsの項目を入力していく。全てDefaultだが以下の通り。   「Environment」→「Create a new instance for environment (EC2)」   「Instance type」→「t2.micro (1 GiB RAM + 1 vCPU)」   「Platform」→「Amazon Linux」   全て選択したら「Next Step」を押下
  6. 内容を確認し、「Create environment」を押下 インジケータ(くるくるするやつ)が表示されます。 3分ほど待てば、まっさらなCloud9の環境が構築されます。

PHPとLaravelのインストール

phpのインストール&適用

yumをアップデートする

$ sudo yum -y update

PHP 7.3をインストール

$ sudo yum -y install php73 php73-mbstring php73-pdo

この段階でphpのバージョンを確かめると

$ php --version
PHP 5.6.40 (cli) (built: Mar  8 2019 18:17:39) 

このように5.6のままなので、以下2つのコマンドを打つ

php5.6のリンクの削除

sudo unlink /usr/bin/php

php7.3のリンクの張り直し

sudo ln -s /etc/alternatives/php7 /usr/bin/php

そうすると

php --version
PHP 7.3.6 (cli) (built: Jun 12 2019 20:51:34) ( NTS ) 

php7.3になってたら完了
※参考記事だと7.2だったけど、なんとなく新しいの入れたかったから7.3にしてみた

Laravelのインストール

composerのインストール

curl -sS https://getcomposer.org/installer | php

composerのリネーム

sudo mv composer.phar /usr/local/bin/composer

composerが入ったか、リネームできたかの確認

composer

コマンド打った次の行あたりに「COMPOSER!」と表示されたらOK

Laravelインストーラのダウンロード

composer global require laravel/installer

Laravelインストール

composer create-project laravel/laravel --prefer-dist アプリ名 5.8

※アプリ名には作りたいアプリ名を入れてね

インストールすると

Script @php artisan package:discover --ansi handling the post-autoload-dump event returned with error code 1

というエラーが出る。
artisan関連のエラーらしいが、普通に使えているため一旦スルー。

とりあえずLaravelのインストール完了!

Laravel5.2ではインストール後に

cd アプリ名
php artisan start --port8080

と打てばLaravelが立ち上がるが、Laravel5.8では。。。

ec2-user:~/environment $ cd test #アプリ名をテストにしたよ
ec2-user:~/environment/test $ php artisan serve --port=8080

In database.php line 58:                                                
  Undefined class constant 'MYSQL_ATTR_SSL_CA'                                           

あれ。。よくわからないエラーが出た。
色々調べたらMySqlの証明書を設定する?箇所でエラーになっているらしい。
設定する証明書がある人は設定しよう。(設定の仕方は調べてください)

特に設定が不要な方は以下のファイルを開く
アプリ名/config/database.php
※testというアプリなら「test/config/database.php」を開く
 databaseフォルダも存在するため、間違えないように注意!

以下の行をコメントアウトする
57行~59行

// 'options' => array_filter([
//     PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'),
// ]),

保存したあと、以下のコマンドを打つ

$ php artisan serve --port=8080
Laravel development server started: <http://127.0.0.1:8080>

緑色の字で結果が返ってくる。「serverが立ち上がったよ!」とのことなので成功!

Laravelが立ち上がっているとWeb画面に「Laravel」と大きく表示されるので見に行く。

上の方にある「preview」→「Preview Running Application」を押下

しかし。。。

RuntimeException
No application encryption key has been specified.
.
.
.
/home/ec2-user/environment/test/vendor/laravel/framework/src/Illuminate/Encryption/EncryptionServiceProvider.php

なにこれよくわかんない
とりあえずエラー内容をコピーして、サーバを閉じる
※コマンドプロンプトの画面で、「Ctrl + C」を入力すると閉じる

色々調べたら「encryption keyが未設定だから」とのこと。(よくわかんない)
以下のコマンドで「encryption key」の設定する

$php artisan key:generate

もう一度Laravelを起動する

$php artisan serve --port=8080

上の方にある「preview」→「Preview Running Application」を押下

「Laravel」と表示されていることを確認

gitHubにssh接続

Cloud9にはDefaultでGitが入っている。念の為確認

$ git --version
git version 2.14.5

cloud9にgitHubのユーザ名を登録する

$ git config  user.name "gitHubのメールアドレス"

これをしないとgitHubの草が生えないみたい。

sshキーの作成

以下のコマンドを打って、秘密鍵の作成、公開鍵の作成する

$ cd ~/.ssh
$ ssh-keygen -t rsa

Enter file in which to save the key (/Users/(username)/.ssh/id_rsa): #空のままEnter
Enter passphrase (empty for no passphrase): #空のままEnter
Enter same passphrase again: #空のままEnter

コピーする

cat id_rsa.pub

表示された内容をコピーする

sshキーの登録

※gitHubの作業となります。
1. gitHubにログインする
2. 右上の自分のアイコンを押下→「settings」を押下
3. 「SSH and GPG keys」を押下
4. 「New SSH key」を押下
5. Title・・・わかりやすい名前をつける(cloud9用だからcloud9とかで良い気がする
  key・・・sshキーの作成でコピーしたのを貼り付ける
6. 「Add SSH key」を押下
7.
これでSSH接続が可能となりました!

最後に

環境構築でつまずくことはよくあるが、cloud9+Laravelは比較的楽な方だった気がする。(ちゃんとできてるかは知らない)
日本にphpユーザが多いからか、日本語の情報がたくさんあって助かった(実際に多いか知らない)
いくつかよくわからないところがあったため、ちゃんと調べて理解を深める必要はありそう。
環境構築が完了したので、Webアプリを作れたらいいなぁと思う。