除了供应服务器和创建网站之外,Laravel Forge 还可以做更多的事情,包括将代码部署到您的网站。
当您为您的网站安装一个存储库时,Forge 会自动创建一个部署脚本,该脚本会在您每次部署网站时执行。部署脚本是 Bash 代码,它告诉 Forge 如何部署您的网站、安装 Composer 依赖项、构建前端资产并重新加载 PHP-FPM 进程。
使用环境变量的最大好处之一是,您可以在任何时候轻松更改网站的 PHP 版本,而无需更改您的部署脚本。例如,通过使用 $FORGE_PHP
环境变量而不是直接调用 php
二进制文件,Forge 将自动为您使用正确的 PHP 版本。
Laravel 网站的默认部署脚本看起来像这样
cd $FORGE_SITE_PATH
git pull origin $FORGE_SITE_BRANCH
$FORGE_COMPOSER install --no-interaction --prefer-dist --optimize-autoloader
( flock -w 10 9 || exit 1
echo 'Restarting FPM...'; sudo -S service $FORGE_PHP_FPM reload ) 9>/tmp/fpmlock
if [ -f artisan ]; then
$FORGE_PHP artisan migrate --force
fi
正如您所看到的,默认部署脚本已经利用了在部署时注入到进程中的某些 环境变量。
Forge 的内置环境变量可以快速识别,因为它们都以
$FORGE_
为前缀。
Forge 并不止步于此。您还可以在通过部署触发器 URL 部署时注入您自己的环境变量。如果我们采用我们的部署触发器 URL
https://forge.laravel.net.cn/servers/687/sites/1234/deploy/http?token=XXXX
我们可以将其他查询参数附加到 URL,它们将自动转换为环境变量。例如,如果我们附加 &env=staging
,Forge 将注入一个 $FORGE_VAR_ENV
变量,该变量的值为 "staging"
。利用其他环境变量,我们可以根据部署的启动方式微调我们的部署脚本的作用。
那么,我们可以利用环境变量做哪些很酷的事情呢?
防止部署“wip”提交
if [ $FORGE_DEPLOY_MESSAGE =~ "wip" ]; then
echo "The current code is a work in progress. Exiting..."
exit 1
fi
防止通过 Forge 仪表盘触发的部署
if [ $FORGE_MANUAL_DEPLOY -eq 1 ]; then
echo "Manual deployments are not allowed. Exiting..."
exit 1
fi
通知 Bugsnag 发布
此示例要求您使用 Laravel Bugsnag 包。
$FORGE_PHP artisan bugsnag:release \
--repository "https://github.com/laravel/laravel.com" \
--revision "${FORGE_DEPLOY_COMMIT}" \
--builder "${FORGE_DEPLOY_AUTHOR}"
如果您没有 Forge 帐户,现在是 注册 的好时机!Forge 允许您轻松创建和管理 PHP 服务器,其中包括 MySQL、Redis、Memcached、数据库备份以及运行强大、现代的 Laravel 应用程序所需的一切。