无法删除 Opsworks deploy 创建的 rails/system 符号链接
Posted
技术标签:
【中文标题】无法删除 Opsworks deploy 创建的 rails/system 符号链接【英文标题】:Unable to remove rails/system symlink created by Opsworks deploy 【发布时间】:2014-04-14 12:06:26 【问题描述】:我想让新实例使用 S3 存储桶来上传文件/图像。我正在使用 s3fs 并且目标文件夹安装在实例上。我想:
1- 删除 /srv/www/myapp/current/public/system(当前指向 shared/public/system)
2- 将 /srv/www/myapp/current/public/system 链接到 /s3mounted/bucket/public/system
所以所有实例都指向同一个共享且永久的 s3 位置。
链接归 www-data 所有,我尝试手动 sudo su 和 rm 并没有工作。我的问题是,如果我要在厨师食谱中作为部署挂钩 (before_restart.rb) 执行此操作,我怎样才能删除此链接,以便我可以指向不同的位置。
【问题讨论】:
【参考方案1】:在您当前的 before_restart.rb 中执行以下操作:
current_release = release_path
deploy_node = node
deploy_resource = new_resource
deploy_to = deploy_resource.deploy_to
app_name = deploy_to.split('/')[-1]
deploy_user = deploy_node[:deploy][app_name][:user]
deploy_group = deploy_node[:deploy][app_name][:group]
link "#current_release/public/system" do
to "/s3mounted/bucket/public/system"
owner deploy_user
group deploy_group
end
第一部分设置我使用的变量。如果你使用 deploy[] 之类的东西,你最终可以让机器进入部署循环。
这实际上是为您删除文件。当您符号链接时,它会自动为您删除。
【讨论】:
【参考方案2】:Apache 进程已锁定文件/文件夹。这不是权限问题。我不得不停止 apache,然后“sudo rm”然后我能够链接到新位置并重新启动 apache,一切正常。
这可能不是最好的解决方案,并且很想听听其他关于如何做到这一点的想法。
【讨论】:
以上是关于无法删除 Opsworks deploy 创建的 rails/system 符号链接的主要内容,如果未能解决你的问题,请参考以下文章
AWS opsworks deploy 在实例加入域后永远运行