Hướng dẫn deploy rabbit đối với Module: InnoMKTAuto

1) Giới Thiệu

RabbitMQ là một hệ thống xử lý thông điệp mã nguồn mở (open-source message broker) được sử dụng để truyền và xử lý thông điệp giữa các ứng dụng và dịch vụ. Đây là một giải pháp mạnh mẽ cho việc xây dựng các hệ thống phân tán, các ứng dụng liên quan đến xử lý thông điệp và nhiều tình huống khác.

Trong tài liệu này, chúng ta sẽ hướng dẫn cách triển khai RabbitMQ trên môi trường máy chủ Linux sử dụng gói cài đặt chính thống và tích hợp cơ bản với PHP

2) Triển khai RabbitMQ

2.1) Cài đặt RabbitMQ trên CentOS sử dụng yum

Bước 1: Cài đặt EPEL Repository

EPEL (Extra Packages for Enterprise Linux) là một kho lưu trữ chứa các gói bổ sung cho hệ điều hành dựa trên RHEL (Red Hat Enterprise Linux) như CentOS.

sudo yum install epel-release

Bước 2: Cài đặt Erlang

RabbitMQ yêu cầu Erlang để hoạt động, vì vậy bạn cần cài đặt Erlang trước.

sudo yum install erlang

Bước 3: Cài đặt RabbitMQ

Cài đặt RabbitMQ bằng yum:

sudo yum install rabbitmq-server

Bước 4: Khởi động và kích hoạt rabbitMQ

  • Thêm người dùng mới:

  • Gán quyền cho người dùng:

  • Gán quyền cho người dùng trên virtual host cụ thể :

Bước 5: Tích hợp thư viện PHP amqp trên CentOS

2.2) Cài đặt RabbitMQ trên Ubutu

Bước 1: Cập nhật hệ thống:

Bước 2: Cài đặt Erlang

RabbitMQ chạy trên nền tảng Erlang, do đó bạn cần cài đặt Erlang trước.

Bước 3: Cài đặt RabbitMQ

Bước 4: Quản lý RabbitMQ Dưới đây là một số lệnh quản lý cơ bản:

  • Khởi động rabbitmq:

  • Dừng rabbitmq:

  • Khởi động cùng hệ thống:

2.3) Cấu hình trên Server Tùy Chỉnh (Ví dụ: Server 214)

Bước 1: Chuẩn bị môi trường

Cài đặt Web Server và PHP

  • Hệ điều hành: CentOS

  • Cài đặt Apache và PHP: sudo yum install httpd php

Bước 2: Cài đặt MySQL Server: Chạy lệnh sau để cài đặt MySQL Server trên CentOS:

Bước 3: Khởi động và Kích hoạt dịch vụ MySQL

Sau khi khởi động dịch vụ, hãy chạy lệnh bảo mật để đặt mật khẩu cho tài khoản root của MySQL:

Bước 4: Tạo cơ sở dữ liệu và người dùng Đăng nhập vào MySQL với tài khoản root:

Tạo cơ sở dữ liệu:

Tạo người dùng và cấp quyền cho cơ sở dữ liệu:

Sử dụng mysqli_connect trong PHP

Tạo tệp config.php hoặc tệp cấu hình tương tự để cấu hình kết nối đến cơ sở dữ liệu:

Sử dụng Kết nối trong ứng dụng PHP

Sau khi đã cấu hình config.php và kết nối MySQL trong tệp cấu hình, bạn có thể sử dụng biến $conn để thực hiện các truy vấn và thao tác với cơ sở dữ liệu. Tạo index.php

Để tạo một cơ sở dữ liệu và bảng trong MySQL Tạo 1 file demo.php

Ứng dụng Navicat

Navicat là một ứng dụng quản lý và quản lý cơ sở dữ liệu rất phổ biến.

  1. Mở Navicat.

  2. Chọn "Connection" hoặc "Kết nối" từ thanh công cụ hoặc trong menu "File".

  3. Điền các thông tin kết nối như tên miền hoặc địa chỉ IP của máy chủ cơ sở dữ liệu, cổng, tên người dùng và mật khẩu.

  4. Chọn "Test Connection" hoặc "Kiểm tra kết nối" để kiểm tra xem kết nối có thành công hay không.

  5. Sau khi kết nối thành công, đặt tên cho kết nối và nhấn OK.

Query (Truy vấn) dữ liệu Navicat:

  1. Trong cửa sổ chính của Navicat, chọn "Query" hoặc "Truy vấn" từ thanh công cụ hoặc trong menu "Database".

  2. Viết truy vấn SQL vào khung trống.

  3. Nhấn nút "Execute" hoặc "Thực hiện" để thực thi truy vấn và xem kết quả.

Query SQL nhiều bảng và nhiều cột:

Sau khi chạy xong SQL ở trên ( chạy trong ứng dụng Navicat ) thì kết quả như hình dưới

Bước 6: Chạy thực nghiệm RabbitMQ ( Cả 2 server )

  1. Tạo một tập tin PHP mới: Tạo một tập tin PHP mới trong project, ví dụ index.php.

  2. Thêm phần thư viện AMQP vào composer.json

Mở tệp composer.json bằng trình chỉnh sửa văn bản và thêm phần "require" với thư viện php-amqp:

Mở terminal chạy lệnh: composer update

  1. Demo code:

2.4) Chạy thực nghiệm RabbitMQ đối với nhiều khách hàng A) Ở server 212 Mở terminal chạy lệnh: php modules/InnoMKTAuto/cron/rabbitmq/portal_data.php 3vgLMFtlivmpAnEIfsmOgPvtZ2nI287ttc67iphH database_demo Trong đó unique_com_id tương ứng với mỗi khách hàng khác nhau Ví dụ: vgLMFtlivmpAnEIfsmOgPvtZ2nI287ttc67iphH Tên database cần truyền vào ở server 212: database_demo B) Ở server 214: Mở terminal chạy lệnh:

php email/queue_fifo.php 3vgLMFtlivmpAnEIfsmOgPvtZ2nI287ttc67iphH database_demo_rabbitmq

php email/sendgrid.php 3vgLMFtlivmpAnEIfsmOgPvtZ2nI287ttc67iphH database_demo_rabbitmq

php email/smtp.php 3vgLMFtlivmpAnEIfsmOgPvtZ2nI287ttc67iphH database_demo_rabbitmq

Last updated