Triển khai EzyPlatform trên Ubuntu

Cập nhật lúc 1750902725000
EzyPlatform có thể triển khai trên các hệ điều hành khác nhau, tuy nhiên tốt nhất và là các hệ điều hành linux như ubuntu hay centos để đảm bảo khả năng khởi động lại một cách tự động. Ở đây tôi sẽ sử dụng hệ điều hành ubuntu .

Bổ sung ssh public keys

Bổ sung ssh public keys để đăng nhập cho tiện

mkdir -p ~/.ssh
nano ~/.ssh/authorized_keys
# add key và close

Thay đổi timezone

timedatectl list-timezones | grep <keyword>
sudo timedatectl set-timezone your_time_zone
timedatectl

Cài đặt tường lửa

Lưu ý chỉ cần cài cho những loại server hoặc vps mà nhà cung cấp chưa có dịch vụ tường lửa.

Tham khảo: How To Set Up a Firewall with UFW on Ubuntu 20.04

sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow ssh
sudo ufw enable
sudo ufw allow http
sudo ufw allow https

Nếu ứng dụng của bạn có sử dụng socket và websocket, bạn sẽ cần mở thêm các port.

  1. 3005 cho socket
  2. 2208 nếu bạn chỉ sử dụng ws.
  3. 2812 nếu bạn sử dụng wss.
  4. 2611 nếu bạn sử dụng udp.
sudo ufw allow 3005
sudo ufw allow 2208
sudo ufw allow 2812
sudo ufw allow 2611/udp

Cài đặt mysql

Tham khảo: How To Install MySQL on Ubuntu 20.04 .

sudo apt update
sudo apt install mysql-server
sudo systemctl start mysql.service

Cấu hình mysql

sudo mysql
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '<new password>';
exit
mysql -u root -p
ALTER USER 'root'@'localhost' IDENTIFIED WITH auth_socket;
exit
sudo mysql_secure_installation

Tạo database

CREATE SCHEMA `new_schema` DEFAULT CHARACTER SET utf8 COLLATE utf8_bin ;

Tạo user mới, ví dụ:

CREATE USER '<username>'@'localhost' IDENTIFIED BY '<password>';
GRANT ALL PRIVILEGES ON new_schema . * TO '<username>'@'localhost';

Cài đặt nginx

Tham khảo: How To Install Nginx on Ubuntu 20.04

sudo apt update
sudo apt install nginx
systemctl status nginx

Khởi động lại nginx:

sudo systemctl stop nginx
sudo systemctl start nginx
sudo systemctl restart nginx
sudo systemctl reload nginx

Xoá file default tại 2 thư mục /etc/nginx/sites-enabled/etc/nginx/sites-available.

Di chuyển vào thư mục /etc/nginx/sites-enabled và tạo lần lượt 2 file cho site public và site admin.

Site public, ví dụ :

server {
    server_name <host name>;

    location / {
        proxy_set_header X-Forwarded-For $remote_addr;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header Host $http_host;
        proxy_pass "http://127.0.0.1:8080";
        client_max_body_size 50M;
    }
}

Nếu bạn muốn thêm Cache-Control header cho web bạn có thể bổ sung:

 location ~* \.(css|js|woff|woff2|ttf|gif|jpg|jpeg|png|svg|webp)$ {
        expires 1h;
        add_header Cache-Control "public, max-age=3600";
        proxy_pass "http://127.0.0.1:8080";
}

Nếu bạn muốn chỉ định trình duyệt cache cả các tập tin âm thanh và video, bạn có thể bổ sung:

location ~* .(mp3|mp4|ogg)$ {
        expires 24h;
        add_header Cache-Control "public, max-age=86400";
        add_header Accept-Ranges bytes;
        proxy_pass "http://127.0.0.1:8080";
}

Site admin, ví dụ admin.:

server {
    server_name admin.<host name>;

    location / {
        proxy_set_header X-Forwarded-For $remote_addr;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header Host $http_host;
        proxy_pass "http://127.0.0.1:9090";
        client_max_body_size 100M;
    }
}

Nếu bạn muốn thêm Cache-Control header cho admin bạn có thể bổ sung:

 location ~* \.(css|js|woff|woff2|ttf|gif|jpg|jpeg|png|webp)$ {
        expires 24h;
        proxy_pass "http://127.0.0.1:9090";
}

Kiểm tra cấu hình nginx: sudo nginx -t, nếu hiển thị thế này thì ok.

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Khởi động lại nginx

sudo systemctl reload nginx

Cài đặt certbot

sudo apt install certbot python3-certbot-nginx
sudo certbot

Sau khi sử dụng certbot xong có thể file cấu hình sẽ bị thay đổi thế này:

server {
    server_name admin.tvd12.com;

    location / {
        proxy_set_header X-Forwarded-For $remote_addr;
        proxy_set_header Host $http_host;
        proxy_pass "http://127.0.0.1:9090";
        client_max_body_size 100M;
    }

    listen 443 ssl; # managed by Certbot
    ssl_certificate /etc/letsencrypt/live/tvd12.com/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/tvd12.com/privkey.pem; # managed by Certbot
    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot

}
server {
    listen 80;
    server_name admin.tvd12.com;
}
server {
    if ($host = admin.tvd12.com) {
        return 301 https://$host$request_uri;
    } # managed by Certbot


    server_name admin.tvd12.com;
    listen 80;
    return 404; # managed by Certbot
}

Nó bị thừa đoạn:

server {
    listen 80;
    server_name admin.tvd12.com;
}

Hãy xoá đoạn này đi và khởi động lại nginx: sudo systemctl reload nginx.

Cài đặt JDK 8

Tham khảo: How To Install Java with Apt on Ubuntu 20.04.

sudo apt update
java -version

Chạy 2 câu lệnh này sẽ hiển thị ra danh sách cái cài đặt của java.

apt install default-jre            
apt install openjdk-11-jre-headless
apt install openjdk-8-jre-headless 
apt install openjdk-9-jre-headless

Chọn apt install openjdk-8-jre-headless.

Cài đặt JAVA_HOME, sử dụng vim để thêm biến vào .bash_profile:

export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-amd64

Sau đó chạy: source ~/.bash_profile để áp dụng.

Cài đặt ezyplatform

Bạn có thể tải bản mới nhất từ Home về sau đó sử dụng công cụ để copy lên server, hoặc là sử dụng wgetinspect nút download tại Home để lấy bản mới nhất, ví dụ:

wget https://ezyplatform.com/api/v1/platforms/0.6.5/download && mv download ezyplatform.zip

Sau đó unzip file: unzip ezyplatform.zip.

Tìm đến folder ezyplatform/settings và thay đổi file setup.properties (ví dụ: nano settings/setup.properties) với các thông tin cơ sở dữ liệu bạn đã tạo trước đó, ví dụ:

datasource.jdbc_url=jdbc:mysql://localhost:3306/<databaseName>
datasource.driver_class_name=com.mysql.cj.jdbc.Driver
datasource.username=<username>
datasource.password=<password>
tables.create_manually=false

Bắt đầu hãy start bằng chế độ console trước để xem có lỗi gì không:

bash cli.sh "console admin"
Nếu bạn thấy ở console in ra EZHTTP READYvà không có exception gì nghĩa là việc khởi động đã thành công.

Từ đây hãy giả sử website tôi đang cần tạo là tvd12.com hãy mở trình duyệt và mở lên: https://admin.tvd12.com/setup-admin bạn sẽ thấy màn hình để setup:

setup-ezyplatform.png

Hãy cài đặt các thông tin cần thiết và submit, sau đó màn hình home sẽ hiển thị ra:

ezyplatform-home.png

Hãy đảm bảo bạn đã tắt hết các website của ezyplatform ở localhost đang chạy đi và xoá bỏ toàn bộ cookie.

Di chuyển vào Dashboard > Admin và cập nhật Admin URLAdmin Properties, ví dụ:

ezyplatform-admin.png
https://admin.tvd12.com
cors.allowed_origins=https://admin.tvd12.com
cors.enable=true
server.host=0.0.0.0
server.multipart.file_size_threshold=100MB
server.multipart.max_file_size=100MB
server.multipart.max_request_size=100MB
server.port=9090

Bây giờ hãy tắt chế độ console nhấn Ctrl+C đi và bạn sẽ start bằng chế độ background:

bash cli.sh "start admin" ; tail -f logs/admin-server.log

Đợi khoảng 10, 15 giây cho server khởi động xong, trở lại trình duyệt, chọn vào Dashboard > Web. Hãy cập nhật Web URLWeb properties, ví dụ:

ezyplatform-web.png
https://tvd12.com
cors.allowed_origins=https://tvd12.com,https://admin.tvd12.com
cors.enable=true
management.enable=true
management.port=18080
management.uris_expose=true
resources.enable=true
resources.locations=static
resources.upload.enable=true
server.allow_override_uri=true
server.host=0.0.0.0
server.multipart.file_size_threshold=100MB
server.multipart.max_file_size=100MB
server.multipart.max_request_size=100MB
server.port=8080

Sau đó nhấn vào nút start. Đợi 10, 15 giây và bạn có thể truy cập: https://tvd12.com.

Cài đặt SSL cho socket

Nếu bạn không sử dụng đến socket hoặc bạn đang ở localhost, bạn có thể bỏ qua bước này.

  1. Bạn có thể xem hướng dẫn tạo file keystore tại đây.
  2. Sau khi đã có file keystore, bạn có thể upload và set mật khẩu tại: Dashboard > Socket > SSL configuration.

Vậy là bạn đã triển khai ezyplatform thành công trên server ubuntu, tiếp theo bạn có thể cài đặt các theme và plugin theo ý thích của bạn.

Đối với Java phiên bản từ 17 trở lên

Bạn sẽ cần tạo tập tin vm-options.txt có nội dung như sau:

--add-opens java.base/java.lang=ALL-UNNAMED

Vào các thư mục admin, socket, web bên trong ezyplatform, sau đó khởi động ezyplatform bằng lệnh:

bash cli.sh "start admin" ; tail -f logs/admin-server.log

Nếu ezyplatform không khởi động được, bạn có thể chạy lệnh:

bash cli.sh "console admin"

Để có thông tin lỗi.

Mục lục