広告

【Laravel】ローカル環境をそのまま外部公開【shareコマンド】

Laravel

当サイトではアフィリエイト広告を利用しています。

広告

はじめに

Laravelを開発している際に、他の人にローカル環境に構築したアプリを見てもらいたい時ないでしょうか。

今回は、Laravelのローカル環境で作成しているアプリを、そのまま外部公開する方法をまとめます。
一時的に公開して、他人に確認してもらう場合に便利です。

Laravel Sailに組み込まれているサービスで、直ぐに利用することができます。
Laravel Sailについては、以下の記事で詳しく解説しています。

Windows
Laravel Sailで開発環境構築【Vite対応】
今回は、Laravel Sailを使って環境の構築を行いました。 SailはDockerですので、開発環境を簡単に用意することもできますし、カスタマイズすることも楽です。
Mac
【M1 Mac】Laravel Sailで開発環境構築【Vite対応】
Laravel Sailを使って環境の構築を行いました。 SailはDockerですので、開発環境を簡単に用意することもできますし、カスタマイズすることも楽です。
使用するバージョンなど
  • Windows 11 or macOS Monterey (M1)
  • Laravel 9
  • Sail

2022/01/14 WindowsとMacを使い、最新バージョンで確認しました。

他にも私のブログで、Laravelについて解説している記事がありますのでご覧ください。

広告

【紹介】個人開発

私の個人開発ですがQuiphaというサービスを開発しました。(Laravel, Vue3など)
良かったら、会員登録して動作を試してみて下さい。

また、Laravel 9 実践入門という書籍を出版しました。
Kindle Unlimitedを契約している方であれば、読み放題で無料でご覧いただくことができます

是非多くの方に読んでいただき、Laravelの開発に少しでもお役に立てたら幸いです。

VS Codeの用意

VS Codeのインストール方法は、以下の記事にまとめましたのでご覧ください。

【VS Code】インストール手順を解説 【Windows/M1 Mac対応】
今回はVS Codeのインストール手順を解説します。WindowsとMacのそれぞれ分けてまとめました。

設定方法は以下を参考にしてください。

【VS Code】オススメの設定・拡張機能・便利機能・ショートカット【Win/Mac対応】
私的に最初に行う設定や、拡張機能、よく使うショートカットや便利な機能をまとめてみました。

ローカル環境を公開

ローカルで開発中の環境を他人に確認してもらう方法として、同一LAN内であればIPアドレスでアクセスできますが、LAN外の人と共有する場合は、例えば公開サーバ(エックスサーバーなど)に構築する必要があります。

Laravel Sailのshareコマンドを利用すると、一時的に開発環境をそのまま公開(共有)できます。

後述しますが、実際はExposeというトンネリングサービスを利用します。

GitHub – exposedev/expose: A beautiful, fully open-source, tunneling service – written in pure PHP
A beautiful, fully open-source, tunneling service – written in pure PHP – exposedev/expose

類似のサービスにngrokがありますが、Exposeはオープンソースです。
PHPで作成されオープンソースですので、不審なコードが入りにくくそういう面でもメリットです。

オープンソースですので自分のサーバーに、Exposeサーバーを入れて使うこともできます。

主な用途

以下のような場合に、便利だと思います。

  • バグが出て、先輩やメンターにローカル環境のアプリを確認して欲しい
  • 仕様について、問題ないかチームメンバーに確認して欲しい
  • 操作性について、お客様に確認して欲しい
  • 勉強会などで、一時的に触ってもらいたい
  • Webhookのテストにも

実際に動くローカル環境をそのまま見てもらいたい場合に便利です。

例えば不具合を他の人に確認してもらいたい場合、ソースコードだけでは分からず環境やデータに依存する場合もあります。
わざわざAWSや公開サーバーにデプロイして確認してもらうのは面倒でしょう。

手軽にローカルの環境を外部公開できるのはメリットだと思います。

ただし当然ですが、確認用のためのツールである点注意しましょう。

本番環境は、エックスサーバーなどの公開サーバーに構築しましょう。
以下の記事を参考にしてください。

【エックスサーバー】Laravelで作成したWebアプリを公開
今回はエックスサーバーでLaravelの環境を構築し、Webアプリを公開する手順をまとめました。

ランダムURLが発行されるとはいえ外部からアクセスできるようになるため、テスト環境で実データや個人情報を含まない方がよいでしょう。

広告

公開

まず、Laravel Sailでプロジェクトを作成しましょう。

次に、以下のファイルを修正します。

app\Http\Middleware\TrustProxies.php
class TrustProxies extends Middleware
{
    /**
     * The trusted proxies for this application.
     *
     * @var array<int, string>|string|null
     */
    protected $proxies = '*';

ローカル環境を公開するのは、以下のコマンドを実行するだけです。

$ sail share

初回起動時は、ExposeのDockerイメージのダウンロードとコンテナ作成のため若干時間がかかります。

実行後、以下のように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」にアクセスしてみましょう。
外部からローカルの環境にアクセスできることが確認できます。

試しに認証機能を導入してみましょう。

【Laravel8/9/10】認証機能の導入 (Breeze)
Laravel8の認証機能(ログイン機構)を導入したいと思います。 シンプルで最小限の認証機能である、Breezeを導入します。 Laravelの導入から詳しく解説しています。

viteでCSSやJSをビルドしましょう。

$ sail npm run build

shareコマンドで表示されたURLにアクセスしましょう。

http://xxxx.laravel-sail.site:8080/register

登録画面が表示されました。
正常に登録し、ログインできることを確認しましょう。

もちろん、ローカル環境に外部からそのままアクセスしているため、DBのデータもそのままの状態で操作することができます。

localhostではなく、公開URLでアクセスできます。
これで、LAN外の人にもローカル環境を直接確認していただくことができます。

管理画面

shareコマンド起動中に、以下のURLにアクセスすると、Exposeの管理画面にアクセスできます。

http://127.0.0.1:4040/

以下のような管理画面が表示されます。

アクセスすると、リクエストやレスポンスの詳細が表示されます。

Expose

shareコマンドは、Exposeを利用しています。
Laravel専用のツールではなく、それ以外でも使用することができます。

ちなみに以下のソースを見ると、ExposeのDockerコンテナを作成しているのが分かります。

vendor\laravel\sail\bin\sail
    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のサーバーを更新してもらい、解決できました。

“sail share” redirects don’t finish loading · Issue #487 · laravel/sail
Sail Version: v1.16.2 Laravel Version: 9.35.1 PHP Version: 8.1.11 Host operating system: Windows11(WSL2) / macOS Descrip…

その他

初学者へ

Laravelを初めて触る方へ向け、手順やアドバイスをまとめました。

外部サーバーへ公開

作成したアプリは公開して使ってもらいましょう!
Laravelアプリケーションを外部公開する方法をまとめました。

脆弱性対策

脆弱性を抱えたアプリケーションの場合、攻撃を受ける可能性があり大変危険です。
作成したアプリケーションは、脆弱性対策も意識しましょう。

GitHubと連携

GitHubと連携する方法を解説しました。
プロジェクトの管理はGitHubを活用しましょう。

GitHub Copilot

GitHub Copilotを導入し、AIにコーディングをサポートしてもらうこともできます。

さいごに

今回は、Laravelのローカル環境で作成しているアプリを、そのまま外部公開する方法をまとめました。

他にも私のブログで、Laravelについて解説している記事がありますのでご覧ください。

LaravelMacOSPHPWindowsプログラミング
広告

個人開発

千草 @chigusaweb

現役のITエンジニア。 気ままにコードを書いたり技術情報を発信しています。 Webアプリ/Windows・Macアプリ/モバイルアプリなど。 (Java, PHP, Javascript, Swift, Python, C#, 他) 個人開発:Clibor, Quipha, TXT-Crypter, 符計算特訓, チグサツール Kindle本: Laravel9 実践入門, 他

クリップボード履歴

Clibor

Windows

Cliborはシンプルで高機能なクリップボード履歴ソフトです。
また普段よく使うワードを定型文として登録し、いつでもクリップボードに保存することができます。高度なテキスト整形・FIFOモード・ホットキーに対応。

クリップボード履歴

Windows版Cliborの利便性を、そのままMacでも。
定型文登録、高度なテキスト整形、FIFOモードなど、便利なクリップボード履歴機能を利用できます。macOS最新のTahoeにも対応。

テキスト暗号化

テキストを暗号化してURLで共有・保存できる無料サービスです。
パスフレーズを知る人だけが復号できます。登録不要、データはサーバーに保存されません。
Notionでも利用できます。

学習

Quipha

Web / iOS

自分だけの問題集や問題を作成し、クイズを行い、学習に活用することができるアプリです。
例えば、学校の授業、語学学習、IT資格やその他の資格など多彩な分野での学習を支援します。
いつでも、どこでも、あなたの学習をサポート。

ツール

日常の「ちょっとした効率化」をサポートするWeb便利ツール集。
テキスト・データ処理から最新のAI連携まで、日々のちょっとした手間でググりがちなユーティリティを1つの場所に集約。

麻雀

麻雀の符計算をひたすら特訓しマスターしましょう。
初心者の方はもちろん、もっと速く計算したい方にも役立ちます。
5万対局以上の実践から問題を収録。

コメント

タイトルとURLをコピーしました