はじめに
Laravelを開発している際に、他の人にローカル環境に構築したアプリを見てもらいたい時ないでしょうか。
今回は、Laravelのローカル環境で作成しているアプリを、そのまま外部公開する方法をまとめます。
一時的に公開して、他人に確認してもらう場合に便利です。
Laravel Sailに組み込まれているサービスで、直ぐに利用することができます。
Laravel Sailについては、以下の記事で詳しく解説しています。
他にも私のブログで、Laravelについて解説している記事がありますのでご覧ください。
【紹介】個人開発
私の個人開発ですがQuiphaというサービスを開発しました。(Laravel, Vue3など)
良かったら、会員登録して動作を試してみて下さい。
また、Laravel 9 実践入門という書籍を出版しました。
Kindle Unlimitedを契約している方であれば、読み放題で無料でご覧いただくことができます。
VS Codeの用意
VS Codeのインストール方法は、以下の記事にまとめましたのでご覧ください。
設定方法は以下を参考にしてください。
ローカル環境を公開
ローカルで開発中の環境を他人に確認してもらう方法として、同一LAN内であればIPアドレスでアクセスできますが、LAN外の人と共有する場合は、例えば公開サーバ(エックスサーバーなど)に構築する必要があります。
Laravel Sailのshareコマンドを利用すると、一時的に開発環境をそのまま公開(共有)できます。
後述しますが、実際はExposeというトンネリングサービスを利用します。
類似のサービスにngrokがありますが、Exposeはオープンソースです。
PHPで作成されオープンソースですので、不審なコードが入りにくくそういう面でもメリットです。
主な用途
以下のような場合に、便利だと思います。
実際に動くローカル環境をそのまま見てもらいたい場合に便利です。
例えば不具合を他の人に確認してもらいたい場合、ソースコードだけでは分からず環境やデータに依存する場合もあります。
わざわざAWSや公開サーバーにデプロイして確認してもらうのは面倒でしょう。
手軽にローカルの環境を外部公開できるのはメリットだと思います。
ただし当然ですが、確認用のためのツールである点注意しましょう。
本番環境は、エックスサーバーなどの公開サーバーに構築しましょう。
以下の記事を参考にしてください。
公開
まず、Laravel Sailでプロジェクトを作成しましょう。
次に、以下のファイルを修正します。
class TrustProxies extends Middleware
{
/**
* The trusted proxies for this application.
*
* @var array<int, string>|string|null
*/
protected $proxies = '*';
ローカル環境を公開するのは、以下のコマンドを実行するだけです。
$ sail share
実行後、以下のようにURLが表示されます。
Thank you for using expose.
Shared URL: host.docker.internal:80
Dashboard: http://127.0.0.1:4040
Public HTTP: http://xxxx.laravel-sail.site:8080
Public HTTPS: https://xxxx.laravel-sail.site
例えば、スマホからWi-Fiを切って「Public HTTP」にアクセスしてみましょう。
外部からローカルの環境にアクセスできることが確認できます。
試しに認証機能を導入してみましょう。
viteでCSSやJSをビルドしましょう。
$ sail npm run build
shareコマンドで表示されたURLにアクセスしましょう。
http://xxxx.laravel-sail.site:8080/register
登録画面が表示されました。
正常に登録し、ログインできることを確認しましょう。
もちろん、ローカル環境に外部からそのままアクセスしているため、DBのデータもそのままの状態で操作することができます。
管理画面
shareコマンド起動中に、以下のURLにアクセスすると、Exposeの管理画面にアクセスできます。
http://127.0.0.1:4040/
以下のような管理画面が表示されます。
アクセスすると、リクエストやレスポンスの詳細が表示されます。
Expose
shareコマンドは、Exposeを利用しています。
Laravel専用のツールではなく、それ以外でも使用することができます。
ちなみに以下のソースを見ると、ExposeのDockerコンテナを作成しているのが分かります。
if [ "$EXEC" == "yes" ]; then
docker run --init --rm -p "$SAIL_SHARE_DASHBOARD":4040 -t beyondcodegmbh/expose-server:latest share http://host.docker.internal:"$APP_PORT" \
--server-host="$SAIL_SHARE_SERVER_HOST" \
--server-port="$SAIL_SHARE_SERVER_PORT" \
--auth="$SAIL_SHARE_TOKEN" \
--subdomain="$SAIL_SHARE_SUBDOMAIN" \
"$@"
exit
else
sail_is_not_running
fi
仕組み的には、ローカル開発環境→LaravelのサーバにあるExposeサーバー→アクセス端末のような流れです。
ExposeのサーバはLaravelのサイトにインストールされているものを使うようになっており、無料で利用できます。
ちなみにshareコマンドに不具合があり、以前GitHubで報告し対応してもらいました。
Exposeのサーバーを更新してもらい、解決できました。
その他
初学者へ
Laravelを初めて触る方へ向け、手順やアドバイスをまとめました。
外部サーバーへ公開
作成したアプリは公開して使ってもらいましょう!
Laravelアプリケーションを外部公開する方法をまとめました。
脆弱性対策
脆弱性を抱えたアプリケーションの場合、攻撃を受ける可能性があり大変危険です。
作成したアプリケーションは、脆弱性対策も意識しましょう。
GitHubと連携
GitHubと連携する方法を解説しました。
プロジェクトの管理はGitHubを活用しましょう。
GitHub Copilot
GitHub Copilotを導入し、AIにコーディングをサポートしてもらうこともできます。
さいごに
今回は、Laravelのローカル環境で作成しているアプリを、そのまま外部公開する方法をまとめました。
他にも私のブログで、Laravelについて解説している記事がありますのでご覧ください。
コメント