Hướng dẫn cài đặt Play Framework

1. Các phương pháp để chạy Play Framework

  • Play Framework là một web application framework được viết bằng ngôn ngữ Scala xây dụng theo kiến trúc MVC (cho viết web ) và chạy trên nền tảng JVM (Java Virtual Machine)
  • Vì Play được thiết kế để chạy trên JVM nên việc chạy một ứng dụng Play khá giống với cách chạy các ứng dụng web viết bằng Java khác:
  • Hiện tại để chạy một ứng dụng Play ta có những phương pháp sau:
    • Sử dụng JBoss Netty web server
    • Đóng gói thành file War để triển khai như một ứng dụng Java EE
  • Bài viết này sẽ hướng dẫn các bạn cài đặt Nginx làm front-end HTTP server cho ứng dụng Play Framework (chạy JBoss Netty web server)

2. Cài đặt Nginx làm front-end HTTP server cho Play Framework

2.1. Tại sao không dùng trực tiếp JBoss Netty web server làm front-end

  • Nginx có thể làm proxy server => tăng tốc độ phản hồi của những request từ người dùng
  • Nginx cho tốc độ phản hồi từ những file tĩnh tốt hơn
  • Nginx hỗ trợ cân bằng tải (trong trường hợp website có lượng người dùng lớn)
  • Và quan trọng nhất là: Nginx hỗ trợ tốt việc streaming các file video, audio trong khi với Netty người lập trình phải tự cài đặt streaming trên ứng dụng của mình (streaming video, audio là bắt buộc phải có nếu muốn chạy video, audio trên các thiết bị di động chạy iOS do những thiết bị này bị hạn chế về dung lượng lưu trữ)

2.2. Cài đặt

  • Bước 1: Cài đặt Nginx

  • Bước 2: Cấu hình file Nginx

    user  nginx;
    worker_processes  1;
    
    error_log  /var/log/nginx/error.log warn;
    pid        /var/run/nginx.pid;
    
    events {
        worker_connections  1024;
    }
    
    http {
        include	  /etc/nginx/mime.types;
        default_type  application/octet-stream;
    
        log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                          '$status $body_bytes_sent "$http_referer" '
                          '"$http_user_agent" "$http_x_forwarded_for"';
    
        access_log  /var/log/nginx/access.log  main;
    
        sendfile        on;
        #tcp_nopush     on;
    
        keepalive_timeout  65;
    
        #gzip  on;
    
        #Định nghĩa danh sách các server chạy Play
        upstream my-backend {
          server 127.0.0.1:9000;
        }
    
       
        server {
            listen               80;
    
            server_name www.example.com example.com;
    
            # Điều hướng các đến trang web của mình về server Play
            location / {
               proxy_pass  http://my-backend;
            }
            
            # Điều hướng các file tĩnh cho Nginx xử lý
            location /assets/ {
                alias /var/www/public; #Địa chỉ thư mục chứa các file tĩnh
                autoindex off;
            }
        }    
    }
     
  • Bước 3: Khởi động Play

    Khởi động ứng dụng Play bằng các câu lệnh play => chạy start hoặc run (Lưu ý là không chạy ứng dụng Play ở cổng 80, vì cổng 80 đang đang được sử dụng bởi Nginx)
  • Bước 4: Khởi động lại Nginx

    service nginx restart