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でこの流れを記述すると以下になる
# 次の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_PATH
gemのパスを指定しないと動かないです。
動かないけどエラーとか出ずにデフォルトのgemを使ってインストールされてたりします。
参考:debianやUbuntuでCannot find curl-configエラーが出る。 libcurl4-openssl-dev
を入れ忘れるとpassengerのインストールでこける
Nginxのインストール
Nginxのインストールにはpassenger-install-nginx-module
を利用。
通常は対話式ですがAnsibleで対話は辛いので--auto
のオプションを指定する。
Ansibleではcommandモジュールを使って実行している。
# 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入ってますね!
おわり