+1

Hướng dẫn deploy lên máy chủ Ubuntu và trỏ tên miền

Chào các bạn! 👋

Nếu bạn đang làm việc với Java và đặc biệt là EzyPlatform - một framework "make in Vietnam" cực kỳ mạnh mẽ để phát triển Game Server và ứng dụng doanh nghiệp, chắc hẳn bạn đã quá quen thuộc với việc khởi tạo và chạy dự án trơn tru ở môi trường local.

Thế nhưng, hành trình từ local đến production đôi khi lại là một rào cản lớn với nhiều anh em Developer. Làm sao để đưa ứng dụng "go live", cấu hình Nginx, bảo mật bằng SSL hay kết nối Database trên server một cách tự động và ổn định nhất?

Trong bài viết này, mình sẽ hướng dẫn chi tiết từ A-Z cách đưa dự án EzyPlatform của bạn lên máy chủ Ubuntu, trỏ tên miền và thiết lập một môi trường hoàn chỉnh nhé!

Bước 1: Chuẩn bị "Vũ khí" (Tên miền & Máy chủ)

Để website có thể truy cập được từ internet, chúng ta cần 2 thứ: Tên miền (Domain) và Máy chủ (VPS/Server).

1.1. Mua tên miền trên Mắt Bão

Mắt Bão là một trong những nhà cung cấp tên miền khá phổ biến tại Việt Nam. Quá trình mua rất đơn giản:

  1. Truy cập trang chủ bán tên miền (ví dụ ở đây sẽ là mắt bão) .

  2. Nhập tên miền bạn muốn mua (ví dụ: tvd12.com) vào ô tìm kiếm để kiểm tra xem đã có ai đăng ký chưa.

  3. Thêm vào giỏ hàng, điền thông tin cá nhân và tiến hành thanh toán.

  4. Sau khi thanh toán thành công, bạn truy cập vào trang quản trị tên miền (id.matbao.net) để chuẩn bị cho bước trỏ IP. Đây là hình ảnh khi mà đã thực hiện thành công tại quản lý tên miền

1.2. Thuê máy chủ (VPS Ubuntu)

Bạn có thể thuê VPS tại các nhà cung cấp như DigitalOcean, Vultr, Linode, hoặc các nhà cung cấp trong nước.

  • Hệ điều hành khuyên dùng: Ubuntu 20.04 LTS hoặc 22.04 LTS.

  • Cấu hình tối thiểu: 1 Core CPU, 2GB RAM.

  • Cấu hình đề xuất: 2 Core CPU, 4GB RAM.

  • các bạn có thể thuê ở đây nếu chưa có nhé : https://eztech.vn/vps-gia-re/

1.3. Trỏ tên miền về IP máy chủ (Cấu hình DNS)

Sau khi có VPS, bạn sẽ được cấp một địa chỉ IP Public (ví dụ: 102.74.182.23). Hãy quay lại trang quản lý tên miền của Mắt Bão và tạo 2 bản ghi A như sau:

Record 1: Tên (Host): @ | Loại (Type): A | Giá trị (Value): 102.74.182.23

Record 2: Tên (Host): admin| Loại (Type): A | Giá trị (Value): 102.74.182.23 (Dùng cho trang quản trị Admin).

Bước 2: Truy cập và thiết lập máy chủ Ubuntu

2.1. SSH vào máy chủ Mở Terminal (trên Mac/Linux) hoặc Command Prompt/PowerShell (trên Windows) và gõ:

Bash
ssh root@102.74.182.23

Nhập mật khẩu VPS của bạn để truy cập. sau khi nhập mật khẩu vào thì sẽ thành công.

2.2. Cài đặt SSH Public Key (Khuyên dùng)

Để không phải nhập mật khẩu rườm rà cho những lần sau, bạn nên thêm SSH Key:

Bash
mkdir -p ~/.ssh
nano ~/.ssh/authorized_keys

Dán Public Key của bạn vào file này, lưu lại (Ctrl+O, Enter) và thoát (Ctrl+X).

2.3. Thiết lập Timezone và Tường lửa (UFW)

Chỉnh múi giờ về Asia/Ho_Chi_Minh:

Bash
sudo timedatectl set-timezone Asia/Ho_Chi_Minh

Cài đặt tường lửa để bảo mật máy chủ, chỉ mở những cổng cần thiết:

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

Mở port cho EzyPlatform nếu dùng socket/websocket :

sudo ufw allow 3005
sudo ufw allow 2208
sudo ufw allow 2812
sudo ufw allow 2611/udp
sudo ufw enable

Bước 3: Cài đặt Cơ sở dữ liệu (MySQL)

EzyPlatform cần Database để lưu trữ dữ liệu. Chạy các lệnh sau để cài MySQL:

Bash
sudo apt update
sudo apt install mysql-server
sudo systemctl start mysql.service
Truy cập MySQL và cấu hình mật khẩu:

Sau đó sẽ hiển thị ra màn hình như này:

Bash
sudo mysql
Trong giao diện MySQL, chạy các lệnh sau (nhớ thay <new password> bằng mật khẩu của bạn):
SQL
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '<new password>';
CREATE SCHEMA `new_schema` DEFAULT CHARACTER SET utf8 COLLATE utf8_bin;
CREATE USER 'ezyuser'@'localhost' IDENTIFIED BY 'mat_khau_cua_ban';
GRANT ALL PRIVILEGES ON new_schema.* TO 'ezyuser'@'localhost';
exit;

Bước 4: Cài đặt Môi trường Java (JDK 8)

EzyPlatform chạy trên nền Java. Ở đây mình dùng OpenJDK 8.

Bash
sudo apt update
sudo apt install openjdk-8-jre-headless 
Cấu hình biến môi trường JAVA_HOME:
Bash
vi ~/.bash_profile

Nhấn phím i để insert, dán dòng này vào:

undefined

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

Nhấn Esc, gõ :wq và Enter để lưu. Sau đó chạy:

Bash
source ~/.bash_profile

Bước 5: Cài đặt Nginx làm Reverse Proxy

Nginx sẽ đứng ra nhận request từ người dùng ở port 80/443 và đẩy về port 8080 (Web) hoặc 9090 (Admin) của EzyPlatform.

Bash
sudo apt install nginx

Xóa các file mặc định thừa:

Bash
sudo rm /etc/nginx/sites-enabled/default
sudo rm /etc/nginx/sites-available/default

Tạo cấu hình cho Site Public

Bash
sudo nano /etc/nginx/sites-enabled/tvd12.com

Dán cấu hình sau (nhớ thay tvd12.com bằng tên miền của bạn):

Nginx
server {
    server_name tvd12.com;

    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;
    }
}

Tạo cấu hình cho Site Admin

Bash
sudo nano /etc/nginx/sites-enabled/admin.tvd12.com

Dán cấu hình sau:

Nginx
server {
    server_name admin.tvd12.com;

    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;
    }
}

Kiểm tra cấu hình và khởi động lại Nginx:

Bash
sudo nginx -t
sudo systemctl reload nginx

một số

Bước 6: Cài đặt SSL với Let's Encrypt (Certbot)

Bảo mật website với HTTPS là bắt buộc. Certbot sẽ giúp chúng ta tự động hóa việc này:

Bash
sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx -d tvd12.com -d admin.tvd12.com

Làm theo hướng dẫn trên màn hình, điền email và chọn chuyển hướng toàn bộ traffic sang HTTPS.

Bước 7: Cài đặt và Khởi chạy EzyPlatform

Tải bản mới nhất từ trang chủ:

Bash
wget https://ezyplatform.com/api/v1/platforms/1.0.5/download -O ezyplatform.zip
unzip ezyplatform.zip
cd ezyplatform

Cấu hình kết nối Database:

Bash
nano settings/setup.properties

Sửa lại thông tin cho khớp với Bước 3:

Properties
datasource.jdbc_url=jdbc:mysql://localhost:3306/new_schema
datasource.driver_class_name=com.mysql.cj.jdbc.Driver
datasource.username=ezyuser
datasource.password=mat_khau_cua_ban
tables.create_manually=false

Chạy thử và Thiết lập UI Chạy EzyPlatform ở chế độ console để xem log có lỗi không:

Bash
bash cli.sh "console admin"

Nếu log báo EZHTTP READY, xin chúc mừng! Truy cập vào trình duyệt: https://admin.tvd12.com/setup-admin để tiến hành các bước thiết lập tài khoản Admin đầu tiên.

Sau khi vào được Dashboard, hãy đi tới Dashboard > Admin và cấu hình lại Admin URL, Port về 9090. Tiếp theo, đi tới Dashboard > Web, cấu hình Web URL về https://tvd12.com và Port về 8080.

Khởi chạy Background Khi mọi thứ đã trơn tru, hãy quay lại Terminal, nhấn Ctrl+C để tắt chế độ console, và khởi động lại bằng chế độ nền (background):

# Khởi động trang Admin
bash cli.sh "start admin"

# Khởi động trang Web (nếu EzyPlatform của bạn có module web)
bash cli.sh "start web"

kiểm tra log đã chạy thành công chưa: tail -f logs/admin-server.log Đợi khoảng 15 giây, và giờ bạn đã có thể truy cập trang web chính thức tại https://tvd12.com.

(Lưu ý: Nếu bạn dùng Java 17 trở lên, hãy tạo thêm file vm-options.txt chứa --add-opens java.base/java.lang=ALL-UNNAMED trong các thư mục admin, socket, web của ezyplatform trước khi khởi chạy).

Lời kết Trên đây là toàn bộ quy trình đưa EzyPlatform lên server Ubuntu. Hy vọng bài viết sẽ giúp các bạn tự tin hơn trong việc triển khai dự án của mình. Nếu có bất kỳ thắc mắc nào, hãy để lại bình luận bên dưới nhé!

Chúc các bạn thành công! 🚀


All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí