Thứ năm, 09/10/2014 | 00:00 GMT+7

Cách triển khai ứng dụng Rails với Passenger và Nginx trên Ubuntu 14.04

Nếu bạn là nhà phát triển Ruby on Rails, bạn có thể cần một web server để lưu trữ các ứng dụng web của bạn . Hướng dẫn này chỉ cho bạn cách sử dụng Phusion Passenger làm web server thân thiện với Rails của bạn. Passenger rất dễ cài đặt, cấu hình và bảo trì và nó được dùng với Nginx hoặc Apache. Trong hướng dẫn này, ta sẽ cài đặt Passenger với Nginx trên Ubuntu 14.04.

Một phương pháp thay thế để triển khai ứng dụng Rails của bạn là Cài đặt Rails 1 lần nhấp này sử dụng Nginx với Unicorn , một server HTTP có thể xử lý nhiều yêu cầu đồng thời.

Đến cuối hướng dẫn này, bạn sẽ có một ứng dụng Rails thử nghiệm được triển khai trên web server Passenger / Nginx của bạn và có thể truy cập thông qua domain hoặc địa chỉ IP.

Bước một - Tạo server của bạn

Tạo một server Ubuntu 14.04 mới. Đối với các trang web nhỏ hơn, chỉ cần gói 512 MB là đủ.

Kích thước  server

Bạn có thể cần chọn hình ảnh Ubuntu 32-bit vì tiêu thụ bộ nhớ nhỏ hơn (các chương trình 64-bit sử dụng bộ nhớ nhiều hơn khoảng 50% so với các chương trình 32-bit). Tuy nhiên, nếu bạn cần một máy lớn hơn hoặc có khả năng nâng cấp lên hơn 4 GB RAM thì bạn nên chọn version 64-bit.

Hình ảnh  server  nước

Bước hai - Thêm user Sudo

Sau khi Server được tạo, công việc quản trị hệ thống bổ sung là cần thiết. Bạn nên tạo user hệ thống và bảo mật server .

Làm theo bài viết Cài đặt server ban đầu .

Trong hướng dẫn này, bạn nên tạo một user cơ bản với các quyền sudo. Ta sẽ sử dụng user rail trong ví dụ này. Nếu user của bạn có tên khác, hãy đảm bảo bạn sử dụng đường dẫn chính xác trong các bước tiếp theo.

Bước ba (Tùy chọn) - Cài đặt domain của bạn

Để đảm bảo trang web sẽ được hiển thị và hiển thị, bạn cần cài đặt các bản ghi DNS để hướng domain của bạn đến server mới. Bạn có thể tìm thêm thông tin về cách cài đặt tên server bằng cách nhấp vào liên kết.

Tuy nhiên, bước này là tùy chọn, vì bạn có thể truy cập trang web của bạn thông qua địa chỉ IP.

Bước 4 - Cài đặt Ruby

Ta sẽ cài đặt Ruby theo cách thủ công từ nguồn.

Trước khi làm bất kỳ điều gì khác, ta nên chạy bản cập nhật đảm bảo rằng tất cả các gói ta muốn cài đặt đều được cập nhật:

sudo apt-get update 

Tiếp theo, cài đặt một số phụ thuộc. Điều này sẽ giúp quá trình cài đặt diễn ra suôn sẻ nhất có thể:

sudo apt-get install build-essential libssl-dev libyaml-dev libreadline-dev openssl curl git-core zlib1g-dev bison libxml2-dev libxslt1-dev libcurl4-openssl-dev nodejs libsqlite3-dev sqlite3 

Tạo một folder tạm thời cho các file nguồn Ruby:

mkdir ~/ruby 

Di chuyển đến folder mới:

cd ~/ruby 

Download mã nguồn Ruby ổn định mới nhất. Tại thời điểm viết bài này, đây là version 2.1.3. Bạn có thể tải version mới nhất hiện tại từ trang web Download Ruby . Nếu có version mới hơn, bạn cần phải thay thế liên kết trong lệnh sau:

wget http://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.3.tar.gz 

Extract file đã download :

tar -xzf ruby-2.1.3.tar.gz 

Chọn folder đã extract :

cd ruby-2.1.3 

Chạy tập lệnh cấu hình . Điều này sẽ mất một chút thời gian vì nó kiểm tra các phụ thuộc và tạo một Makefile mới, sẽ chứa các bước cần thực hiện để biên dịch mã:

./configure 

Chạy tiện ích make sẽ sử dụng Makefile để xây dựng chương trình thực thi. Bước này có thể lâu hơn một chút:

make 

Bây giờ, chạy lệnh tương tự với tham số cài đặt . Nó sẽ cố gắng sao chép các file binary đã biên dịch vào folder /usr/local/bin . Bước này yêu cầu quyền truy cập root để ghi vào folder này. Nó cũng sẽ mất một chút thời gian:

sudo make install 

Ruby bây giờ sẽ được cài đặt trên hệ thống. Ta có thể kiểm tra nó bằng lệnh sau, lệnh này sẽ in ra version Ruby:

ruby -v 

Cuối cùng, ta có thể xóa folder tạm thời:

rm -rf ~/ruby 

Bước 5 - Cài đặt Passenger và Nginx

Phương pháp ưa thích để cài đặt Passenger trước đây là sử dụng cài đặt chung thông qua RubyGems (customer passenger-install-nginx-module ).

Tuy nhiên, bây giờ bạn có thể cài đặt Passenger trên Ubuntu bằng Công cụ đóng gói nâng cao (APT), công cụ ta sẽ sử dụng. Theo cách này, quá trình cài đặt và - thậm chí quan trọng hơn - quá trình cập nhật cho Passenger với Nginx, thực sự đơn giản.

Trước tiên, hãy cài đặt khóa PGP:

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 561F9B9CAC40B2F7 

Tạo file nguồn APT (bạn cần quyền sudo):

sudo nano /etc/apt/sources.list.d/passenger.list 

Và chèn dòng sau vào file :

deb https://oss-binaries.phusionpassenger.com/apt/passenger trusty main 

Nhấn CTRL + x để thoát, nhập y để lưu file , sau đó nhấn ENTER để xác nhận vị trí file .

Thay đổi chủ sở hữu và quyền cho file này:

sudo chown root: /etc/apt/sources.list.d/passenger.list sudo chmod 600 /etc/apt/sources.list.d/passenger.list 

Cập nhật cache APT:

sudo apt-get update 

Cuối cùng, cài đặt Passenger với Nginx:

sudo apt-get install nginx-extras passenger 

Bước này sẽ overrides version Ruby của ta thành version cũ hơn. Để giải quyết vấn đề này, chỉ cần xóa vị trí Ruby không chính xác và tạo một softlink mới cho đúng file binary Ruby:

sudo rm /usr/bin/ruby sudo ln -s /usr/local/bin/ruby /usr/bin/ruby 

Bước 6 - Cài đặt web server

Mở file cấu hình Nginx:

sudo nano /etc/nginx/nginx.conf 

Tìm các dòng sau, trong khối http :

# passenger_root /usr/lib/ruby/vendor_ruby/phusion_passenger/locations.ini; # passenger_ruby /usr/bin/ruby; 

Bỏ ghi chú cả hai. Cập nhật đường dẫn trong dòng passenger_ruby. Chúng sẽ trông như thế này:

passenger_root /usr/lib/ruby/vendor_ruby/phusion_passenger/locations.ini; passenger_ruby /usr/local/bin/ruby; 

Lưu và thoát khỏi file .

Bước bảy - Triển khai

Đến đây, bạn có thể triển khai ứng dụng Rails của riêng mình nếu bạn đã sẵn sàng. Nếu bạn muốn triển khai một ứng dụng hiện có, bạn có thể tải dự án của bạn lên server và chuyển sang bước /etc/nginx/sites-available/default .

Đối với hướng dẫn này, ta sẽ tạo một ứng dụng Rails mới trực tiếp trên Server. Ta cần một viên ngọc rails để tạo ứng dụng mới.

Di chuyển đến folder chính của user của bạn (nếu không, bạn sẽ gặp lỗi No such file or directory - getcwd ) -

cd ~ 

Cài đặt gem rails (không cần thêm tài liệu để cài đặt nhanh hơn). Quá trình này vẫn sẽ mất vài phút:

sudo gem install --no-rdoc --no-ri rails 

Bây giờ ta có thể tạo một ứng dụng mới. Trong ví dụ của ta , ta sẽ sử dụng tên testapp . Nếu bạn muốn sử dụng một tên khác, hãy đảm bảo bạn sử dụng các đường dẫn chính xác. Ta sẽ bỏ qua cài đặt Bundler vì ta muốn chạy nó theo cách thủ công sau này.

rails new testapp --skip-bundle 

Nhập folder :

cd testapp 

Bây giờ ta cần cài đặt một môi trường thực thi JavaScript. Nó có thể được cài đặt dưới dạng đá quý therubyracer . Để cài đặt nó, hãy mở Gemfile :

nano Gemfile 

Tìm dòng sau:

# gem 'therubyracer',  platforms: :ruby 

Và bỏ ghi chú nó:

gem 'therubyracer',  platforms: :ruby 

Lưu file và chạy Bundler:

bundle install 

Ta cần tắt cấu hình Nginx mặc định. Mở file cấu hình Nginx:

sudo nano /etc/nginx/sites-available/default 

Tìm các dòng:

listen 80 default_server; listen [::]:80 default_server ipv6only=on; 

Comment chúng ra, như thế này:

# listen 80 default_server; # listen [::]:80 default_server ipv6only=on; 

Lưu các file .

Bây giờ, hãy tạo file cấu hình Nginx cho ứng dụng của ta :

sudo nano /etc/nginx/sites-available/testapp 

Thêm khối server sau. Các cài đặt được giải thích bên dưới.

server {   listen 80 default_server;   server_name www.mydomain.com;   passenger_enabled on;   passenger_app_env development;   root /home/rails/testapp/public; } 

Trong file này, ta bật tính năng lắng nghe trên cổng 80, đặt domain của bạn, kích hoạt Hành khách và đặt folder root thành folder công khai của dự án mới của ta . Dòng gốc là dòng bạn cần chỉnh sửa để phù hợp với vị trí tải lên của ứng dụng Rails.

Nếu không muốn chỉ định domain của bạn cho ứng dụng này, bạn có thể bỏ qua dòng server_name hoặc sử dụng địa chỉ IP của bạn .

Để kiểm tra cài đặt của ta , ta muốn xem trang Chào mừng bạn lên tàu . Tuy nhiên, điều này chỉ hoạt động nếu ứng dụng được khởi động trong môi trường phát triển. Hành khách bắt đầu ứng dụng trong môi trường production theo mặc định, vì vậy ta cần phải thay đổi điều này với passenger_app_env tùy chọn. Nếu ứng dụng của bạn đã sẵn sàng để production , bạn cần loại bỏ cài đặt này.

Lưu file ( CTRL + x , y , ENTER ).

Tạo một softlink cho nó:

sudo ln -s /etc/nginx/sites-available/testapp /etc/nginx/sites-enabled/testapp 

Khởi động lại Nginx:

sudo nginx -s reload 

Bây giờ trang web của ứng dụng của bạn có thể truy cập được. Điều hướng đến domain hoặc địa chỉ IP của Server:

http://server_ip_address 

Và xác minh kết quả:

Trang thử nghiệm

Bạn sẽ thấy ứng dụng thử nghiệm Rails trực tiếp trên server của bạn .

Bước 8 - Cập nhật thường xuyên

Để cập nhật Ruby, bạn cần phải biên dịch version mới nhất như trong Bước Bốn trong hướng dẫn này.

Để cập nhật Hành khách với Nginx, bạn cần chạy bản cập nhật hệ thống cơ bản:

sudo apt-get update && sudo apt-get upgrade 

Tuy nhiên, nếu có version Ruby hệ thống mới, nó có thể sẽ overrides lên Ruby của ta (được cài đặt từ nguồn). Vì lý do này, bạn có thể cần phải chạy lại các lệnh để xóa version Ruby hiện có và tạo một softlink mới cho file binary Ruby. Chúng được liệt kê ở cuối Bước Năm trong hướng dẫn này.

Sau quá trình cập nhật, bạn cần khởi động lại web server :

sudo service nginx restart 

Tags:

Các tin liên quan

Cách tạo profile AppArmor cho Nginx trên Ubuntu 14.04
2014-10-06
Cách cấu hình Nginx với SSL làm Reverse Proxy cho Jenkins
2014-09-23
Cách thiết lập nhiều trang web WordPress với Nginx trên Ubuntu 14.04
2014-08-21
Cách cài đặt và bảo mật phpMyAdmin với Nginx trên server Ubuntu 14.04
2014-08-06
Cách cài đặt và bảo mật phpMyAdmin với Nginx trên server CentOS 7
2014-08-06
Cách cài đặt Nginx trên CentOS 7
2014-07-22
Cách tạo chứng chỉ ECC trên Nginx cho Debian 7
2014-07-21
Cách thiết lập cân bằng tải Nginx với kết thúc SSL
2014-07-17
Cách cài đặt Laravel với web server Nginx trên Ubuntu 14.04
2014-06-24
Cách cài đặt gpEasy CMS với NGINX và PHP5-FPM trên Debian 7
2014-06-03