【问题标题】:Apache2, Git, Capistrano & Rails - creating symlinksApache2、Git、Capistrano 和 Rails - 创建符号链接
【发布时间】:2010-03-02 19:41:53
【问题描述】:

我有点坚持在服务器上向我的应用程序添加符号链接。我目前在 .gitignore 中有以下内容:

/非公开/系统/上传/*

我基本上不希望 Git 存储上传目录的内容。到目前为止一切顺利。

在我的服务器上,在我的 deploy.rb 中,我有以下内容:

namespace :customs do
  task :symlink, :roles => :app do
    run <<-CMD
      ln -nfs #{shared_path}/system/uploads #{release_path}/non-public/system/uploads
    CMD
  end
end

after "deploy:symlink","customs:symlink"
after "deploy", "deploy:cleanup"

我想在每次部署后为上传目录创建一个符号链接,但我不断收到失败的错误消息,因为非公共/系统/上传目录首先不存在于 git 存储库中。

我通过查看存储库验证了这一点,结构 /non-public/system/uploads 不存在,因为我在 .gitignore 中设置了忽略它。

我查看了 Git wiki,它不跟踪目录,所以我一定遗漏了一些东西。其他开发人员如何将上传目录与他们的服务器进行符号链接?

【问题讨论】:

  • 好吧,现在我看到了带有 mkdir 命令的部署配方。这就是我所缺少的吗?在符号链接之前简单地创建目录的命令?

标签: ruby-on-rails git capistrano


【解决方案1】:

我通常会在我的 cap 部署中做的是创建目录,通过做一个基本的

set :deploy_to, "/this/dir"

run "mkdir -p #{deploy_to}/then/more/dirs"

after "deploy:symlink"

namespace :deploy....
  ....
  ....

然后提供run 代码以在after 或其他任何地方做一些符号链接。这可能不是所有情况下的最佳选择,但对于简单的事情,它通常可以完成工作。

【讨论】:

  • 非常感谢。我现在唯一的问题是我认为我的符号链接错误。我使用了以下命令——ln -nfs shared/system/uploads current/non-public/system/uploads——不幸的是,它在已经存在的上传目录中创建了一个上传目录。 :(
  • 我对 deploy 进行了一些修改,现在我了解了符号链接以及它需要如何构建。感谢您的指导!
猜你喜欢
  • 2014-12-06
  • 1970-01-01
  • 1970-01-01
  • 2014-03-16
  • 2010-10-13
  • 1970-01-01
  • 2013-08-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多