Nginx + ngx_pagespeedをソースからインストールするのをChefで

ngx_pagespeed

今まではubuntuのパッケージからインストールしたNginxを使っていましたが、Googleが提供しているNginx用のPageSpeedモジュールを試してみたかったので、仕方なくソースからインストールし直すことに。それのChefのレシピを作ってみたのでメモ

Nginx with ngx_pagespeed

作ったレシピはこちら
nginx+ngx_pagespeed

インストール環境・バージョン

  • Ubuntu 12.04
  • Nginx 1.4.4
  • ngx_pagespeed-1.7.30.2-beta

ngx_pagespeedモジュールを追加したNginxのインストール方法はこちら
でも今回は使用可能モジュールなどをパッケージインストールしたもの(http_gzip_static_moduleなど)となるべく同じにしたかったので、./configure部分は以下のようにしました。

  ./configure --prefix=/etc/nginx \
  --conf-path=/etc/nginx/nginx.conf \
  --error-log-path=/var/log/nginx/error.log \
  --http-client-body-temp-path=/var/lib/nginx/body \
  --http-fastcgi-temp-path=/var/lib/nginx/fastcgi \
  --http-log-path=/var/log/nginx/access.log \
  --http-proxy-temp-path=/var/lib/nginx/proxy \
  --http-scgi-temp-path=/var/lib/nginx/scgi \
  --http-uwsgi-temp-path=/var/lib/nginx/uwsgi \
  --lock-path=/var/lock/nginx.lock \
  --pid-path=/var/run/nginx.pid \
  --with-debug \
  --with-http_addition_module \
  --with-http_dav_module \
  --with-http_geoip_module \
  --with-http_gzip_static_module \
  --with-http_image_filter_module \
  --with-http_realip_module \
  --with-http_stub_status_module \
  --with-http_ssl_module \
  --with-http_sub_module \
  --with-http_xslt_module \
  --with-ipv6 \
  --with-sha1=/usr/include/openssl \
  --with-md5=/usr/include/openssl \
  --with-mail \
  --with-mail_ssl_module \
  --add-module=/usr/share/nginx/ngx_pagespeed-1.7.30.2-beta

Opscodeが提供しているnginxのcookbookもありますが、モジュールや設定ファイルの値などを柔軟に設定できる分それらの設定項目が多すぎるのでとりあえず簡単にインストールできるものということで作りました。
なので設定項目はなくて皆上記の設定でインストールされます。Chefのattributeに変数を用意してテンプレートに埋め込んだりということしてません。nginx.confなども適当なものにしました。

vagrantやknife-soloなどでchefを実行して無事成功したら、ブラウザでサーバにアクセス。

表示されました! 新しいNginxのWelcome画面は今までと違いますね。

vagrant-awsを利用してEC2にインストールしたかったんですが、t1.microだと

collect2: ld terminated with signal 9 [Killed]

が出て途中で終了してしまいました。サーバにssh接続して手動でインストールすれば大丈夫なんですがこれはしょうがないんでしょうか・・・m1.smallならうまくインストールされました。

今回意外にインストールに時間がかかってしまったので、これからngx_pagespeedを試していきたいと思います。