Phusion Passenger
Bài đăng này đã không được cập nhật trong 6 năm
Passenger
Passenger là 1 mã nguồn mở web application server cho ruby. Nó đảm nhận việc handle các HTTP request, quản lý các processes và resources. Nó cũng cho phép chúng ta xem và phân tích các vấn đề. Passenger rất dễ sử dụng và deploy lên production.
Passenger là 1 app server kiểu như (puma, unicorn, torquebox). Nginx, Apache là 1 web server.
Khi đó passenger sẽ giúp bạn tự động kết nối giữa web apps và web server
Nếu như trước kia ta hay dùng unicorn để kết nối rails apps với web server và capistrano để tự động compile assets, đóng gói code ... thì nay bạn có thể sử dụng passerger bởi nó hiện đại và triển khai dễ dàng hơn nhiều. Dưới đây là bẳng so sánh tốc độ. Có thể nói passenger chạy nhanh gấp 4 lần so với các ruby web server khác.

Chúng ta đều biết Unicorn, Puma, Torquebox đều khác nhanh vì vậy để nhanh hơn 2 -> 4 lần là điều hết sức khó khăn. Tuy vậy có khá nhiều lý do giúp cho Phusion Passenger nhanh hơn.
các bạn có thể tham khảo tại link trên.
Deploy với phusion passenger và nginx
-
Cài đặt nginx và start nginx
sudo apt-get update sudo apt-get install nginx sudo service nginx startNginx như nói ở trên sẽ là 1 web server, có tác dụng sẽ gửi request từ user lên app server. Nếu request không thay đổi thưởng xuyên như css, js thì web server có thể giải quyết được mà không cần tương tác với app. Như vậy tốc độ xử lý sẽ nhanhhown.
-
Cài đặt passenger
Bạn có thể cài đặt thông qua gem passenger
gem install passengerkết nối module với nginx
rvmsudo passenger-install-nginx-moduleHoặc cài qua apt
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 561F9B9CAC40B2F7tiếp đến tạo một APT file:
sudo nano /etc/apt/sources.list.d/passenger.listCấp quyền cho file và save lại
sudo chown ubuntu: /etc/apt/sources.list.d/passenger.list sudo chmod 600 /etc/apt/sources.list.d/passenger.listUpdate và cài đặt passenger với nginx
sudo apt-get update sudo apt-get install nginx-extras passengerOK vậy là đã cài đặt thành công passenger
-
Config nginx
Mở file /etc/nginx/nginx.conf và bỏ comment ở 2 dòng
# passenger_root /usr/lib/ruby/vendor_ruby/phusion_passenger/locations.ini; # passenger_ruby /usr/bin/ruby;Nếu không thấy thì ta có thể thêm vào trong block http
http { passenger_root /usr/lib/ruby/vendor_ruby/phusion_passenger/locations.ini; passenger_ruby /usr/bin/ruby; } -
Restart nginx
sudo service nginx restart -
Kiểm tra validate installation
rvmsudo passenger-config validate-install * Checking whether this Phusion Passenger install is in PATH... ✓ * Checking whether there are no other Phusion Passenger installations... ✓ -
Kiểm tra các tiến trình
rvmsudo passenger-memory-stats Version: 5.0.8 Date : 2015-05-28 08:46:20 +0200 ... ---------- Nginx processes ---------- PID PPID VMSize Private Name ------------------------------------- 12443 4814 60.8 MB 0.2 MB nginx: master process /usr/sbin/nginx 12538 12443 64.9 MB 5.0 MB nginx: worker process ### Processes: 3 ### Total private dirty RSS: 5.56 MB ----- Passenger processes ------ PID VMSize Private Name -------------------------------- 12517 83.2 MB 0.6 MB PassengerAgent watchdog 12520 266.0 MB 3.4 MB PassengerAgent server 12531 149.5 MB 1.4 MB PassengerAgent logger ... -
Tạo các môi trường rails app, database, bundle, gem
VD app
/var/www/html/passenger-app/publicchứa source code của app -
Config web server Tạo 1 file config kết nối với rails app của bạn
passenger-appsudo vi /etc/nginx/sites-available/passenger-appThêm config
server { listen 80 default_server; server_name www.xxx.com; passenger_enabled on; root /var/www/html/passenger-app/public; }Save và tạo symlink
sudo ln -s /etc/nginx/sites-available/passenger-app /etc/nginx/sites-enabled/passenger-app -
Reset lại nginx và xem thành quả
sudo service nginx restart
All rights reserved