fly-apps/fly-laravel

一个用于在Fly.io上启动和部署Laravel应用的命令行工具

安装: 983

依赖者: 0

建议者: 0

安全: 0

星标: 40

关注者: 7

分支: 3

开放问题: 3

类型:项目

v0.1.7 2023-08-22 07:09 UTC

This package is auto-updated.

Last update: 2024-09-08 07:43:25 UTC


README

Fly-Laravel是由Fly.io创建的,是一种快速将Laravel应用部署到Fly.io的方法。它使用Laravel Zero构建。

免责声明

Fly-Laravel假设您已安装flyctl,并且已将其连接到您的Fly.io账户。如果您需要帮助,请参阅https://fly.io/docs/speedrun/

以下命令将帮助您在Fly.io上设置应用。 请注意,运行这些应用可能需要付费!

有关Fly.io的免费配额和定价的更多信息,请在此处

安装

运行 composer require fly-apps/fly-laravel 以安装最新版本。

默认情况下,命令是通过 vendor/bin/fly-laravel 脚本来调用的。为了避免每次都输入所有这些,您可以配置shell别名

alias fly-laravel='vendor/bin/fly-laravel'

要确保始终可用,您可以将以下内容添加到您家目录中的shell配置文件中,例如 ~/.zshrc~/.bashrc,然后重启shell。

用法

使用此包,您可以在Fly.io上启动Laravel、MySQL和/或Redis应用。每种类型的应用都有两个命令:launchdeploy

  • Launch 将在您选择的组织中在Fly.io上创建一个新的应用。
  • Deploy 将(重新)部署应用。这将使用 launch 创建的应用更新。

先决条件

  • 您在Fly.io上有账户
  • 您在Fly.io上创建了一个组织
  • 您已安装flyctl代理。

Laravel

启动

运行 fly-laravel launch 以创建一个新的Laravel应用。您可以选择应用名称、要部署的组织以及您想要设置的额外服务。

  • 应用名称:Fly.io上的应用的名称。出于DNS原因,它只能包含字母数字字符和连字符。
  • 主要区域:您要部署应用的主要区域。您应该选择离您的用户最近区域。您始终可以添加更多区域,如扩展文档中指定。
  • 组织:在Fly.io上,应用可以分组到组织中。组织是划分应用、与团队成员共享访问权限和管理计费的好方法。如果只有一个组织可用,我们将自动选择该组织。
  • 服务:您可以选择是否要在应用中运行 cron队列工作者。这将为每个额外服务创建一个 进程组,以独立扩展。

为了设置应用,将执行一系列步骤以设置基本的Laravel应用

  • 检测到本地安装的Node和PHP版本
  • 生成fly.toml应用配置文件。如果您稍后想更改您的应用,请在这里进行。
  • 一些文件夹和文件被复制过来,最重要的是Dockerfile。
  • 系统随机生成的 APP_KEY 将被设置为您应用的 秘密

关于在 fly.toml 文件中配置的 SESSION_DRIVER 的说明

  • 默认情况下,您的 Laravel 应用将被配置为使用 基于 Cookie 的会话存储。这允许会话在您的 web 应用的多个实例之间工作,而无需使用像 Redis 这样的外部会话服务来使会话数据对所有实例可用。当然,基于 Cookie 的会话存储在可以存储的会话数据量上有限制,因此您可能希望考虑将其替换为允许存储更多数据的选项。

设置完成后,您的应用即可准备部署!在项目根目录下,将添加一个 .fly 文件夹,其中包含一个 Dockerfile 和一个 fly.toml 文件。

当启动数据库时,您需要重新部署,因此请先启动数据库再部署 Laravel 应用。

部署

运行 fly-laravel deploy 来部署您的 Laravel 应用。这将更新正在运行的应用(如果有)以包含您最新的更改。添加 --open 标志可以在部署后打开应用。

MySQL

启动

运行 fly-laravel launch:mysql 来创建一个新的 MySQL 应用程序。您可以选择应用名称、部署的组织、MySQL 用户名和卷名称。如果检测到 Laravel 应用,您可以选择使用相同的组织和主要区域。

  • 应用名称:Fly.io 上的应用将如何被称呼。这只能包含字母数字字符和连字符,出于 DNS 的原因。默认情况下,将建议 [laravel app name]-db 作为应用名称。
  • 组织:在Fly.io上,应用可以分组到组织中。组织是划分应用、与团队成员共享访问权限和管理计费的好方法。如果只有一个组织可用,我们将自动选择该组织。
  • 主要区域:您要部署应用的主要区域。您应该选择离您的用户最近区域。您始终可以添加更多区域,如扩展文档中指定。
  • 卷名称:为了数据持久性,数据库应用需要卷。如果存在具有该名称的卷,我们将使用它。如果没有找到具有该名称的卷,则在部署时将创建一个 1GB 的卷。有关卷的更多信息,请参阅卷文档

在启动 MySQL 数据库时的注意事项

  • 在启动过程中,Laravel 应用的 fly.toml 配置中将更新一些环境变量。重新部署 Laravel 应用是必要的,以反映这些更改。
  • fly.toml 中的 DB_CONNECTION 环境变量将被设置为 'mysql'。
  • 在部署时,将配置一个小型机器,具有 1x 共享 CPU 和 256Mb 的内存。考虑提高数据库的规模以获得更好的性能。
  • 默认情况下,innodb buffer pool size 将设置为 64MB。考虑根据您的性能要求进行优化。您可以在 .fly/mysql/fly.toml 中的 [processes] 部分找到它。
  • 为了正确地进行网络操作,Laravel 应用和 MySQL 应用应在同一组织内。

部署

运行 fly-laravel deploy:mysql 来部署 MySQL 应用。部署后,我们将快速检查机器资源,并在内存小于 1GB 时显示警告。

Redis

启动

运行 fly-laravel launch:redis 来启动 Redis 应用程序。您可以选择应用名称、部署的组织和卷名称。如果检测到 Laravel 应用,您可以选择使用相同的组织和主要区域。

  • 应用名称:Fly.io 上的应用将如何被称呼。这只能包含字母数字字符和连字符,出于 DNS 的原因。默认情况下,将建议 [laravel app name]-db 作为应用名称。
  • 组织:在Fly.io上,应用可以分组到组织中。组织是划分应用、与团队成员共享访问权限和管理计费的好方法。如果只有一个组织可用,我们将自动选择该组织。
  • 主要区域:您要部署应用的主要区域。您应该选择离您的用户最近区域。您始终可以添加更多区域,如扩展文档中指定。
  • 卷名称:为了数据持久性,数据库应用需要卷。如果存在具有该名称的卷,我们将使用它。如果没有找到具有该名称的卷,则在部署时将创建一个 1GB 的卷。有关卷的更多信息,请参阅卷文档

在启动 Redis 应用时的注意事项

  • 在启动过程中,一些 Laravel 环境变量将在其 fly.toml 配置中更新。重新部署 Laravel 应用是必要的,以反映这些更改。
  • fly.toml 中的 CACHE_DRIVERSESSION_DRIVER 环境变量将被设置为 'redis'。
  • 在部署时,将配置一个小型机器,具有 1x 共享 CPU 和 256Mb 的内存。考虑提高数据库的规模以获得更好的性能。
  • 为了正确地进行网络操作,Laravel 应用和 Redis 应用应在同一组织内。

部署

运行fly-laravel deploy:redis来部署Redis应用。部署完成后,我们将快速检查机器资源,如果内存小于1GB,将显示警告。

挂载

运行fly-laravel mount:volume将卷挂载到Laravel Fly应用的存储目录并持久保存这里!该命令将在适当的区域创建必要的卷数,与Fly应用中每个区域的机器数量相匹配。然后它将更新fly.toml文件的挂载部分,使用卷名,最后创建必要的脚本,以便完成存储文件夹的挂载设置

设置完成后,您的应用将准备好部署,挂载已创建的卷!这就是为什么命令会有最后的提示,询问是否部署更改。您可以确认——这将部署您的更改,或者拒绝——当您手动部署时,您的应用将准备好挂载卷。

进一步阅读

有关fly.io的更多信息,请查看Fly.io 文档

有关更多与Laravel相关的内容,请查看Laravel-Bytes 博客

许可证

Fly-Laravel是一个开源软件,根据MIT许可证授权。