- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我在尝试使用 Capistrano 部署需要在部署(当前)文件夹内安装多个 Amazon EFS 绑定(bind)的应用程序时遇到问题。
我在 Web 服务器的根目录中有一个名为 /webroot
的目录,其中包含我们当前所有的代码以及在三个节点之间共享的大约 7 个文件夹(绑定(bind)装载)。
在我的 deploy.rb
中,我有以下行 set :deploy_to, "/webroot/testingCap"
其中 Capistrano 将代码部署到符号链接(symbolic link)文件夹 当前
。这很好,但是现在当它进入符号链接(symbolic link)绑定(bind)安装目录的步骤时,例如:/webroot/uploads
它会抛出一个错误:
rm -rf/webroot/uploads
rm: 无法删除 '/webroot/uploads'
设备或资源繁忙
我不确定它为什么要强行删除该目录?我认为它应该只是指向目录的符号链接(symbolic link)。
我的 linked_dirs 部分在 deploy.rb
中看起来像这样:附加:linked_dirs,“/webroot/uploads”
我做错了什么?
最佳答案
:linked_dirs
仅适用于相对路径 并且始终使用 Capistrano 的共享
目录。
当您添加例如"foo"
到 :linked_dirs
,Capistrano 将在您部署的应用程序中创建一个符号链接(symbolic link)。如果那里已经存在任何内容,它将首先删除它(这就是为什么您会看到 rm -rf
)。
该链接的目的地将始终指向 Capistrano 的 shared
目录中的相同名称。所以事件链将是这样的:
rm -rf /webroot/testingCap/current/foo
ln -s /webroot/testingCap/shared/foo /webroot/testingCap/current/foo
因此,如果您查看 current
内部,您将得到一个指向的链接
foo -> /webroot/testingCap/shared/foo
请注意,相对于 current
的路径与相对于 shared
的路径相同。这就是 :linked_dirs
的工作方式,您无法更改它。
例如,如果您的应用希望将上传内容存储在 public/uploads
中,您需要在 shared
中存在完全相同的相对路径,以便链接到成立。换句话说,链接将指向:
/webroot/testingCap/current/public/uploads -> /webroot/testingCap/shared/public/uploads
在你的情况下,我怀疑你可以让它工作,但你需要确保你的挂载点正好位于 Capistrano 期望的位置。
关于linux - 与 :linked_dirs 一起使用时,使用 Amazon EFS(绑定(bind)安装文件夹)的 Capistrano 部署失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48728164/
我是 Capistrano 的新手,我想知道为我的项目管理 Capistrano 配置的最佳方法是什么。 具体应该在哪里config/deploy.rb与我的项目的源代码控制相关吗?我应该存储没有特定
我正在使用 Capistrano 管理在多个负载平衡服务器上运行的 Java Web 应用程序。某些任务(例如配置更改)需要重新启动服务器或重新部署应用程序,在此期间服务器变得无响应。 如果 Capi
有没有办法可以看到 capistrano 任务依赖树?我有一个大项目,有很多任务和依赖项,但我对整个画面一无所知。 帕纳约蒂斯 最佳答案 在 Capistrano 3 中,您可以添加 --trace
我有一个命名空间和一些在 deploy:updated 之后运行的命名空间中的任务。下面是一个例子: namespace :myservice do task :start do on r
我想在运行 deploy:migrate 任务之前停止一些进程。我知道我可以通过复制现有代码并在任务的开头和结尾添加停止/启动步骤来重新定义 deploy:migrate 任务。 我想知道是否有办法避
我将如何更改 Capistrano 使用的临时目录? 示例:代替 /tmp ,我想用/home/user/tmp 我现在的 VPS 有 /tmp安装为 noexec ,这使我在尝试运行时获得了权限被拒
使用 Capistrano,如何回滚到特定版本? 我服务器的文件夹有一个/release 文件夹,我如何回滚到特定的文件夹? 我是否可以在本地获取计算机上的版本列表? 我正在使用 GIT,但这不起作用
我尝试使用“cap rollback”,但出现以下错误: $ cap rollback the task `rollback' does not exist 我需要做一些额外的设置才能使回滚正常工作吗
我正在使用 Capistrano 部署 ruby on Rails 项目。我正在尝试以用户“部署”身份登录远程服务器并部署此应用程序。 当我通过 ssh 进入框进行部署并 git 克隆项目时,它可
我正在使用 Capistrano 部署 ruby on Rails 项目。我正在尝试以用户“部署”身份登录远程服务器并部署此应用程序。 当我通过 ssh 进入框进行部署并 git 克隆项目时,它可
我正在使用 capistrano、capistrano/rbenv、capistrano/bundler 和 capistrano/rails。我在 capistrano 编译 Assets 的步骤中
尝试将此代码块授予 capistrano 的版本 3 但无济于事。一切都变了。任何人都可以帮助我在正确的轨道上进行转换吗? 旧版本 2 deploy.rb: #require 'new_relic/r
我对这两种工具都是新手,还没有完全掌握。 如果我使用 Capistrano 进行部署,为什么 Gradle 是部署目标? 另见 Gradle Overview . 最佳答案 Gradle 是从 Gro
如何使用 Capistrano v3 仅部署到一台服务器?我在那里发现的所有解决方案都部署到每台服务器,因此,我认为它们适用于 v2。 我不想部署一个阶段,我已经在使用多阶段,我只想在其中一个阶段部署
在 Capistrano Multi-staging documentation set :deploy_env, 'production'用来。是 deploy_env同 rails_env其中te
部署应用程序时,我将 Capistrano 与 capistrano_rsync_with_remote_cache gem 一起使用。 使用新软件升级部署服务器后出现问题: 卡皮斯特拉诺 2.5.1
capistrano-chef 是否有替代品?厨师独奏的 gem ?主要是为了避免两次定义服务器信息。 最佳答案 我在这个话题上发现了一些新鲜而热门的东西: Roundsman gem 文件: gem
我正在尝试通过遵循 DOCS 来学习使用 Capistrano 3,并且我编写了一个简单的任务来测试我的理解。 任务在默认 task 中创建目录在 lib/capistrano/tasks : d
我有一个 capistrano 任务,它整合了 Rails 项目的多个阶段的部署。 例如: task :consolidated_task do build #creates a new re
来自 deploy.rb 的片段 task :prod1 do set :deploy_to, "/home/project/src/prod1" end task :prod2 do set
我是一名优秀的程序员,十分优秀!