免费无服务器 Laravel 部署
如果你有一个小型 Laravel 应用程序,并且不想费劲地设置自己的 VPS 或类似Laravel Vapor 的服务,那么你可能需要通读一下这篇文章。
因此,在本次教程中,我们将了解如何在名为Vercel 的无服务器环境中设置和部署 Laravel 应用程序,包括自动部署和预览,而无需任何成本。
这时你可能觉得这听起来好得难以置信。嗯……你说得对,当然,这里面也有一些陷阱。
最重要的是,你必须找到其他方法来托管和管理你的数据库以及应用程序所需的其他服务。
这种设置并不能取代 AWS 和 Laravel Vapor 上更强大的部署策略。
现在我们已经解决了这个问题,让我们开始吧!
创建 Laravel 应用程序
如果您已经有一个项目,则可以跳过此步骤。为了便于理解,我将使用 Composer 创建一个新项目。
我们将把我们的应用程序命名为laravel-vercel
打开终端并运行:composer create-project laravel/laravel laravel-vercel
初始化 Git 仓库并推送到 GitHub
应用程序创建完成后,我们需要进入根目录,设置 Git 并将代码推送到 Github。
运行以下命令来设置 Git 仓库:cd laravel-vercelgit initgit add .git commit -m "init"
现在让我们在Github上创建一个新的仓库,并将我们的应用程序推送上去。
前往此处的Github 仓库创建页面,创建一个名为laravel-vercel的仓库。
从你新建的Github仓库页面复制并运行图中高亮显示的命令。
创建 Vercel 配置文件
所以,为了实现这个神奇的效果,我们需要在应用程序中创建 2 个 Vercel 配置文件。
app/index.php
在应用程序根目录下index.php的一个名为 `.php` 的文件夹中创建一个名为 `.php` 的 PHP 文件, 然后将以下内容添加到该文件中。api
<?php
require __DIR__ . '/../public/index.php';
Vercel 上无服务器函数的默认入口点是目录app。上面的脚本将确保请求被转发到我们的 Laravel 应用入口点public/index.php。
vercel.json
在根目录下再次创建一个名为 `.vcel.config` 的新文件vercel.json。这个文件将负责设置我们的 Vercel 配置。真正的魔法就在这里发生。
请将以下内容添加到您的文件中,我们将详细逐一查看。
{
"version": 2,
"functions": {
"api/index.php": { "runtime": "vercel-php@0.3.1" }
},
"routes": [
{
"src": "/(.*)",
"dest": "/api/index.php"
}
],
"env": {
"APP_NAME": "Laravel Vercel",
"APP_ENV": "production",
"APP_DEBUG": "false",
"APP_URL": "https://laravel-vercel.vercel.app",
"APP_CONFIG_CACHE": "/tmp/config.php",
"APP_EVENTS_CACHE": "/tmp/events.php",
"APP_PACKAGES_CACHE": "/tmp/packages.php",
"APP_ROUTES_CACHE": "/tmp/routes.php",
"APP_SERVICES_CACHE": "/tmp/services.php",
"VIEW_COMPILED_PATH": "/tmp",
"CACHE_DRIVER": "array",
"LOG_CHANNEL": "stderr",
"SESSION_DRIVER": "cookie",
"VIEW_COMPILED_PATH": "/tmp/views",
"SSR_TEMP_PATH": "/tmp/ssr",
"NODE_PATH": "node"
}
}
版本
"version": 2,
//This make sure to run our code on Vercel version 2
函数
"functions": {
"api/index.php": { "runtime": "vercel-php@0.3.1" }
},
该api/index.php密钥将定义我们的应用程序入口点,该入口点将被转发到 Laravel 应用程序入口点。public/index.php
"runtime": "vercel-php@0.3.1"我们将定义我们的 PHP 运行时,它本质上是一个模块,可以将我们的代码转换为Vercel 的无服务器函数。
在这个设置中,我们使用的是名为vercel-php的 PHP 社区运行时。
路线
"routes": [
{
"src": "/(.*)",
"dest": "/api/index.php"
}
],
路由将告诉 Vercel 将所有 URI 转发到我们的应用程序无服务器函数。
环境
"env": {
"APP_NAME": "Laravel Vercel",
"APP_ENV": "production",
"APP_DEBUG": "false",
"APP_URL": "https://laravel-vercel.vercel.app",
"APP_CONFIG_CACHE": "/tmp/config.php",
"APP_EVENTS_CACHE": "/tmp/events.php",
"APP_PACKAGES_CACHE": "/tmp/packages.php",
"APP_ROUTES_CACHE": "/tmp/routes.php",
"APP_SERVICES_CACHE": "/tmp/services.php",
"VIEW_COMPILED_PATH": "/tmp",
"CACHE_DRIVER": "array",
"LOG_CHANNEL": "stderr",
"SESSION_DRIVER": "cookie",
"VIEW_COMPILED_PATH": "/tmp/views",
"SSR_TEMP_PATH": "/tmp/ssr",
"NODE_PATH": "node"
}
正如您可能已经猜到的那样,这将是我们的应用程序环境变量部分。您可以传递您在 Laravel 应用程序中设置的环境变量.env。
注意!请勿传递敏感的环境变量APP_KEY和数据库配置值,因为 Git 会跟踪这些值,并且它们会显示在您的代码仓库中。稍后我们将介绍如何以更安全的方式传递这些值。
有些不常见的变量是 Laravel 的默认值,这些值通常不会出现在我们的env文件中。由于无服务器应用程序是无状态的,而运行时唯一可以可靠修改的文件夹是 Vercel 的 tmp 文件夹,因此我们必须在这里传递这些变量。
提交并推送更改到 GitHub
让我们把新创建的文件推送到我们的 GitHub 仓库。
git add .git commit -m "add Vercel configs"git push orgin Main
将我们的存储库链接到 Vercel
使用您的Github帐户在Vercel上创建免费帐户。
完成后,在您的 Vercel 控制面板上,您会看到一个名为“新建项目”的按钮,类似于下图所示。
点击后,你会看到创建页面和你的 Github 存储库列表,页面与下面的页面非常相似。
点击导入你的laravel-vercel存储库(或者你给它起的任何名字)。
如果您没有看到列出的存储库,请点击Adjust GitHub App Permissions链接并在那里设置权限。
您可以点击skip“创建团队”部分,然后进入“配置项目”部分。
在“环境变量”部分,我们将添加 Laravel 应用的敏感环境变量。
这些变量包括:APP_KEYDB_CONNECTIONDB_HOSTDB_PORTDB_DATABASEDB_USERNAMEDB_PASSWORD
最后,点击进入Deploy,然后坐下来观看奇迹发生。
您的应用程序将在 Vercel 上构建和部署。您将看到以下成功页面,其中包含指向您应用程序的 Vercel 域名。
现在,如果您有新的更改需要部署,您只需将更改提交并推送到您的 Github 存储库主分支,它就会自动构建并部署到您的服务器,是不是很酷!
如果您想更改应用程序的域名,可以前往 Vercel 的设置选项卡,那里有一个专门的页面用于设置和管理您的域名。
拜拜✌️
文章来源:https://dev.to/kenean50/free-serverless-laravel-deployment-1e9n






