Mục lục
A. MỤC TIÊU
B. KIẾN TRÚC VÀ LUỒNG HOẠT ĐỘNG
1. Kiến trúc
a. Người dùng
b. Nginx
c. Docker
d. Host Disk
2. Luồng hoạt động
C. THỰC HIỆN TRIỂN KHAI
1. Triển khai trên VM
2. Triển khai trên Docker
3. Cấu hình Nginx
- Triển khai Wordpress bằng docker
- Sử dụng Nginx điều hướng domain vào host có HTTPs(SSL).
- Sử dụng PHPMyAdmin quản lý tài nguyên của Wordpress.
- Người dùng từ máy tính cá nhân truy cập vào địa chỉ URL: https://domain.com.vn.
- Thông qua internet và gateway, yêu cầu được gửi đến máy chủ tại địa chỉ IP được cung cấp (ví dụ: 210.x.x.x) .//trong bài viết này sẽ thay bằng DNS trên máy tính
- Nginx đóng vai trò là một reverse proxy để điều hướng lưu lượng từ tên miền (domain.com.vn) đến môi trường Docker phía sau.
- Nginx nhận các yêu cầu HTTP từ người dùng và chuyển chúng đến container WordPress qua port 8080.
- Nginx xử lý giao tiếp giữa người dùng và các container Docker, đóng vai trò quan trọng trong việc điều hướng traffic.
Bên trong Docker, có 3 thành phần chính:
- WordPress (Port 8080:80):
- phpMyAdmin (Port 8081:80):
- MariaDB (Port 3306:3306):
- Các container Docker sử dụng các volume để lưu trữ dữ liệu trên VM (persistent storage).
- Người dùng truy cập vào domain.com.vn, yêu cầu này được gửi đến Nginx.
- Nginx nhận yêu cầu và chuyển hướng đến container WordPress qua port 8080.
- WordPress xử lý yêu cầu, lấy dữ liệu từ MariaDB, và trả kết quả về cho người dùng thông qua Nginx.
- Nếu người quản trị muốn cấu hình cơ sở dữ liệu, họ có thể sử dụng phpMyAdmin qua port 8081.
- Toàn bộ dữ liệu trang web và cơ sở dữ liệu được lưu trữ trên máy chủ thông qua các volume gắn kết với các container.
- Do mình chưa có domain và IP public nên tạm thời sử dụng VM làm gateway và DNS nhà làm.
- VM Service:
- VM nginx:
- Cài đặt docker
- Tạo thư mục để lưu trữ app(optional)
- Tạo file .env để lưu các thông tin của DB
- Từ mô hình triển khai các container bằng file yaml
- Các thông số cần lưu ý:
- Chạy “docker compose up -d” để triển khai mô hình
Lưu ý: Nếu không có phần volumes ở cấp cao nhất, Docker Compose sẽ tự động tạo volume với tên theo định dạng <project_name>_<volume_name>
- Kiểm tra volumes qua đường dẫn
- Kiểm tra container đã hoạt động hay chưa
- Setup domain để test trên máy C:\Windows\System32\drivers\etc\hosts để trỏ domain vào IP của nginx server ở đây là 172.168.2.149
- Kiểm tra domain bằng lệnh ping
- Cài đặt Nginx tham khảo tại đây: How To Install Nginx on Ubuntu 22.04 | DigitalOcean
- Cấu hình trên nginx server
- Kiểm tra và reload lại nginx
Trong trường hợp có bạn đã mua Domain có thể dùng domain để trỏ về gateway và cấu hình trỏ vào nginx server.
Các kiến thức trên được mình góp nhặt và nghiên cứu từ nhiều nguồn nếu như có sai sót hoặc thông tin gì sai với kiến thức chung, mọi người xin vui lòng góp ý bên dưới comment.
A. MỤC TIÊU
B. KIẾN TRÚC VÀ LUỒNG HOẠT ĐỘNG
1. Kiến trúc
a. Người dùng
b. Nginx
c. Docker
d. Host Disk
2. Luồng hoạt động
C. THỰC HIỆN TRIỂN KHAI
1. Triển khai trên VM
2. Triển khai trên Docker
3. Cấu hình Nginx
A. MỤC TIÊU
- Triển khai Wordpress bằng docker
- Sử dụng Nginx điều hướng domain vào host có HTTPs(SSL).
- Sử dụng PHPMyAdmin quản lý tài nguyên của Wordpress.
B. KIẾN TRÚC VÀ LUỒNG HOẠT ĐỘNG
1. Kiến trúc
a. Người dùng
- Người dùng từ máy tính cá nhân truy cập vào địa chỉ URL: https://domain.com.vn.
- Thông qua internet và gateway, yêu cầu được gửi đến máy chủ tại địa chỉ IP được cung cấp (ví dụ: 210.x.x.x) .//trong bài viết này sẽ thay bằng DNS trên máy tính
b. Nginx
- Nginx đóng vai trò là một reverse proxy để điều hướng lưu lượng từ tên miền (domain.com.vn) đến môi trường Docker phía sau.
- Nginx nhận các yêu cầu HTTP từ người dùng và chuyển chúng đến container WordPress qua port 8080.
- Nginx xử lý giao tiếp giữa người dùng và các container Docker, đóng vai trò quan trọng trong việc điều hướng traffic.
c. Docker
Bên trong Docker, có 3 thành phần chính:
- WordPress (Port 8080:80):
+ WordPress chạy trong một container với giao diện người dùng (UI) để người quản trị có thể cấu hình và quản lý nội dung trang web.
+ Giao diện web của WordPress được truy cập qua port 80 (thông qua Nginx).
+ WordPress sử dụng dữ liệu từ container MariaDB để lưu trữ nội dung và cấu hình.
- phpMyAdmin (Port 8081:80):
+ phpMyAdmin cũng được triển khai dưới dạng container để quản trị cơ sở dữ liệu MariaDB một cách trực quan.
+ Người dùng hoặc quản trị viên có thể truy cập vào phpMyAdmin qua port 8081 để thực hiện các thao tác trên cơ sở dữ liệu.
- MariaDB (Port 3306:3306):
+ MariaDB là cơ sở dữ liệu, chứa toàn bộ dữ liệu và thông tin cấu hình của WordPress.
+ MariaDB lắng nghe trên port 3306 và được WordPress truy cập để lưu trữ và truy xuất dữ liệu.
d. Host Disk
- Các container Docker sử dụng các volume để lưu trữ dữ liệu trên VM (persistent storage).
2. Luồng hoạt động
- Người dùng truy cập vào domain.com.vn, yêu cầu này được gửi đến Nginx.
- Nginx nhận yêu cầu và chuyển hướng đến container WordPress qua port 8080.
- WordPress xử lý yêu cầu, lấy dữ liệu từ MariaDB, và trả kết quả về cho người dùng thông qua Nginx.
- Nếu người quản trị muốn cấu hình cơ sở dữ liệu, họ có thể sử dụng phpMyAdmin qua port 8081.
- Toàn bộ dữ liệu trang web và cơ sở dữ liệu được lưu trữ trên máy chủ thông qua các volume gắn kết với các container.
C. THỰC HIỆN TRIỂN KHAI
1. Prerequisite
- Do mình chưa có domain và IP public nên tạm thời sử dụng VM làm gateway và DNS nhà làm.
- VM Service:
+ IP: 172.168.2.150/24
+ Port Wordpress: “8080:80”
+ Port DB: “3306:3306”
+ Port PHPadmin: “8081:80”
- VM nginx:
+ IP: 172.168.2.149/24
2. Triển khai trên Docker
- Cài đặt docker
+ Tải shell về máy “curl -fsSL https://get.docker.com -o get-docker.sh”
+ Cấp quyền thực thi cho shell và chạy shell script
- Tạo thư mục để lưu trữ app(optional)
- Tạo file .env để lưu các thông tin của DB
- Từ mô hình triển khai các container bằng file yaml
- Các thông số cần lưu ý:
+ image: Chỉ định image Docker để sử dụng.
+ ports: Ánh xạ port từ host đến port của container. Ví dụ: port 3306 trên host được ánh xạ đến port 3306 trên container.
+ env_file: Chỉ định tệp “.env” chứa các biến môi trường.
+ “environment” Thiết lập các biến môi trường cho container:
§ MYSQL_ROOT_PASSWORD: Mật khẩu root cho MariaDB.
§ MYSQL_DATABASE: Tên cơ sở dữ liệu sẽ được tạo.
§ MYSQL_USER: Tên người dùng cho cơ sở dữ liệu.
§ MYSQL_PASSWORD: Mật khẩu cho người dùng cơ sở dữ liệu.
+ volumes: Mount một volume để lưu trữ dữ liệu. Ví dụ: db-data:/var/lib/mysql đảm bảo dữ liệu cơ sở dữ liệu được lưu trữ bên ngoài container, và nếu không chỉ định thư mục sẽ tự động lưu vào trong thư mục “”. Khi down container sẽ không mất dữ liệu.
+ networks: khai báo tên network được sử dụng.
- Chạy “docker compose up -d” để triển khai mô hình
Lưu ý: Nếu không có phần volumes ở cấp cao nhất, Docker Compose sẽ tự động tạo volume với tên theo định dạng <project_name>_<volume_name>
- Kiểm tra volumes qua đường dẫn
- Kiểm tra container đã hoạt động hay chưa
3. Nginx
- Setup domain để test trên máy C:\Windows\System32\drivers\etc\hosts để trỏ domain vào IP của nginx server ở đây là 172.168.2.149
- Kiểm tra domain bằng lệnh ping
- Cài đặt Nginx tham khảo tại đây: How To Install Nginx on Ubuntu 22.04 | DigitalOcean
- Cấu hình trên nginx server
- Kiểm tra và reload lại nginx
Trong trường hợp có bạn đã mua Domain có thể dùng domain để trỏ về gateway và cấu hình trỏ vào nginx server.
Các kiến thức trên được mình góp nhặt và nghiên cứu từ nhiều nguồn nếu như có sai sót hoặc thông tin gì sai với kiến thức chung, mọi người xin vui lòng góp ý bên dưới comment.