fly-apps / fly-laravel
一个用于在Fly.io上启动和部署Laravel应用的命令行工具
Requires
- php: ^8.1
- guzzlehttp/guzzle: ^7.5
- illuminate/http: ^10.0
- illuminate/log: ^10.0
- illuminate/view: ^10.0
- nunomaduro/laravel-console-menu: ^3.4
- nunomaduro/termwind: ^1.15.1
- yosymfony/toml: ^1.0
Requires (Dev)
- laravel-zero/framework: ^10.0.2
- laravel/pint: ^1.8
- mockery/mockery: ^1.5.1
- pestphp/pest: ^2.5
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应用。每种类型的应用都有两个命令:launch
和 deploy
。
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_DRIVER
和SESSION_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许可证授权。