Laravelは、スケーラブルなPHPウェブアプリケーションの構築に便利なオープンソースのフレームワークです。認証、依存関係管理、セッションとキャッシュストレージ、ルーティングなどのモジュールが使いやすく、多くの開発者に愛用されています。

Laravel Forgeは、サーバーのプロビジョニング、ソフトウェアのインストールとメンテナンス、デプロイを自動化することで、Laravelアプリケーションのデプロイと設定を簡素化します。また、ファイアウォールやSSH(Secure Socket Shell)認証などの高度なセキュリティ機能も備えています。

この記事では、Laravel Forgeの仕組み、主な機能とデプロイオプション、Kinstaとの役割の違いについてご説明します。

Laravel Forgeを使用する方法と理由

Laravel Forgeはサーバーマネージャとして機能し、PHP、Nginxサーバー、MySQLデータベース、その他の依存関係を(手動で操作することなく)インストールすることができます。クラウドサーバーの変更が簡単になり、コードを素早くデプロイすることにつながります。

その他の用途は以下の通りです。

  • バックグラウンドプロセス(デーモン)の管理
  • bashスクリプトを使ったアプリケーションの実行
  • セキュアソケットレイヤー(SSL)証明書のインストール
  • cronタスクのスケジューリング

Laravel Forgeの仕組み

Laravel Forgeの効率的な新しいデザインは、シンプルさと使いやすさを優先しています。Digital Ocean、Linode、またはRackspaceなどのホスティングサービスを選択できます。

各サーバーには、最新バージョンのPHP、Nginx、MySQL、PostgreSQL、Redisなどのキャッシュライブラリが用意されています。サーバーを作成したら、アプリケーションをGitHub、GitLab、Bitbucketなどのバージョン管理ツールにリンクすることも可能です。

Laravel Forgeは、ワンクリックでサーバー上で実行できるデプロイスクリプトをアプリケーションに追加します。これにより、バニラPHPやLaravelアプリケーションをデプロイする際の柔軟性と効率が向上します。Laravel Forgeは、Node.jsなどの他の技術スタックのアプリケーションも管理できます。

デプロイに際し、Laravel ForgeはSSHキーを使用してサーバーにログインし、アプリケーションに必要な最新のソフトウェア依存関係をすべて実行してインストールします。これにより、スケーラビリティに対応するためにいつでもホスティングサービスを変更したり、需要に応じてサーバを増やしたり減らしたりすることが容易になります。

Laravel Forgeのその他のデプロイメントオプションには以下があります。

  • デプロイメントスクリプト:サーバーコマンドの実行に使用。このデプロイオプションは、Forge UIを使用して編集できる。
  • 継続的インテグレーション(CI)ツールからのデプロイ:Forge でアプリケーションをデプロイするのに、Forge CLIまたはデプロイメントトリガーのいずれかを選択できる。

Laravel Forgeでデプロイする方法

Forgeを使用してアプリケーションをデプロイするには、Forgeでアカウントを作成し、サーバーホストから1つを選択します。場所とドロップレットプランを選択しサーバーをプロビジョニングしたら、ドメインを作成します。Forgeが最新のPHPバージョンをサーバーにインストールすることで、必要なすべての依存関係とライブラリが自動で作成されます。

)Laravel Forgeで提供されていないクラウドプロバイダに接続するには、APIキーが必要です。

次に、選択したバージョンコントロールの認証を行います。これにより、リポジトリのコードベースを簡単にLaravel Forgeに移行できます。リポジトリに共同で貢献し、変更をサーバーに自動でデプロイすることも可能になります。

リポジトリをリンクした後、「Deploy Now 」をクリックして、Forgeソフトウェアがデプロイスクリプトを実行し、アプリケーションをセットアップできるようにします。

Laravel Forgeを使用してアプリケーションをデプロイする方法の一つに、CIツールがあります。Forge CLIをインストールしたら、CI環境でdeployコマンドを使用できます。Forge CLIの認証にはForge APIトークンが必要です。

以下の例では、GitHubを使用しながら簡単なステップでこれを行う方法をご説明します。プロジェクトディレクトリに、your-project/.github/workflowsディレクトリを作成します。その中に、以下の内容のforge.ymlファイルを用意してください。

name: Deploy

on:
  push:
    branches: [ main ]

jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout code
        uses: actions/checkout@v2
      checkout@v2
      - name: Setup SSH
        uses: webfactory/[email protected]
        with:
          ssh-private-key: ${{ secrets.SSH_PRIVATE_KEY }}
      - name: Setup PHP
        uses: shivammathur/setup-php@v2
        with:
          php-version: 8.0
          tools: composer:v2
          coverage: none
      - name: Require Forge CLI
        run: composer global require laravel/forge-cli
      - name: Deploy Site
        run: |
          forge server:switch your-server-name
          forge deploy your-site-name.com
        env:
          FORGE_API_TOKEN: ${{ secrets.FORGE_API_TOKEN }}

)サンプルコードはこちらで確認できます。その後、変更をメインブランチにプッシュし、GitHub Actionsにデプロイスクリプトを実行させます。

データベースのパスワードやシークレットキーなどの環境変数は、本番環境で保持するのが難しい場合があります。プロジェクトファイルを安全に保つには、データベースとアプリケーションの環境変数をプロジェクトの各環境(.env)ファイルに設定します。

Laravel Forgeのメリット

Laravel Forgeを利用するメリットは以下の通りです。

  • 1つのホスティングプラットフォームに制限されない柔軟性が確保できます。そのため、要件に応じてプロジェクトを好みのホスティングサービスに簡単にデプロイできます。
  • デプロイスクリプトを使用することで、最新のライブラリを手動でインストールすることなく、アプリケーションの要件を自動的に実行できます。
  • 構成設定と権限の一貫性を保ち、デプロイのコストとエラーを削減します。これにより、開発者はデプロイメント スクリプトやプロセスを維持することよりも、アプリケーション開発に集中することができます。
  • ファイアウォール、SSH キー、データ分離による漏えいを防ぐ、アプリケーションのサーバーに対する高度なセキュリティ性能が期待できます。

Laravel ForgeとKinsta

Laravel Forgeがアプリケーションサーバーの管理を担当する一方、Kinstaはアプリケーションデータベースのホスティングを次のレベルに引き上げるホスティング管理プラットフォームです。Forgeソフトウェアで管理しているWordPressサイトがあれば、Kinstaに無料で簡単に移行できます。

Kinstaには、優れた管理タスク最適化ツール、アプリケーションホスティングのDevOpsサポート、WordPressホスティングにおけるCloudflare統合など、多くの特典が盛り込まれています。

わかりにくい料金体系や追加費用なしで、エンタープライズレベルのツールと優れた機能の数々をご提供しています。

まとめ

デプロイは、組織の大小にかかわらず面倒になる可能性のあるステップです。どんなアプリケーションにも、スケーラビリティの問題、冗長な依存関係、プロセスの複雑さなどの課題がつきまとうもの。

Laravel Forgeは、開発者とサーバー間のブローカーとして機能することで、アプリケーションのホスティングを効率的で手間のかからないものにします。様々なデプロイオプションを使用することで、デプロイスクリプトまたはCIツールのいずれかを選択し、サイトとサーバーを管理することができます。

Laravel Forgeと同様に、Kinstaでウェブアプリケーションを簡単にデプロイすることができます。柔軟性、数々の便利な機能、明確な料金プランもご用意。今すぐ無料利用枠をご利用ください。