我正在尝试将Capifony配置为部署到我的远程服务器。我想知道的是我的uploads
目录是否应该在.gitignore中?运行cap development depoy
时出现符号链接错误:
executing "ln -nfs /var/www/dev.xyz.co.uk/shared/web/uploads /var/www/dev.xyz.co.uk/releases/20130313103147/web/uploads"
*** [err :: x.xx.xx.xxx] ln:
*** [err :: x.xx.xx.xxx] failed to create symbolic link `/var/www/dev.xyz.co.uk/releases/20130313103147/web/uploads'
*** [err :: x.xx.xx.xxx] : No such file or directory
*** [err :: x.xx.xx.xxx]
这是因为/web/uploads
是否在.gitignore中,所以它永远不会从git中拉出来进行符号链接?
我是否需要首先在远程服务器上克隆我的存储库,或者Capifony是否为我执行此操作?
下面的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 :scm, :git
set :repository, "git@github.com:test/#{application}.git"
set :keep_releases, 3
set :use_sudo, false
set :shared_files, ["app/config/parameters.yml"]
set :shared_children, [app_path + "/logs", web_path + "/uploads", "vendor"]
set :use_composer, true
set :update_vendors, true
set :dump_assetic_assets, true
set :deploy_via, :copy
logger.level = Logger::MAX_LEVEL
development.rb如下:
server 'x.xx.xx.xxx', :app, :web, :primary => true
ssh_options[:port] = xxxx
ssh_options[:forward_agent] = true
set :deploy_to, "/var/www/xyz.co.uk/"
set :symfony_env_prod, "dev"
答案 0 :(得分:1)
有几种方法可以实现这一目标。
使用以下内容创建文件/web/uploads/.gitignore:
!.gitignore
这将允许将目录提交到存储库,但所有内容都将被忽略。它将在每次部署时创建en empty uploads文件夹。
此方法的优点是可以在部署之间保留上传内容 - 可能是您想要的。
在deploy.rb中创建一个“firstdeploy”任务,该任务仅在初始部署时执行,并在此阶段创建目录:
run "mkdir -p #{shared_path}/web/uploads"
在您的部署配置中,将其配置为共享路径,如此
set :web_path, "web"
set :shared_children, [web_path + "/uploads"]
如果有帮助,我发布了部署脚本here。
答案 1 :(得分:0)
我认为你可以保留它,就像/config/parameters.yml
一样但你应该在共享文件夹中手动创建上传文件夹吗?