Triển khai EzyPlatform trên Ubuntu
Cập nhật lúc 1776177699000EzyPlatform 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 .
Cấu hình tối thiểu
- 1 core CPU.
- 2GB RAM.
Cấu hình đề xuất
- 2 core CPU
- 4GB RAM.
Truy cập vào máy chủ
Ví dụ bạn có máy chủ với địa chỉ ip v4 là
102.74.182.23 đang mở cổng ssh là 22, có tài khoản truy cập là root và mật khẩu là 12345678. Bạn có thể dùng lệnh sau để truy cập vào máy chủ:ssh root@102.74.182.23
Nhấn
Enter sau đó bạn nhập mật khẩu 12345678 là truy cập được.Bổ sung ssh public keys
Lần nào cũng phải ruy cập qua mật khẩu khá rườm rà nên bạn có thể 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.
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.
-
3005cho socket -
2208nếu bạn chỉ sử dụng ws. -
2812nếu bạn sử dụng wss. -
2611nế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 nhanh
Nếu bạn muốn triển khai EzyPlatform nhanh chóng bạn có thể làm theo các bước sau.
Mở công cho admin
Bạn có thể mở cổng
9090 với câu lệnh sau:sudo ufw allow 9090
Tạo tập tin install-ezyplatform.sh
Nội dung của nó như sau: https://gist.github.com/tvd12/3b0672cd9f7e4f99af8e6ab999048b95
Chạy file scripts.
Bạn chạy lệnh sau để cài đặt java, mysql, nginx, certbot:
bash install-ezyplatform.sh
Kết quả bạn nhận được là:
Installation completed.
Database:
name: ezyplatform
user: ezyplatform
password: wzb20wRTZEauVn5r6As0Y1u0
EzyPlatform:
directory: /root/ezyplatform
setup file: /root/ezyplatform/settings/setup.properties
Next steps:
1. Open:
http://<server-ip>:9090/setup-admin
2. Complete admin setup in the browser.
3. If you want to inspect the log:
cd /root/ezyplatform
tail -f logs/admin-server.log
Notes:
- Nginx and Certbot were installed only. No site or SSL configuration was created.
- Admin is started automatically at the end of the installation.
- Admin access is expected directly via IP:9090 as requested.
- If port 9090 is already listening, the script keeps the existing service and does not stop/restart it.
Bây giờ bạn có thể truy cập vào
http://<server-ip>:9090/setup-admin để tiến hành cài đặt và sử dụng ezyplatform.Sau đó để cài đặt tên miền và SSL, bạn có thể làm theo hướng dẫn này.
Lưu ý
Nếu bạn gặp lỗi nào đó trong khi chạy scripts, bạn sẽ cần ssh vào máy chủ và kiểm tra, bạn có thể tạo tập tin
uninstall-java-mysql-nginx-certbot.sh với nội dung như sau: https://gist.github.com/tvd12/4006839a33f10c3c163aac492e6b403bSau đó chạy để gỡ toàn bộ các thành phần từ java, mysql, nginx cho đến certbot khỏi server để cài lại từ đầu.
Hoặc bạn có thể đi theo từng bước dưới đây.
Cài đặt từng bước
Nếu bạn muốn cài đặt một cách cẩn thận hơn, cấu hình chi tiết hơn bạn có thể làm theo các bước sau.
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
Bạn có thể sử dụng công cụ này để tạo mật khẩu ngẫu nhiên.
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 và /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ụ <host name>:
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";
}
Nêu website của bạn cho phép người dùng upload, bạn có thể bổ sung:
location /api/v1/media/add {
proxy_pass http://127.0.0.1:8080;
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_request_buffering off;
proxy_buffering off;
client_max_body_size 100M;
}
Site admin, ví dụ admin.<host name>:
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;
}
location /api/v1/media/add {
proxy_pass http://127.0.0.1:9090;
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_request_buffering off;
proxy_buffering off;
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
}
Bây giờ bạn có thể 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. Bạn có thể mở file này bằng lệnh:vi ~/.bash_profile
Sau đó bạn nhấn phím
i để chuyển sang chế độ sửa, bạn dán dòng sau vào file:
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-amd64
Tiếp theo bạn nhấn
Esc, nhấn Shift + : sau đó nhấn tiếp phím x và Enter để thoát trình soạn thảo vim.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
wget và inspect nút download tại Home để lấy bản mới nhất, ví dụ:wget https://ezyplatform.com/api/v1/platforms/1.0.7/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:
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:

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 URL và Admin Properties, ví dụ:
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 URL và Web properties, ví dụ:
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.
- Bạn có thể xem hướng dẫn tạo file keystore tại đây.
- 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.