GitLab 支持 SPDY 协议

GitLab 支持 Google 提出的 SPDY 协议,通过压缩、多路复用,可以有效加速 HTTPS 协议。我们使用了 Nginx 1.4 开始内置的 SPDY 模块,支持 SPDY/2 协议。

赶快来体验 SPDY-enabled 的 gitgeek.net 吧!

  1. 用 Chrome 浏览器,先访问 https://gitgeek.net/users/sign_in 再访问 chrome://net-internals/#spdy 看 gitgeek.net 是否在 SPDY Sessions 列表中。
  2. 使用第三方 SDPY 协议验证工具:http://spdycheck.org/#gitgeek.net

To GitLab Maintainers: SPDY 需要 Nginx 1.4+ 和 OpenSSL 1.0.1c+,Nginx 1.5.6 是从官网上下载源码编译的,OpenSSL 1.0.1e 是加入了 Debian sid 源后升级的(原来是 OpenSSL 0.9.8)。OpenSSL 1.0.1e 又依赖 gcc 4.5+,而 Debian squeeze 上的 gcc 是 4.4.x,因此把 gcc 也升级到了 4.8,libc 也升级到了 2.17。不要随意执行 apt-get upgrade 了,以免把整个系统升级到 sid。

GitLab SSH 无 key 时不再提示输入密码

之前 git clone [email protected]:namespace/project.git 的时候,如果没设置好 SSH key,会提示输入密码,很多用户对此感到迷惑。现在在 sshd_config 中加了下面两行,会直接提示访问被拒绝。

Match User git
PasswordAuthentication no

Tips:GitLab 的代码仓库支持 SSH 和 HTTPS 两种访问方式:

  1. SSH 访问,需要用 ssh-keygen 生成密钥,把公钥(id_rsa.pub)添加到 GitLab 个人管理区域的 public key。
  2. HTTPS 访问,每次连接服务器都要输入用户名(注册邮箱)和密码。可以作为在公用电脑上的临时访问方式。

GitLab 挂上小绿锁了

代码安全是一件比较严肃的事情。看到这么多人使用 GitLab,我自己也经常在校外使用 GitLab,安全的 HTTPS 传输是必要的。由于 gitlab.lug.ustc.edu.cn 是三级域名,LUG 也没有顶级域名 ustc.edu.cn 的管理权限,搞 SSL 证书是比较麻烦的。

为此,我申请了 gitgeek.net 域名,去 StartSSL 申请了一个免费 SSL 证书。没办法,GoDaddy 非促销季的证书太贵了;要是那位高富帅给 USTC 搞个 Verisign 的 Extended Validation,我可以给TA所有服务器的 root 🙂

总之,GitLab 挂上小绿锁了:

screenshot

在 Ubuntu 和 Windows 下的主流浏览器中测试,均可以正常访问。在 Debian 和 cygwin 中用 git clone 和 curl 也可以正常访问。由于 wget 1.12 的一个 bug,会提示证书不匹配,升级 wget 即可。

如果大家发现小绿锁没有挂上,或者 HTTPS 访问出现任何问题,请把你用的操作系统、浏览器或命令行工具的名称及版本号发到 [email protected]

原来的 http://gitlab.lug.ustc.edu.cn 仍然可以使用,只不过登出之后,登录会跳到 gitgeek.net……… GitLab 就是这样的,我本来不想这样……

Tips for GitLab Maintainers

修改配置文件后,最好清除 Redis Cache。例如 Gravatar 的 URL 会缓存,今天下午我百思不得其解的小黄锁问题就是由于早先生成的 HTTP URL 被缓存了。清除缓存步骤:

  1. sudo -u git -i
  2. cd gitlab
  3. RAILS_ENV=production bundle exec rake cache:clear

重启 gitlab 服务需要比较长的时间,虽然 sudo service gitlab restart 会立即显示成功,但事实上还是原来的 sidekiq 和 unicorn 在运行。可以用 sudo service gitlab status 和 pstree -pa 来查看 gitlab 服务的状态。如果发现“残余进程”,要 kill 掉再 sudo service gitlab start。

如果 gitlab 服务起不来,可以查看 ~git/gitlab/log/ 里的日志文件。

注意,从 StartSSL 申请的免费证书是 intermediate CA 签发的,为了在 git clone 和 curl 中正常使用,需要 cat intermediate.CA.crt >> gitlab.crt,把自己的证书和 intermediate CA 证书连接在一起。