そろそろaws初めてみよか#5～Cloud9環境での実行～

# はじめに

awsと戯れる会も第5回目(^^♪
Cloud9環境でちゃんと開発できるようCloud9のインスタンスにもlaravel環境をセットアップしましたが
肝心のlaravel実行まではできませんでした。
今回はこの肝心の部分の記事になります♪

以前の記事はこちらから
- [そろそろaws初めてみよか～まずは触れてみた～](https://qiita.com/imp555sti/items/08bef8d74985c2ea1f87)
- [そろそろaws初めてみよか#2～CodeStarによるコード修正からDeployまで～](https://qiita.com/imp555sti/items/9d04bfdbc3b89c1115f9)
- [そろそろaws初めてみよか#3～RDSとの接続～](https://qiita.com/imp555sti/items/bb820cd162f21bc06462)
- [そろそろaws初めてみよか#4～Cloud9環境の整備～](https://qiita.com/imp555sti/items/b293573835751123f0cd)


# Cloud9のビルトインサーバでの起動

Run>Run with>PHP (build-in web server)を選択します。

![01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/324255/4fa8e07b-2aae-f44a-38cc-a4a0578cdc54.png)

下ペインに現れる[New]タブの[CWD]をクリックし、ドキュメントルート`php-laravel/public`を選択します。
![02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/324255/250301c4-2459-fe58-cdf7-16e4e7ee7f6c.png)

上のメニューからPreviewをクリックしブラウザを表示させます。
Oopsとか表示されますが、ポート番号があっていないためなので気にしない気にしない。
![03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/324255/057430a9-53fc-8f9f-6d09-4b74ac866266.png)

PHP (build-in web server)は下ペインのメッセージにある通り
`Listening on http://0.0.0.0:8080`
となっていますので、プレビューのURL欄をクリックし「:8080」を追加します。

![04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/324255/f1fb34b1-ac0c-72e1-edff-43e1efc5cc6e.png)
![04.5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/324255/759d7e62-47a4-a1fd-b5cd-6b55e6d501e4.png)

それっぽい画面が出てきましたが…スクリプトも画像も読み込まれていません。
Chromeの別タブで同URLを表示させ、ソース表示すると判りますが
ページのURLはhttpsなのに対し、リソースのパスがすべてhttpとなっていることが原因でした。

![04.6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/324255/784caea8-39c1-a358-d4b4-48739aba2559.png)
![04.7.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/324255/3b03e93a-58ff-2c82-8ce9-cdc833ad6c59.png)



# laravelでassetとかのパスをhttpsで出力する

assetとかで指定したアドレスがことごとくhttpになっているのでhttpsになるようlaravel側で対応します。

具体的には此方の記事を参考にさせて頂きました。
[Laravel5.3でSSL通信を強制する](https://qiita.com/sawadashota/items/2f1c7b1e2905519c4e6a)

修正したのはAppServiceProviderのboot()の定義となります。
なお本番環境にデプロイした際はhttpだったのでここではapp.envがlocal,stagingの場合のみhttpsにするとしています。
本来の商用環境ではELBも入りhttpsになると思うのでその際は修正が必要となります。


```php:app/Providers/AppServiceProvider.php
<?php

namespace App\Providers;

use Illuminate\Support\ServiceProvider;

class AppServiceProvider extends ServiceProvider
{
    /**
     * Bootstrap any application services.
     *
     * @return void
     */
    public function boot()
    {
        //
    }

    /**
     * Register any application services.
     *
     * @return void
     */
    public function register()
    {
        //
    }
}
```

修正後

```php:app/Providers/AppServiceProvider.php
<?php

namespace App\Providers;

use Illuminate\Support\ServiceProvider;

class AppServiceProvider extends ServiceProvider
{
    /**
     * Bootstrap any application services.
     *
     * @return void
     */
    public function boot()
    {
        //

        if (config('app.env') === 'local' || config('app.env') === 'staging') {
            \URL::forceSchema('https');
        }
    }

    /**
     * Register any application services.
     *
     * @return void
     */
    public function register()
    {
        //
    }
}
```

これで確認するとこんな感じで正常に表示されます。
どうやらIDE内のブラウザではsvgが動かないっぽいので、動確するなら別タブで開いた方がよさそうですね！

![05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/324255/4169b1a5-87e0-abb5-b617-bf486aa63185.png)

![06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/324255/81ff61ba-6ae2-c4dd-8817-9a4533faba6a.png)

![07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/324255/e4313a7d-243b-e1c5-f858-c5a5f650889e.png)


これで本当の意味で開発環境を作ることができました！