解决 Debian Wheezy 使用 Nginx 1.6 官方包和 php-fpm 时返回空白页的问题

Nginx 1.6 终于迎来了 SPDY 3.1 以及其他激动人心的新特性, 然而, 如果从 Nginx 官方提供的 Debian 仓库安装 Nginx 1.6, 并配合 php-fpm 等 fastcgi 程序时, 却会遇到蛋疼的空白页问题.

之所以说这个问题蛋疼, 是因为页面上没有错误信息(完全空白), 而 Nginx 返回的状态码是 200, 就连 php-fpm 也没有写下任何日志 (这个可能是因为其他原因, 不过本猫暂时没有细查).

从故障现象上看很像是 fastcgi_params 的问题, 因为确认了 nginx 的权限等方面均无错, 而且如果按照网上说的增加 PATH_TRANSLATED 之类的变量却可以得到 “File not found.” 的返回.

最后, 本猫通过比较 Nginx 官方包和 Debian 提供的 Nginx 包中的 fastcgi_params 文件, 确认是因为 Nginx 官方包的该文件中缺少这一行导致了问题:

fastcgi_param  SCRIPT_FILENAME    $request_filename;

希望能帮到谁 🙂

将 Gitlab 迁移到新服务器

今天把一台服务器上的 Gitlab 换了个地儿, 记录一下遇到的大大小小的各种坑们:

  • 原服务器系统是 Ubuntu, 而新的是 Debian, 各种库版本不一样(从 glibc 开始), 于是 Ruby 的 vender 文件夹显然不能留, 各种清空重新跑 bundle.
  • Gitlab 用到了 Redis, 虽然主要的配置说明里没有用力提及. 因此搬的时候连 Redis 的数据库一起搬过去. (当然主力数据库比如 MySQL 也必须不能忘记啦)
  • /home/git/.ssh/authorized/keys 保存了能用 git 帐号登陆服务器的所有小伙伴的 SSH PubKey 们, 需要一起搬过来
  • gitlab-shell 需要重新安装以走进科学 (只需要跑它那个 bin/install)
  • initscript 脚本和 logrotate 配置都要重新安装不能忘记的说
  • nginx 需要访问 gitlab 的 socket, 而 rsync 过来的目录里因为 exclude 掉了 gitlab/tmp/ 里的内容, 自动新创建的目录默认会变成 700 权限, 导致 nginx 读取失败 – 嗯 chmod 回来

至于其他系统软件包和 ruby 的基本配置就不再赘述了.

最后详细记录下环境:
原服务器: Ubuntu 12.04, 开启了 nginx/git 等等 PPA. 本体是 42qu 的一台 VPS.
新服务器: Debian 7.2, 开启了 dotdeb 仓库. 本体是美团云的一台 VPS.

QR Code Business Card