跳转到主要内容

安装 & 运维

upstream sent too big header while reading response header from upstream

网站一些链接点击后出现502错误,查看nginx error日志,里面有一句:

upstream sent too big header while reading response header from upstream

太大的头?drupal返回太大的头给nginx了,于是在nginx里添加以下配置。


Drupal核心autocomplete功能出错

一些nginx服务器的配置硬性隐藏了index.php,导致drupal的autocomplete功能出错(返回404)。

临时解决方法:

修改includes/form.inc


Drupal数值字段类型decimal和float的选择

decimal指定固定长度和小数点后的位数,例如:decimal(10,2),总共十位,其中小数点后两位,即小数点前是八位
float是精确存储数值。

如下例子,做除法时decimal会有精度丢失。


drupal6站点迁移后大量dblog_watchdog报错解决

原样的文件和数据库复制,在新的主机空间访问时,一页竟出现两百多个的dblog_watchdog写入查询,全部都是关于cck或cck相关模块(例如link模块)的警告提示。经查证,根源是是cck及cck相关的模块造成。到官网上查发现许多类似问题(Notice: Undefined variable: element),多数都要打补丁来解决。


玩转Drupal7缓存配置技巧

drupal6有个著名的cacherouter模块,能同时支持db、apc、memcache、file缓存,可以灵活配置各种缓存在不同地方,例如默认在apc、cache_page在file、session在memcache等。
(顺便说说,cacherouter的作者对drupal团队有意见:“我这么好的模块为什么不加入核心?”呵呵)


drupal6里boost模块安装的nginx重写规则


    location / {
        if (!-e $request_filename) {
             rewrite  ^/(.*)$  /index.php?q=$1  last;
        }
    }

改写为:


慎用EntityCache模块

我辛辛苦苦配置了几天的ubercart,安装了EntityCache后,性能未见显著增长。当卸载EntityCache时,页面报错:

'EntityCacheTaxonomyVocabularyController' not found

尝试过清缓存/update/重启服务器等等处理手段,故障依旧,EntityCache如蛆跗骨,似乎是个不可逆工程。

上google搜'EntityCacheTaxonomyVocabularyController' not found,只有两条记录。第一个看了没什么帮助,第二个http://danecabutterfield.com/ ,哈哈,自己看。。。


如何让nginx也支持drupal的upload progress

Drupal的Filefield模块原生支持pecl的uploadprogress扩展,但是pecl的uploadprocess只支持apache!

还好nginx也有个upload progress模块,有高手为此写了个对应的drupal模块:FileField Nginx Progress

可惜的是,该模块的配置文档只有寥寥几行字,而drupal官方仅支持apache,关于nginx的文档实在不多,而且权威性有限。我东拼西凑搞了份nginx的配置,用着都没有什么问题,就是upload progress出不了。

考虑到安全性,这里仅贴出一部分配置: