Thứ sáu, 21/11/2014 | 00:00 GMT+7

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

Trong hướng dẫn này, ta sẽ trình bày cách cài đặt Phusion Passenger làm web server thân thiện với Rails của bạn, dễ cài đặt, cấu hình và bảo trì. Ta sẽ tích hợp nó vào Apache trên Ubuntu 14.04. Vào cuối hướng dẫn này, ta sẽ có một ứng dụng Rails thử nghiệm được triển khai trên Server của ta .

Nếu bạn thích Nginx hơn Apache, hãy xem cách triển khai ứng dụng Rails với Passenger và Nginx trên Ubuntu 14.04 theo liên kết.

Yêu cầu

Bước đầu tiên là tạo một server mới. Đối với các trang web nhỏ hơn, chỉ cần sử dụng gói 512 MB là đủ.

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 bạn sẽ nâng cấp lên hơn 4 GB RAM, bạn nên xem xét version 64-bit.

Đảm bảo sử dụng Ubuntu 14.04. Tại thời điểm viết bài này, Ubuntu 14.10 chưa có repository Passanger APT. Hơn nữa, Ubuntu 14.04 có một lợi ích bổ sung: đó là version LTS, viết tắt của “hỗ trợ lâu dài”. Các bản phát hành LTS được thiết kế để trở thành nền tảng ổn định mà ta có thể gắn bó lâu dài. Ubuntu đảm bảo các bản phát hành LTS sẽ nhận được các bản cập nhật bảo mật và các bản sửa lỗi khác trong 5 năm.

  • Ubuntu 14.04 32-bit Server

Bước 1 - Thêm user Sudo

Sau khi Server được tạo, bạn nên tạo user hệ thống và bảo mật server . Bạn có thể làm như vậy theo bài viết Cài đặt server ban đầu .

Nếu bạn muốn làm theo hướng dẫn này, bạn cần một user cơ bản có 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 2 (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 3 - 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ố thư viện và các phụ thuộc khá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 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.4. Bạn có thể tải version mới nhất hiện tại từ trang web 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.4.tar.gz 

Extract file đã download :

tar -xzf ruby-2.1.4.tar.gz 

Chọn folder đã extract :

cd ruby-2.1.4 

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 , tiện ích này 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:

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 

Nếu quá trình cài đặt Ruby của bạn thành công, bạn sẽ thấy kết quả như sau:

ruby 2.1.4p265 (2014-10-27 revision 48166) [x86_64-linux] 

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

rm -rf ~/ruby 

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

Để cài đặt Apache, gõ lệnh sau:

sudo apt-get install apache2 

Vâng đó là tất cả!

Bước 5 - Cài đặt Hành khách

Đầu tiên, cài đặt khóa PGP cho server repository :

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

Tạo file nguồn APT:

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

Chèn dòng sau để thêm repository Hành khách 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 đối với file này để hạn chế quyền truy cập vào root :

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:

sudo apt-get install libapache2-mod-passenger 

Đảm bảo module Apache hành khách; nó có thể đã được kích hoạt:

sudo a2enmod passenger 

Khởi động lại Apache:

sudo service apache2 restart 

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 - 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/apache2/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 đá quý rails để tạo ứng dụng mới.

Di chuyển đến folder chính của user của bạn:

cd ~ 

Cài đặt gem rails mà không cần tài liệu bổ sung, giúp 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 tên khác, hãy đảm bảo bạn cập nhật đường dẫn trong các lệnh và file khác trong phần này.

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ó, trước tiên hãy mở Gemfile :

nano Gemfile 

Tìm dòng sau:

# gem 'therubyracer',  platforms: :ruby 

Bỏ ghi chú nó:

gem 'therubyracer',  platforms: :ruby 

Lưu file và chạy Bundler:

bundle install 

Bây giờ, ta cần tạo một file server ảo cho dự án của bạn . Ta sẽ thực hiện việc này bằng cách sao chép server ảo Apache mặc định:

sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/testapp.conf 

Mở file cấu hình:

sudo nano /etc/apache2/sites-available/testapp.conf 

Chỉnh sửa hoặc thay thế các nội dung hiện có để kết quả cuối cùng của bạn trùng với file được hiển thị bên dưới. Những thay đổi bạn cần thực hiện được đánh dấu màu đỏ . Hãy nhớ sử dụng domain của bạn và đường dẫn chính xác đến ứng dụng Rails của bạn:

<VirtualHost *:80>     ServerName example.com     ServerAlias www.example.com     ServerAdmin webmaster@localhost     DocumentRoot /home/rails/testapp/public     RailsEnv development     ErrorLog ${APACHE_LOG_DIR}/error.log     CustomLog ${APACHE_LOG_DIR}/access.log combined     <Directory "/home/rails/testapp/public">         Options FollowSymLinks         Require all granted     </Directory> </VirtualHost> 

Về cơ bản, file này cho phép nghe domain của ta trên cổng 80, đặt alias cho domain phụ www , đặt địa chỉ thư của administrator server của ta , đặt folder root cho folder công khai của dự án mới của ta và cho phép truy cập vào trang web của ta . Bạn có thể tìm hiểu thêm về server ảo Apache theo liên kết.

Để 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. Passenger khởi động ứng dụng trong môi trường production theo mặc định, vì vậy ta cần thay đổi điều này bằng tùy chọn RailsEnv . 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.

Nếu bạn 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 ServerNameServerAlias hoặc sử dụng địa chỉ IP của bạn .

Lưu file (CTRL + X, Y, ENTER).

Tắt trang web mặc định, kích hoạt trang web mới của bạn và khởi động lại Apache:

sudo a2dissite 000-default sudo a2ensite testapp sudo service apache2 restart 

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 

Xác minh ứng dụng của bạn đã được triển khai. Bạn sẽ thấy ứng dụng tùy chỉnh của bạn hoặc trang Chào mừng lên đường ray mặc định:

Trang thử nghiệm

Ứng dụng Rails hiện đã có trên server của bạn.

Bước 7 - 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 4 trong hướng dẫn này.

Để cập nhật Passenger và Apache, 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 chạy lại các lệnh để loại bỏ softlink hiện có khỏi file binary Ruby và tạo một liên kết mới (đúng). Chúng được liệt kê ở cuối Bước 6 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 apache2 restart 

Tags:

Các tin liên quan

Cách sử dụng JRuby để chạy ứng dụng Rails trên Apache Tomcat 7 và Ubuntu 14.04
2014-11-14
Cách cấu hình quyền truy cập WebDAV với Apache trên Ubuntu 14.04
2014-09-22
Cách cài đặt và bảo mật phpMyAdmin với Apache trên server CentOS 7
2014-08-07
Cách sử dụng Apache JMeter để thực hiện kiểm tra tải trên web server
2014-06-24
Cách cấu hình OCSP Stapling trên Apache và Nginx
2014-06-12
Cách tạo chứng chỉ SSL trên Apache cho Ubuntu 14.04
2014-04-23
Cách thiết lập server ảo Apache trên Ubuntu 14.04 LTS
2014-04-22
Cách cài đặt Apache Tomcat 7 trên Ubuntu 14.04 qua Apt-Get
2014-04-18
Cách thiết lập server ảo Apache trên Ubuntu 13.10
2014-04-16
Cách chạy Django với mod_wsgi và Apache với môi trường Python virtualenv trên VPS Debian
2014-04-10