これは何?
Laravelはおろか、PHPすら触ったことが無いし、何ならAWS Cloud9も初めて使う著者が、試行錯誤した時のメモです。
環境
- Windows 10 Home
- AWS Cloud9
- t2.micro
- Cloud9Default-2019-04-26T15-18 (ami-01e86b109a9e95f06)
- PHP 7.3.4
- Laravel
- Installer 2.0.1
- Framework 5.8.14
やったこと
とりあえずPHP環境を整える
AWS公式にうってつけな感じのガイドがあったので、試します。
AWS Cloud9 の PHP サンプル
ちなみにCloud9の見た目はこんな感じ。大したことはしてないが、見た目は非常にCOOLですね。
PHPのバージョンがデフォルトだと5.6系で古いので、7系まで上げておきましょう。
以下のコマンドで、php7.3をデフォルトにします。
(php7系は自分で入れる必要があるかも。色々いじったので元から入っていたのか分からなくなった…。)
sudo alternatives --set php /usr/bin/php-7.3
ステップ4でComposerのインストールを行うので、そこまで進めます。
$HOME/environment
下ではなく、$HOME
直下でインストールしました。
Laravelを入れる
公式を参考に、Composerを使ってLaravelをインストールします。
※Laravelで検索すると出てくる日本語版(?)はバージョンが古い気がするので注意した方が良いかも。
以下のコマンドをenvirionment
下で実行(そうしないとIDEから見えない)して、blogというプロジェクトを作ります。
laravel new blog
サーバを立ててみる
以下でサーバが上がるはずなんですが、色々ハマりました。
php blog/artisan serve --port=8080
以下解決までにやったこと色々です。
-
$HOME/vendor
ディレクトリを、まるっと$HOME/environment/blog
下にコピーする。- bootstrapと同じ階層に必要
-
mbstring
がmissingと言われるので、yumで入れる。-
php -m
で見てみると、確かにmbstringが無い。 - 以下のコマンドを実行
-
sudo yum list | grep mbstring
sudo yum install php73-mbstring.x86_64
-
php.iniの設定を書き換え、mbstringを使うようにする。(不要かも?)
- こちらを参考に。
- php.iniの場所は、
php -r "echo phpinfo();" | grep "php.ini"
で確認可能ですが、たぶん/etc/php.ini
にある。
-
起動時のportは8080~8082にする必要がある。
-
encryption keyが特定されていないエラーで、ターミナルからcurlすると、500 Server Errorになる。
- 以下のように怒られる。
- logは
storage/logs
配下に作られる。
[2019-04-30 09:21:07] production.ERROR: No application encryption key has been specified. {"exception":"[object] (RuntimeException(code: 0): No application encryption key has been specified. at /home/ec2-user/environment/blog/vendor/laravel/framework/src/Illuminate/Encryption/EncryptionServiceProvider.php:44)
こちらに書かれている通り、以下のコマンドを実行。
cp .env.example .env
php artisan key:generate
php artisan config:clear
※ちゃんと.env.example
はありました。隠しファイルなのでIDEからは見えませんでしたが。
これで、Preview
→Preview Running Application
として、どうにかデモ画面が起動。
(コンソールのURLからOpen in Preview
とした場合はうまく開かず。)
なお、IDEから開く限りでは、AWS Cloud9を動かしているEC2インスタンスのセキュリティグループはいじらなくて問題なかったです。
雑なまとめ
環境構築で疲れたので今日はここまでです。
(まとめですらない)