一个作曲家的安装通常需要几分钟。在生产环境中,感觉太慢了。 是否可以将作曲家安装到临时目录,然后切换它?如果可能的话,停机时间应该大约为零。
或者有没有其他方法可以更快地完成作曲家安装?
我创建了一个作曲家插件来并行下载包。
https://packagist.org/packages/hirak/prestissimo
$ 作曲家全球需要 hirak/prestissimo
请尝试一下。在我的环境中,composer install
变得快 10 倍。
有时可以使用--prefer-dist
标志显著加快composer install
速度,恰好建议将其用于生产用途:
prefer-dist:与
--prefer-source
相反,如果可能的话,作曲家将从dist安装。这可以大大加快构建服务器上的安装速度,以及您通常不运行供应商更新的其他用例。
composer install
文档在这里: http://getcomposer.org/doc/03-cli.md#install
编辑以澄清有时
我说它有时会加快composer install
,因为有很多因素会让它感觉很慢,其中最重要的是网络性能和当前的 Github 状态。 缓慢的安装可能真的很令人沮丧,但它并不总是作曲家的b/c。
你在问两件不同且不相关的事情。
是的,这是一种解决方案,可以在单独的目录中构建站点的下一个版本,然后在将旧版本移开后将其放置到位。实际上,这是最好的解决方案。
以下是我构建的部署脚本的工作方式:
- 在单独的目录中准备站点的下一个版本(假设
/var/www/new
);以下项目列表及其顺序不是静态的,某些项目需要不同的流程:- 从存储库中获取代码的最新版本;
- 删除活动站点上不需要的文件(
.gitignore
、IDE 项目文件、占位符等); - 运行
composer install
; - 复制/生成包含实时服务器设置的配置文件(存储在存储库中的配置文件包含虚拟值);
- 更改所有文件的用户和权限; 使一些目录可由Web服务器写入; 创建符号链接
- 、目录等;例如,包含用户上传文件的目录位于服务器目录之外的某个位置,并且在部署期间创建指向它的符号链接,以使其内容通过 Web 服务器可用;
- 将实时代码移开;我使用
mv
移动整个目录(例如/var/www/html
移动到/var/www/old
); - 将准备好的新版本移动到正确的位置(
mv /var/www/new /var/www/html
); - 将以前的版本移动到存档中(在我删除
vendor
和其他未更改或外部文件的内容之后)。
优点:
- 停机时间为零(可能在步骤 #2 和 #3 之间为微秒);
- 失败的构建不会影响活动站点(如果处理得当); 恢复
- 到以前的版本(如果需要)可以轻松完成。
关于另一个问题,我知道加快composer
的唯一方法是避免使用加载xdebug
扩展的 PHP 运行它。无论如何,不应在生产服务器上加载xdebug
扩展。