Latest Post

Tăng thứ hạng và truy cập tự nhiên với 10 phương pháp SEO hay nhất Kiếm Tiền Online (mmo): Khái Niệm và Các Hình Thức Phổ Biến

Khi bạn đã hoàn thành việc phát triển ứng dụng hoặc trang web bằng Ruby on Rails, bước tiếp theo là đưa sản phẩm của bạn lên internet để người dùng có thể truy cập. Trong bài viết này, chúng ta sẽ tìm hiểu cách chuyển đổi ứng dụng Rails (hoặc trang web) sang chế độ Production Mode.

Chạy ứng dụng Rails ở chế độ Production

Bài hướng dẫn bắt đầu bằng việc triển khai ứng dụng Rails 5 trên một máy chủ sử dụng hệ điều hành Ubuntu.

Bước 1: Vào thư mục chứa source Rails, chạy lệnh bundle để cài đặt các gem cần thiết.

bundle

Bước 2: Tạo secret key (Khóa bảo mật) cho ứng dụng Rails

bin/rake secret

Copy secret key của bạn để thực hiện bước tiếp theo.

Bước 3: Thiết lập các biến môi trường cho Ứng dụng Rails

Sửa file /etc/environment, thêm các biến môi trường sau:

SECRET_KEY_BASE=<secret_key>
RAILS_SERVE_STATIC_FILES=true 
RAILS_ENV=production

Sau đó logout và login lại

Bước 4: Tạo database, migrate bảng CSDL và dữ liệu ở chệ độ Production

rails db:create db:migrate db:seed

Bước 5: Tạo thư mục public/assets chứa các file js, css, images, font… cho web/app Rails

rails assets:precompile

Bước 6: Chạy Rails ở Production Mode

rails s -d -b 127.0.0.1

Với

  • -d : Chạy ứng dựng Rails ở chế độ background
  • -b 127.0.0.1: Để ứng dụng Rails lắng nghe trên địa chỉ IP 127.0.0.1, mục đích của mình sử dụng Nginx để proxy pass sang cổng 80.

Bước 7: Cài đặt nginx server

Mặc định, ứng dụng Rails của bạn sẽ chạy trên cổng 3000, nhưng điều này có thể gây khá nhiều bất tiện. Do đó, để giải quyết vấn đề này, chúng ta sẽ cài đặt Nginx và sử dụng Nginx để chuyển đổi ứng dụng sang cổng 80.

sudo apt install nginx

Bước 8: Cấu hình Nginx để chạy ứng dụng Rails

– Sửa file /etc/nginx/sites-available/default

server {
...
location / {
  proxy_pass http://127.0.0.1:3000;
  proxy_set_header Host $host;
  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  proxy_set_header X-Forwarded-Proto $scheme;
  proxy_set_header X-Forwarded-Port $server_port;
  proxy_set_header X-Forwarded-Host $host;
}
...
}

Giờ bạn có thể truy cập tới web/app Rails của bạn với địa chỉ http://<domain.com>

Nếu bạn thay đổi file css, js thì nhớ chạy 2 lệnh sau để compile lại thư mục assets trên server.

rails assets:clobber
rails assets:precompile

Stop Rails Server

Để dừng và khởi động lại Rails Server ở môi trường Production ta có thể sử dụng các cách sau:

kill -INT $(cat tmp/pids/server.pid)

Hoặc tìm process ID

lsof -wni tcp:3000

Sau đó kill Process ID vừa tìm được bằng command:

kill -9 PID

Các lỗi gặp phải

Khi thực hiện command rails assets:precompile có thể gặp lỗi dưới đây.

Fix lỗi: Uglifier::Error: Unexpected token: punc ((). To use ES6 syntax, harmony mode must be enabled with Uglifier.new(:harmony => true)

Thì sửa file config/environments/production.rb, thay thế

config.assets.js_compressor = :uglifier

Thành

config.assets.js_compressor = Uglifier.new(harmony: true)

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *