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 ServerName
và ServerAlias
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:
Ứ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
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.042014-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