🐈

Cloud9でLaravel Sailを使用する際に詰まった話

2022/03/03に公開

因みに、まだ解決しておりません。 2022/3/4に解決しました。

メモ代わりに残しておこうと思った次第です。

エラー内容を保持するのを忘れました。申し訳ない。

覚えている範囲だと php-cli8.1 not found のようなエラーが一覧表示されていました。

事前に必要なもの

  1. AWSアカウントの取得
  2. Cloud9の立ち上げ

前提

事前にmacにて、開発着手をしていた為、sailの初期構築ではなく、githubにアップロードした

ソースコードを利用しております。

なので、Cloud9で始めてsailを利用するといった方には恩恵はないと思います。

行ったこと

  1. gitで使用するsshkey生成と設定
  2. docker-composeの導入
  3. phpのバージョンアップ
  4. composerの導入
  5. peclの導入
  6. xdebugの問題解決
  7. sail立ち上げ

gitで使用するsshkey生成と設定

  1. キージェネレート
$ ssh-keygen -t ed25519 -C "your_email@example.com"
パスフレーズは省略
  1. githubにログイン
  2. アカウントの Settings へ移動
  3. メニューからSSH and GPG keysを選択
  4. 作成した sshkey.pub が付いたファイルの中身をコピー
    • Title に任意の文字列を定義
    • Body にコピーした内容を張り付け
  5. Add Keyボタンを押下
  6. ~/.ssh/config ファイルを作成or編集(chmodで600に)
  7. 下記を追記
Host github.com
  IdentityFile ~/.ssh/作成したsshkey(.pubが付いていないほう)
  User git
  1. ssh -T git@github.com でテスト

docker-composeの導入

※1系と2系でインストール方法が異なり、2022/3/3現在、amazon linux2に2系を入れるのは難しそう。

自分は下記の部分で、パーミッションエラーになりました。

bash
$ curl -SL https://github.com/docker/compose/releases/download/v2.2.3/docker-compose-linux-x86_64 -o $DOCKER_CONFIG/cli-plugins/docker-compose

対象ディレクトリは 777 としたので、パーミッションエラーは起こりえないのですが・・・。

原因が分からず、1系の最新と思われる、1.29.2を導入しました。

タイポだった模様。

mkdir -p $DOCKER_CONFIG/cli-plugins であるべきところ、 mkdir -p $DOCKER_CONFIG/cli-plugin となっていたので、エラーになっていたと思われる。
plugin から plugins へ変更後、問題なくインストールできた。

bash
$ sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
$ sudo chmod +x /usr/local/bin/docker-compose

備忘

始めは、1系でも1.16.0という古いバージョンを入れていた。

それにより、sailで用意される docker-compose.yml の記法に対応できず、エラーが発生。

1.29.2に入れ替える際に行った手順は以下。

  1. 古いdocker-composeを削除
sudo rm -rf docker-compose
  1. 新しいバージョンをインストール
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

参考

composerの導入

  1. 公式 - DownloadCommand-line Installation に記載ある手順を実行
  2. sudo mv composer.phar /usr/local/bin/composer までで完了

phpのバージョンアップ

  1. yum パッケージアップデート
bash
$ sudo yum update -y
  1. 全PHPパッケージ削除
bash
$ sudo yum -y remove php-*
  1. amazon-linux-extrasをアップデート
bash
$ sudo yum update -y amazon-linux-extras
  1. lamp-mariadb10.2-php7.2を使用停止
bash
$ sudo amazon-linux-extras disable lamp-mariadb10.2-php7.2
  1. PHP8.0を有効化
bash
$ sudo amazon-linux-extras enable php8.0
  1. 必要なパッケージを導入
bash
$ sudo yum clean metadata && sudo yum install php-cli php-pdo php-fpm php-mysqlnd

備忘

macと同じPHP8.0.13が入っているにも関わらず、xdebugのバージョンと合わないらしくエラーになる。xdebugは利用する予定はないので、一旦放置。

参考

peclの導入

remiリポジトリを入れないとダメかと思いましたが、下記で行けました。

sudo yum install -y php-pear

これで、amazon linux2で pecl コマンドが使えるようになりました。

xdebugの問題解決

pecl で削除するだけ・・・って思っていましたが、そうでもなかったです。

まず、 xdebug は導入されていませんでした。

そこで、インストールをしたいのですが、下記コマンドを打つとエラーに。

sudo pecl install xdebug

なんでも、 php-devel がないとか。

yum で入れます。

sudo yum install -y php-devel

これで、xdebugを入れます。

sudo pecl install xdebug

これで無事インストールすることができました。

sail立ち上げ

まずは、mac側で作成したアプリではなく、公式提供のサンプルを動かしてみる。

手順は公式に載っているので、省略。

Previewで表示までできたので、ポイントを記載。

  • ポートは8080
    ./vendor/bin/sail up -d でdockerを立ち上げてみたが、「Ooops・・・」が表示される。
    ここで、表示をしたまでスクロールしてみると、「ポート8080を使え」的なことが書いてあった。
    試しにコマンドを変更し、php artisan serve --port=8080で起動するとあっさり表示。
    ./vendor/bin/sail up -d での立ち上げ時にポートを指定すればできそうだったので、 .env ファイルに APP_PORT=8080 を追加して実行すると表示の確認までできた。

本題のmac側で作成したアプリの立ち上げ。

dockerのイメージやらボリューム、コンテナの削除や docker system prune --force はたまた

githubからcloneしたディレクトリの削除を行った結果、 ./vendor/bin/sail up -dで立ち上げ

に成功した。

原因は、多分失敗したイメージが残っていたことだと思われる。

./vendor/bin/sail up -d 実行時のログをみたが、詰まっていた部分のエラーは相変わらず出力

されており(dpgk?のエラー)、ここは原因ではなかったと思われる。

APP_PORT=8080 も追加し、無事Previewできるようになりました。

参考 - 全体網羅

Discussion