php - 是否可以编译 Symfony2 assetic :dump and deploy that rather than run it on the server?

标签 php deployment symfony assetic capifony

我的生产服务器出现问题,assetic:dump 在 Capifony 部署时超时(但并非总是如此)。

在本地运行 assetic:dump 没问题。也可以部署到不同的登台(功能不那么强大)服务器。

要解决此问题(并加快部署速度),我想知道是否可以在部署之前运行 assetic:dump 并将这些合规 Assets 与部署的其余部分一起发送?

最佳答案

这有点棘手,我也在尝试这样做(java 在我的服务器上无法正常工作,因此部署失败)。

问题是 Capifony 从源代码控制存储库部署,通常转储的 Assets 不在存储库中(它们不应该)。

所以我想做到这一点的唯一方法是创建一个 Capistrano 任务(Capifony 基于 Capistrano),它将转储 Assets 并将它们同步到服务器上。

编辑:这是我的尝试 编辑:它确实有效,自从我回答问题后我就一直在使用它。

我确信有很多可能的改进,我不是 ruby​​ 专家,我也不是 shell 脚本专家。

在您的 deploy.rb 中,您可以添加两个任务:

before "deploy:update_code", "deploy:dump_assetic_locally"
after "deploy:update_code", "deploy:rsync_local_assets_to_server"

以及与这些任务关联的代码(在同一个文件中):

namespace :deploy do
  task :dump_assetic_locally, :roles => :web do
    run_locally "php app/console assetic:dump --env=prod"
  end

  task :rsync_local_assets_to_server, :roles => :web do
    finder_options = {:except => { :no_release => true }}
    find_servers(finder_options).each {|s| run_locally "rsync -az --delete --rsh='ssh -p #{ssh_port(s)}' #{local_web_path}/js/ #{rsync_host(s)}:#{release_path}/web/js/" }
    find_servers(finder_options).each {|s| run_locally "rsync -az --delete --rsh='ssh -p #{ssh_port(s)}' #{local_web_path}/css/ #{rsync_host(s)}:#{release_path}/web/css/" }
  end

  def local_web_path
    File.expand_path("web")
  end

  def rsync_host(server)
    :user ? "#{user}@#{server.host}" : server.host
  end

  def ssh_port(server)
    server.port || ssh_options[:port] || 22
  end

end

关于php - 是否可以编译 Symfony2 assetic :dump and deploy that rather than run it on the server?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12261861/

相关文章:

php - 合并包含共享关联键的数组而不相互覆盖

java - 如何从Mysql中的所有表中删除一条唯一记录

deployment - 用我的 Windows CE 应用程序替换手持设备的自定义仪表板

.net - 如何强制从哪里加载程序集?

amazon-web-services - 是否有最佳实践可以在部署到 AWS 之前在本地测试您的堆栈并避免在调试期间反复部署堆栈?

symfony - 如何知道谁在 symfony 中调用了 Controller 的操作

php - Symfony 2,ServiceNotFoundException,不存在的服务 "templating.engine.php"

javascript - 如何根据用户输入的日期订购餐 table

Symfony2 添加以形成具有一个名称的多个字段

php - 如何在 PHP 中使用 Try Catch 语句回滚对数据库所做的更改?