我有一个在Debian Buster上运行的Rails 6应用程序。在一个地方,我使用“低级”缓存。以下是相关代码:
# Get the value.
def self.ae_enabled?()
Rails.cache.fetch("ae_enabled", expires_in: 1.hour)
end
# Change the value.
def self.ae_toggle()
ac = AdminConfiguration.find_by(name: "ae-enabled")
ac.value = ! ac.value
ac.save()
# Invalidate the cache.
Rails.cache.delete("ae_enabled")
return ac
end
这工作正常...一段时间。出于某种原因,由于某种原因,我无法弄清楚,用于缓存tmp/cache/3F1/
上述值的缓存目录会将所有权从www-data:www-data
(运行Apache的用户)更改为root:root
。一旦发生这种情况,Apache将无法再读取此缓存的值,并且应用程序将引发错误。
奇怪的是没有在其他目录中tmp/cache/
有他们的权限变化,这是只有这种低级别的缓存相关联的一个。
为什么那个特定的缓存目录会更改所有权?
技术细节:Rails 6.0.3.3版。
Apache通常与Rails缓存无关,除非您使用的是乘客,在这种情况下,可能是乘客的错误/配置错误,请检查用户沙箱是否已启用并正确配置。
典型的Rails部署通常具有多个过程:
文件所有权混乱很可能是由于在不同的os用户下运行时上述写入磁盘之一引起的。
研究如何启动流程。首先怀疑是某些cron作业,该作业可能在系统范围内配置,这些作业在root下运行。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句