LoginSignup
11

More than 5 years have passed since last update.

Ansibleを使ってNginx+Raptor(Phusion Passenger 5)をインストール

Posted at

Raptorの公開

Raptorのベータ版が11月25日に公開されました。
公開される前はUnicornの4倍のスピードがなど話題になってましたね。
蓋を開けてみればPassengerか…みたい感じでしたけど…
まぁ早いならインストールしてみようじゃないか.

参考:Raptor
参考:「RaptorはどのようにしてUnicornの4倍、Puma, Torqueboxの2倍の速度を達成したのか」を読んでまとめてみた

Vagrant+Ansibleでインストール

Vagrant+Ansibleでインストールします。
利用するBoxはubuntu/trusty64(Ubuntu Server 14.04)です。
Ansibleはvagrantのprovisionでshellを選択して、実行しています。
Ansibleをローカル実行する場合は以下の様なコマンドを指定する必要があるかな?

$script = <<SCRIPT
sudo apt-get update
sudo apt-get install python-dev python-setuptools -y
sudo easy_install pip
sudo pip install ansible -U
cd /vagrant
ansible-playbook -i localhost, -c local raptor-playbook.yml
SCRIPT
config.vm.provision :shell, :inline => $script

Passengerをインストール

PassengerのaptリポジトリにRaptor出てたりしないかな?と思ったけど4系しかまだなかったのでgemを使ってインストールする。
Rubyは2.1を使ってますがrbenvするの面倒だったのでBrightboxのaptリポジトリを利用する(Ruby packages for Ubuntu
Ansibleでこの流れを記述すると以下になる

passenger_install
  # 次のapt_repositoryで必要となるパッケージとその後必要となるパッケージのインストール
  - name: apt | pkg install
    apt:  name={{ item }}
      update_cache=yes
    with_items:
      - build-essential
      - libcurl4-openssl-dev
      - python-software-properties

  # brightboxのリポジトリ追加
  - name: apt_repository | add brightbox repo
    apt_repository: repo='ppa:brightbox/ruby-ng'

  # rubyとruby-devインストール
  - name: apt | install ruby
    apt: name={{ item }}
      update_cache=yes
    with_items:
    - ruby2.1
    - ruby2.1-dev

  # Passengerのインストール
  - name: gem | install passenger
    gem: name=passenger
      user_install=no
      pre_release=yes

gemモジュール実行時に
pre_release=yesを忘れると4系がインストールされ、
user_install=noを忘れるとsudo使ってるならrootのローカルにインストールされるのでを気をつけて。
また、rbenvなどでRubyをインストールした場合はexecutable=GEM_PATHgemのパスを指定しないと動かないです。
動かないけどエラーとか出ずにデフォルトのgemを使ってインストールされてたりします。

参考:debianやUbuntuでCannot find curl-configエラーが出る。 libcurl4-openssl-devを入れ忘れるとpassengerのインストールでこける

Nginxのインストール

Nginxのインストールにはpassenger-install-nginx-moduleを利用。
通常は対話式ですがAnsibleで対話は辛いので--autoのオプションを指定する。
Ansibleではcommandモジュールを使って実行している。

nginx_install
  # nginx のグループ作成
  - name: group | add nginx group
    group: name=nginx

  # nginx のユーザ作成
  - name: user | add nginx user
    user: name=nginx
      group=nginx
      shell=/usr/sbin/nologin

  # passenger-install-nginx-moduleを実行 
  #  --auto : 対話式ではなく自動で
  #  --languages ruby : PassengerをRubyで利用
  #  --extra-configure-flags='--user=nginx --group=nginx' : Nginxのインストール時に指定するオプション
  - name: command | install nginx
    command: passenger-install-nginx-module --auto --languages ruby --extra-configure-flags='--user=nginx --group=nginx'

  # 起動スクリプトを取って来て配置
  - name: get_url | get init script
    get_url: url=https://www.linode.com/docs/assets/1139-init-deb.sh
      dest=/etc/init.d/nginx
      mode=0755

  # 起動スクリプトをOS起動時に実行されるようにしつつ、サービススタート
  - name: service | nginx start
    service: name=nginx
      enabled=yes
      state=started

参考:Websites with Nginx on Ubuntu 12.04 LTS (Precise Pangolin) 起動スクリプト考えるの面倒だったので利用

Ansible実行

AnsibleのコードやVagrantfileなどはコチラに
https://github.com/mominosin/ansibe-raptor
実行する場合は

cd ansible-raptor
vagrant up

実行結果

vagrant sshで中に入ってみて、NginxとPassengerが起動しているのを確認する。

$ vagrant ssh
vagrant@vagrant-ubuntu-trusty-64:~$ ps -ef |egrep 'Passenger|nginx'
root     17981     1  0 17:18 ?        00:00:00 PassengerAgent watchdog
root     17984 17981  0 17:18 ?        00:00:00 PassengerAgent server
nobody   17989 17981  0 17:18 ?        00:00:00 PassengerAgent logger
root     17996     1  0 17:18 ?        00:00:00 nginx: master process /opt/nginx/sbin/nginx
nginx    17997 17996  0 17:18 ?        00:00:00 nginx: worker process
vagrant  18078 18057  0 17:19 pts/0    00:00:00 egrep --color=auto Passenger|nginx

ちゃんと起動していますね。あ
っと本当にRaptor入ってるか確認しなきゃ

vagrant@vagrant-ubuntu-trusty-64:~$ passenger -v
Phusion Passenger version 5.0.0.beta1

"Phusion Passenger" is a trademark of Hongli Lai & Ninh Bui.

ちゃんと5.0.0.beta1、つまりRaptor入ってますね!

おわり

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11