6.1. 帮助
升级路径
如果你是从旧版的 Rocketeer 升级,以下是你需要了解的主要变化:
从 1.2 升级到 2.0.0
-
项目现在是 5.4+,如果你仍然使用 5.3,目前已经停止维护,是时候升级了
-
Rocketeer\Traits\Task
被移至Rocketeer\Abstracts\AbstractTask
-
Rocketeer\Traits\Plugin
被移至Rocketeer\Abstracts\AbstractPlugin
-
Rocketeer\Plugins\Notifier
被移至Rocketeer\Plugins\AbstractNotifier
-
$task->server
属性被移至$task->localStorage
-
之前在
$task->rocketeer
上的所有 连接/存储库 相关方法都移到了$task->connections
(getConnection
、getStage
、getConnectionCredentials
等) -
getConnectionCredentials
现在总是返回一组服务器证书,即使只有一个服务器。 要获取唯一服务器或特定服务器的凭据,请调用$task->connections->getServerCredentials(connection = current, server = 0)
-
以下方法:
php
、artisan
、runArtisan
、runMigrations
、runSeed
、runTests
、composer
和runComposer
已被删除并替换为 Binaries 系统(请参阅相关文档)。 假设你想执行$task->runMigrations(seed = false)
,现在需要改为$task->artisan()->migrate(seed = false)
-
以下方法:
cloneRepository
、copyRepository
和updateRepository
已被移除并被策略系统取代(参见相关文档)。 如果你想执行$task->updateRepository()
,现在需要改为$task->getStrategy('Deploy')->update()
-
以下事件已被弃用,并已被子任务及其匹配的前后钩子替换:
cloneRepository
和copyRepository
=>create-release.before
runComposer
=>dependencies.before
checkTestsResults
=>test.before
故障排除
部署执行成功,但正在运行的是旧脚本,而不是新脚本
PHP 5.5 内置了 Opcache。 Opcache 应在脚本更改时失效,然而当脚本位于符号链接文件夹中并从网络服务器调用时会出现问题。
基本上,Opcache “以为” 脚本是 /var/www/hello/current/public/index
,而实际上,它是/var/www/hello/releases/20140101011/public/index
。
要解决此问题,请添加以下命令在部署结束时运行:
php -r "opcache_reset();"
注意:如果你在 nginx 中使用 PHP-FPM,以上命令只会刷新 CLI 缓存,而不是 FPM
要解决这种情况下的问题,请将下面几行添加到你的 nginx 服务器配置中。
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
fastcgi_param DOCUMENT_ROOT $realpath_root;
通常该文件位于 /etc/nginx/fastcgi.conf
。
本译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。