我们的部署策略:我们有环境范围的数据库配置和.htaccess
文件(想想prod.htaccess
,dev.htaccess
和local.htaccess
)。使用capistrano完成部署,首先检查要部署的分支,然后删除Capfile
和超出范围的.htaccess
文件,并从[env].htaccess
重命名范围内的htaccess到.htaccess
。这个完整的repository/public_html
目录通过非删除rsync传输到apache webroot。
背景:我工作的公司是在线出版物 自1998年以来一直存在,因为部署策略令人费解 文件夹结构很乱:版本控制的文件就在旁边 生成的文件和用户上传的文件。既然如此,我们做不到 只需将整个apache webroot文件夹符号链接到相应的
/current
中的文件夹。生成的文件每次都会被删除 一个新的部署,用户上传散落的文件 目录必须与其他地方等符号链接。因此 非删除rsync操作。
上面提到的目前的精神错乱是另一天的问题。
我想要的是一个解决方案,它不需要在部署时在repo中删除和重命名htaccess和db配置文件。原因是我们可以在/deploy/current
中工作并从中提交,而不必与部署中的本地更改纠缠在一起。
像这样部署环境范围文件的典型解决方案是什么?我应该将它们移动到/config
以上的/public_html
文件夹和apache webroot的符号链接到/config
中的相关文件,具体取决于环境吗?
答案 0 :(得分:2)
我建议你通过以下方式解决这个问题:
[env].htaccess
个文件保留在存储库中。 deploy:update
将所有[env].htaccess
个文件符号链接到.htaccess
后
符号链接(ln --symbolic [env].htaccess .htaccess
)*.htaccess
个文件。*.htaccess
个文件(他们可以通过.htaccess
符号链接访问范围内文件,并访问所有超出范围的[env] .htaccess文件。 deploy/current
文件夹提交(但请确保它是您可以提交的有效存储库。)。 我认为这可能会解决您所描述的问题,或者至少可以解决它。我会亲自开始这样做,看看它会如何发挥作用。
BTW为什么要删除Capfile
之后的deploy:update
?