0

Symfony2 2.0 から 2.3.4 へのアップグレードを完了しました。これは現在、ローカルの開発サーバーで機能しており、Capifony で展開することを検討しています。

Symfony の大きな変更点は、依存関係を管理するために /bin/vendor から Composer に移行したことです。

「cap -V」で「Capistrano v2.15.5」が得られるように Capistrano を更新しました。

「capifony -v」が「capifony v2.4.0」を与えるように、Capifony

問題はそれです

cap deploy 

Composer と関係のあるものを実行しようとすることはありません。/bin/vendor を使用しようとすることを主張します。

* 2013-09-29 23:16:58 executing `symfony:vendors:reinstall'
* executing "cd /vhosts/domains/mysite.com/public/releases/20130929221446 && php bin/vendors install --reinstall"

私の「deploy.rb」には次のものがあります:

set :use_composer, true

ここに私の完全な deploy.rb があります

set :application, "mysite"
set :domain,      "#{application}.com"
set :deploy_to,   "/vhosts/domains/#{domain}/public"
set :app_path,    "app"

#ssh stuff 
ssh_options[:port] = 12345
ssh_options[:username] = "myuser" 
ssh_options[:forward_agent] = true

set :scm, :git
set :branch,      "master"
set :deploy_via,  :rsync_with_remote_cache
#set :deploy_via, :remote_cache

set :user, "admin" # SSH login user
set :port, 12345 # For Capistrano
#set :use_sudo, true # admin is sufficiently privileged

# Set logging to max for debugging
#logger.level = Logger::MAX_LEVEL

# Advised to add this to fix an error message
default_run_options[:pty] = true

set :repository, "/vhosts/domains/mysite.com/public/current" # Local means Vagrant

set :model_manager, "doctrine"
# Or: `propel`

# Server roles
role :web,        domain                         # Web server
#role :app,        domain                         # App server (could be different)
#role :db,         domain, :primary => true       # DB server (primary means primary DB)

set :keep_releases,  12

# Added 29Sep13 as advised by current capifony docs
set :shared_files,      ["app/config/parameters.yml"]

# directories that will be shared between all releases
set :shared_children,     [app_path + "/logs", "customer_uploads", "vendor"]

set :use_composer, true
set :update_vendors, true

# Share /vendor between deployments
#set :copy_vendors, true
# Run post-scripts from composer install
#set :composer_options,  "--no-dev --verbose --prefer-dist --optimize-autoloader"

# Below doesn't work with composer, is deprecated as only worked for bin/vendors
#set :vendors_mode, "reinstall" 

# Assets install (to web directory as files rather than symlinks). Don't uncomment, set to 'false'.
set :assets_install, false

# Regenerate Assetic assets (JS, CSS). Don't uncomment, set to 'false'.
set :dump_assetic_assets, false

# Whether to run cache warmup. Don't uncomment, set to 'false'.
set :cache_warmup, true

# Note this can fail (e.g. to find and download a necessary Git repo) and deployment still proceeds.

# Change ACL on the app/logs and app/cache directories
# Works without this and when enabled gives error if sudo set to false above.
after 'deploy', 'deploy:update_acl'

# Adam added to try and enforce keep_releases automatically
after "deploy", "deploy:cleanup"

# Custom task to set the ACL on the app/logs and app/cache directories
namespace :deploy do

  task :update_acl, :roles => :app do
    shared_dirs = [
      app_path + "/logs",
      app_path + "/cache"
    ]

    # add group write permissions
    #run "chmod -R g+w #{shared_dirs.join(' ')}"
    # Allow directories to be writable by webserver and this user
    run "cd #{latest_release} && setfacl -R -m u:www-data:rwx -m u:#{user}:rwx #{shared_dirs.join(' ')}"
    run "cd #{latest_release} && setfacl -dR -m u:www-data:rwx -m u:#{user}:rwx #{shared_dirs.join(' ')}"
  end

end

Edit1 30Sep13 14:04 UTC コメントへの応答

私のプロジェクトルートにあるCapfileの内容は

load 'deploy' if respond_to?(:namespace) # cap2 differentiator
Dir['vendor/bundles/*/*/recipes/*.rb'].each { |bundle| load(bundle) }
load Gem.find_files('symfony2.rb').last.to_s
load 'app/config/deploy'

また、Capifony を使用すると、以下のような他の質問でよりきれいな印刷が表示されるのはなぜですか。私の出力は、このようにはまったく見えません。ティックはなく、はるかに乱雑です

Capifony は Symfony2.1 でベンダーの再インストールに失敗しました

Capistrano または Capifony のいずれかが最新ではないため、Composer を使用するための指示を認識していないようですが、それはなぜでしょうか?

前もって感謝します、

4

1 に答える 1

3

Capifony は、Symfony v1 (bin/vendors を使用) および Symfony v2 - composer ベースをサポートしています。

Composer ベースのシステムを使用していることを認識する必要がありますが、set :use_composer, true行に注意してください。プロジェクト ルートで、Capfile の行に注意して、明示的に伝える方がよいことがわかりました。

require 'capifony_symfony2'

https://github.com/ruudk/capifony-toolsも便利です。コンポーザーのインストール/更新アクションの前に、ベンダー ディレクトリ全体をコピーする Capistrano のタスクがありますvendors_speedup.rb

于 2013-09-30T11:19:33.373 に答える