Cloud9でLaravel Sailを使用する際に詰まった話
因みに、まだ解決しておりません。 2022/3/4に解決しました。
メモ代わりに残しておこうと思った次第です。
エラー内容を保持するのを忘れました。申し訳ない。
覚えている範囲だと php-cli8.1 not found
のようなエラーが一覧表示されていました。
事前に必要なもの
- AWSアカウントの取得
- Cloud9の立ち上げ
前提
事前にmacにて、開発着手をしていた為、sailの初期構築ではなく、githubにアップロードした
ソースコードを利用しております。
なので、Cloud9で始めてsailを利用するといった方には恩恵はないと思います。
行ったこと
- gitで使用するsshkey生成と設定
- docker-composeの導入
- phpのバージョンアップ
- composerの導入
- peclの導入
- xdebugの問題解決
- sail立ち上げ
gitで使用するsshkey生成と設定
- キージェネレート
$ ssh-keygen -t ed25519 -C "your_email@example.com"
パスフレーズは省略
- githubにログイン
- アカウントの
Settings
へ移動 - メニューからSSH and GPG keysを選択
- 作成した
sshkey
の.pub
が付いたファイルの中身をコピー-
Title
に任意の文字列を定義 -
Body
にコピーした内容を張り付け
-
- Add Keyボタンを押下
-
~/.ssh/config
ファイルを作成or編集(chmodで600に) - 下記を追記
Host github.com
IdentityFile ~/.ssh/作成したsshkey(.pubが付いていないほう)
User git
-
ssh -T git@github.com
でテスト
docker-composeの導入
※1系と2系でインストール方法が異なり、2022/3/3現在、amazon linux2に2系を入れるのは難しそう。
自分は下記の部分で、パーミッションエラーになりました。
$ 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
へ変更後、問題なくインストールできた。
$ 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に入れ替える際に行った手順は以下。
- 古いdocker-composeを削除
sudo rm -rf docker-compose
- 新しいバージョンをインストール
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の導入
-
公式 - Downloadの
Command-line Installation
に記載ある手順を実行 -
sudo mv composer.phar /usr/local/bin/composer
までで完了
phpのバージョンアップ
-
yum
パッケージアップデート
$ sudo yum update -y
- 全PHPパッケージ削除
$ sudo yum -y remove php-*
- amazon-linux-extrasをアップデート
$ sudo yum update -y amazon-linux-extras
- lamp-mariadb10.2-php7.2を使用停止
$ sudo amazon-linux-extras disable lamp-mariadb10.2-php7.2
- PHP8.0を有効化
$ sudo amazon-linux-extras enable php8.0
- 必要なパッケージを導入
$ 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