使用capistrano将我的开发环境部署到外部开发服务器时,我总是会收到以下错误:
RuntimeException: Failed to write cache file "/var/www/xyz.co.uk/app/cache/dev/classes.php".
然后我必须登录我的开发服务器并删除我的app / cache / dev /目录。
这是我的development.rb文件:
server 'x.xx.xx.xxx', :app, :web, :db, :primary => true
ssh_options[:port] = 1234
ssh_options[:forward_agent] = true
set :deploy_to, "/var/www/xyz.co.uk"
set :symfony_env_prod, "dev"
set :branch, "develop"
# Need to clear *_dev controllers
set :clear_controllers, false
我的deploy.rb文件:
set :stage_dir, 'app/config/deploy' # needed for Symfony2 only
set :stages, %w(production staging development)
require 'capistrano/ext/multistage'
set :application, "xyz.co.uk"
set :user, "root" # The server's user for deploys
set :normalize_asset_timestamps, false
set :repository, "git@github.com:xyz/xyz.co.uk.git"
set :scm, :git
set :keep_releases, 3
set :use_sudo, false
set :web_path, "web"
set :shared_files, ["app/config/parameters.yml"]
set :shared_children, [app_path + "/logs", web_path + "/uploads"]
set :use_composer, true
set :update_vendors, true
set :dump_assetic_assets, true
set :deploy_via, :remote_cache
#logger.level = Logger::MAX_LEVEL
答案 0 :(得分:4)
我在deploy.rb
文件中设置了以下权限来设置缓存目录的权限:
after "deploy:update_code" do
capifony_pretty_print "--> Ensuring cache directory permissions"
run "setfacl -R -m u:www-data:rwX -m u:`whoami`:rwX #{latest_release}/#{cache_path}"
run "setfacl -dR -m u:www-data:rwX -m u:`whoami`:rwX #{latest_release}/#{cache_path}"
capifony_puts_ok
end
答案 1 :(得分:0)
您要部署为root
,因此您必须使用sudo
:
set :use_sudo, true
答案 2 :(得分:0)
添加此代码
set :writable_dirs, ["app/cache", "app/logs"]
set :webserver_user, "www-data"
set :permission_method, :acl
set :use_set_permissions, true
确保您已启用acl。如果没有,请参阅此链接http://vvv.tobiassjosten.net/symfony/symfony2-file-permissions-in-ubuntu/