marchie/lad-utils

在Azure上部署Laravel应用程序时,执行Composer后安装命令的命令行工具

dev-master 2016-03-01 14:25 UTC

This package is not auto-updated.

Last update: 2024-09-14 18:20:43 UTC


README

TL; DR

Artisan命令,用于帮助在Microsoft Azure上部署Laravel应用程序。

背景故事

将Laravel应用程序部署到Azure有点像一门神秘的艺术。

指南 在外,介绍了如何进行部署,但对我来说,最终结果并不如我所愿。

我这是什么意思呢?嗯,我正在使用SyntaxC4的Composer扩展来部署我的应用程序,这个扩展非常棒。然而,标准的Laravel优化命令有问题:

php artisan optimize 运行得像狗一样慢。我在说,在一个双核Azure实例上需要半小时才能完成,或者永远不会完成(也就是说,我杀掉它之前要等超过24小时),而在我那台不起眼的开发机上只需要几秒钟。更糟糕的是,php artisan optimize命令所做的主要耗时操作是运行composer dump-autoload -o,而这个操作Azure的Composer扩展已经做了。

(NB:原因似乎与最终通过后安装命令运行的过程数量有关。Composer是一个PHP应用程序,它通过命令行调用后安装命令。php artisan optimize的后安装命令启动另一个PHP进程,然后通过命令行调用composer dump-autoload -o。这启动了另一个PHP进程,一切似乎都变得非常缓慢。)

这个包的作用

这个包为你提供了一个额外的Artisan命令,你可以在你的composer.json中将其用作后安装命令:

azure:optimize-classes扩展了标准的Artisan optimize命令,但是它不会调用composer dump-autoload -o。注意,如果你的应用程序处于调试模式,则不会编译类。

(NB:composer dump-autoload -o命令已被Azure Composer扩展调用)

(感谢@22media on Laracasts为此付出的努力)

用法

您需要将此包添加到您的composer.json文件中

{
    ...
    "require": {
        ...
        "marchie/lad-utils": "dev-master",
        ...
    },
    ...
}

然后,运行composer update以拉取此包。

在包被拉取后,将包的服务提供者添加到您的Laravel应用程序的config/app.php文件中

return [
    ...
    'providers' => [
        ...
        Marchie\LaravelAzureDeploymentUtilities\ServiceProvider::class,
        ...
    ]
    ...
]

完成这些操作后,您可以在composer.jsonpost-install-cmd中使用这些命令

{
    ...
    "scripts": {
        ...
        "post-install-cmd": [
            "php -r \"copy('%HOME\\site\\.env', '.env');\"",
            ...
            "php artisan azure:optimize-classes",
            ...
            "php -r \"unlink('.env');\""
        ],
        ...
    },
    ...
}

请注意,我们首先将.env文件复制到存储库中(Laravel需要此文件)。然后,我们运行其他后安装命令。最后,我们删除从存储库中复制的.env文件。