我们开启了页面的 cache,这样,动态访问后,只要不变化就会缓冲到 public 目录下。
但是一旦重新部署,public 目录就被会被新的 release 替代,那些 cache 的页面 html 都没了,只能再重新生成了。我想了个办法,就是把 public 目录做成一个软链接目录,每次新的 release 从 git 拉下来后,就把 public 里面的东西拷贝到一个 share 目录中,然后删除掉 release 目录中的 public 目录,最后把 share 目录软链接到 release 的 public 目录中。
简而言之,就是 public 目录是一个软链接目录,这样 cache 就可以永远在一个固定目录中了。
但是,我这样做了后,访问站点的时候,总是报错:
2012/03/21 21:27:45 [error] 8496#0: *1 directory index of "/data/www/current/public/" is forbidden, client: 192.168.0.171, server: localhost, request: "GET / HTTP/1.1", host: "192.168.0.106"
但是我去访问静态页面是存在的 http://192.168.0.106/test.htmlnginx没有找到ruby的环境,但是我ps发现passenger进程都是好好的。,感觉是,
我的问题是:
1.难道 passenger 就不能把 nginx 的 root 配置成软链接目录么?何种原因导致无法启动 ruby 呢?
2.大家有好的办法,能让我保留我的那些缓冲么?你知道的,重新部署后,那些缓冲的千千万万的页面要是拷贝过来是多费资源的事啊。你们是怎么解决这个问题的呢?rubychina 也应该会遇到这个问题吧?如何解决的呢?问一下@rei和@huacnlee。