我们使用不同的缓存目录到默认缓存目录,并使用构建代理进行部署。我们在构建代理上运行composer install,其中缓存目录不存在,然后将其同步到Web服务器,然后我们运行命令清除并预热缓存(所有这些都是从Bamboo部署完成的)。 / p>
当然,日志会在日志中出现错误,因为当代理程序安装在代理程序上运行时它无法创建缓存目录(我们之后不想这样做)。
当我运行作曲家安装时,有没有办法可以让它跳过缓存清除?我无法将其视为作曲家的参数选项。
答案 0 :(得分:5)
您只需删除以下行:
"Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::clearCache",
来自post-install-cmd
文件中的post-update-cmd
和/或composer.json
部分。
假设您的构建代理正在执行install
而不是update
,那么将此行保留在post-update-cmd
部分以进行开发工作可能会很有用。
答案 1 :(得分:2)
正如其他人所说的那样,Sensio \ Bundle \ DistributionBundle \ Composer \ ScriptHandler :: installAssets将根据需要执行缓存清除,如果您无法写入缓存会导致问题(我这样做)一旦从构建代理发送到实时服务器上。)
我现在唯一能找到的方法就是从composer.json中删除2行:
"Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::clearCache",
"Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installAssets",
然后,当您使用具有缓存目录的服务器时,运行以下2个命令(在此阶段您应该已经完成了作曲家安装/更新):
php bin/console cache:clear --env=prod --no-debug
php bin/console assets:install --env=prod
资产:根据安装的供应商捆绑包可能需要也可能不需要安装。任何使用" public"存储资源的文件夹将需要这样,以便为/ web / bundles / bundleName正确设置符号链接。在此之后我也做了资产转储。
通过执行此操作,您现在可以在单独的服务器或不同的目录中执行长部分(git clone和composer install),然后将其同步到您希望的位置。然后,您只需刷新并预热缓存并执行assets / assetic的最终配置(或者您正在执行的任何需要缓存的操作),只需最少的停机时间,或者如果在部署中途出现问题,您的网站会出现任何问题。< / p>