[英]capistrano deploy_symlink fails
这是我的第一次部署。 我做了一个帽子deploy:setup
工作正常。
然后,当我尝试执行cap deploy:update
我遇到错误消息。 有点像
rm: cannot remove `/var/www/app_name/current': Is a directory
这是我的capfile和目录权限。
一般而言,就部署用户和权限而言,最佳做法是什么? 我应该使用root还是创建不同的用户。 如果不同的用户需要具备哪些确切权限?
谢谢
您是否在/var/www/app_name
创建了目录,还是由capistrano创建的?
无论如何,你遇到的问题是/var/www/app_name/current
不应该是一个目录 - 它应该是/var/www/app_name/releases/
当前版本的符号链接。 当capistrano在/var/www/app_name/releases/
创建新的发布文件夹并尝试将符号链接/var/www/app_name/current
到它时,会导致失败。
您可能能够通过重命名,以解决您的问题, /var/www/app_name/current
(让你有一个备份,如果出了问题),并从创建符号链接/var/www/app_name/current
到最新的版本中/var/www/app_name/releases/
,然后执行cap deploy
。 (如果有效,请删除当前的备份)。
就你所做的最佳实践而言, 不要使用root 。 相反,设置一个只具有所需目录权限的用户(或使用现有用户)(没有仔细阅读您的脚本,但可能只是/var/www/app_name
。
要部署新版本,您应该调用cap deploy
或cap deploy:migrations
,而不是cap deploy:update
。
我也有这样的错误。 更新源代码并重新启动服务器这一完全正常的任务似乎总是在简单脚本的各个方面都存在问题。
有时它抱怨github上的哈希值与某个预期值不匹配,有时它不会更新目录,因为它已经存在,但主要是因为它想要创建存在的东西。
有没有办法强迫Capistrano,因此shell命令只是做它? 我至少应该感谢它问我应该怎么做才能遇到这种类型的错误,而不仅仅是失败和回滚。 特别是当它是一个简单的文件操作。
我最终不得不在服务器上手动删除内容,以便Capistrano脚本能够正常运行而不会失败。 这显然不是前进的方向。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.