Hướng dẫn mariadb and phpmyadmin docker - mariadb và phpmyadmin docker

Note: This article is a version adapted to MariaDB of my post Run MySQL & phpMyAdmin locally in 3 steps using Docker

Installing a relational database with a web based management tool is a very common requirement for a wide range of software projects. Not too many years ago, developers needed to download and install these components manually into our local machines in order to be able to work. However, thanks to container based technologies like docker, we can get our environment up and running in 3 simple steps.

Có nhiều cách để cài đặt WordPress lên VPS. Dưới đây là những cách cài đặt WordPress mình đã sử dụng trong những năm qua:

  • Cài đặt LAMP Stack (Linux, Apache, MySQL, PHP) lên VPS. WordPress sẽ chạy trên nền Apache web server. Xem hướng dẫn trên DigitalOcean.
  • Cài đặt script quản lý Centminmod (CentOS), EasyEngine (Ubuntu / Debian), Webinoly (Ubuntu / Debian), Valet+ (MacOS). WordPress sẽ chạy trên nền Nginx web server.
  • Cài đặt Cyberpanel. WordPress sẽ chạy trên nền OpenLiteSpeed web server. Đây là lựa chọn số một của mình ở thời điểm hiện tại để cài đặt WordPress. Đây là lựa chọn số một của mình ở thời điểm hiện tại để cài đặt WordPress.

Ưu điểm của các cách này là sự ổn định (nếu cài đặt và cấu hình đúng), và tận dụng được tối đa sức mạnh của VPS. Tuy nhiên, có ba nhược điểm khi cài đặt web server trực tiếp lên hệ điều hành kiểu này:

  • Cài đặt và cấu hình tốn thời gian, nhiều script quản lý cần phải compile từ mã nguồn có thể mất hơn 30 phút mới cài xong.
  • Không thể chuyển đổi linh hoạt qua lại giữa Apache / Nginx / OpenLiteSpeed. Bắt buộc phải cài đặt lại hệ điều hành và cài lại từ đầu.
  • Việc sao chép thông số cấu hình qua lại giữa 2 server rắc rối, mất thời gian.

Những nhược điểm này thực sự phiền toái mỗi lần mình cần phải chuyển website qua server mới ngay lập tức vì những lý do bất khả kháng: nhà cung cấp bảo trì hệ thống, VPS bị sập, cá mập cắn cáp,…

Để giải quyết vấn đề này, mình đang nghiên cứu chuyển qua cài đặt WordPress sử dụng Docker Compose, tận dụng ưu thế về sự linh hoạt và độc lập của Docker.

  • Việc cài đặt chỉ mất 2-3 phút, do mọi thứ đã được thiết lập sẵn trong Docker image, tải về và tạo container là xong
  • Chuyển đổi linh hoạt giữa nhiều loại web server khác nhau, không cần phải cài đặt lại hệ điều hành.
  • Sao chép cấu hình giữa 2 server cực kỳ đơn giản: dùng lệnh ├── acme ├── bin │   └── container ├── data │   └── db ├── logs │   ├── access.log │   ├── error.log │   ├── lsrestart.log │   └── stderr.log ├── lsws │   ├── admin-conf │   └── conf ├── sites │ └── localhost ├── LICENSE ├── README.md └── docker-compose.yml 8 copy thư mục chứa file cấu hình qua là xong.

Đó là lý do của bài viết hôm nay: hướng dẫn cách cài đặt WordPress + MariaDB + PhpMyadmin chạy trên nền OpenLiteSpeed sử dụng Docker Compose.

  • I. Yêu cầu chuẩn bị
  • II. Cài đặt OpenLiteSpeed
    • 1. Tải ols-docker-env
    • 2. Cấu trúc thư mục
    • 3. Kích hoạt Container
  • III. Cấu hình OpenLiteSpeed
  • IV. Thêm tên miền và virtual hosts
  • V. Cài đặt chứng chỉ SSL miễn phí
  • VI. Cài đặt WordPress
  • VII. Truy cập PhpMyAdmin
  • VIII. Lời kết

I. Yêu cầu chuẩn bị

II. Cài đặt OpenLiteSpeed

  • 1. Tải ols-docker-env
  • 2. Cấu trúc thư mục

3. Kích hoạt Container

1. Tải ols-docker-env

2. Cấu trúc thư mục

cd /home git clone //github.com/litespeedtech/ols-docker-env.git

3. Kích hoạt Container

cd ols-docker-env

2. Cấu trúc thư mục

3. Kích hoạt Container

├── acme ├── bin │   └── container ├── data │   └── db ├── logs │   ├── access.log │   ├── error.log │   ├── lsrestart.log │   └── stderr.log ├── lsws │   ├── admin-conf │   └── conf ├── sites │ └── localhost ├── LICENSE ├── README.md └── docker-compose.yml
  • III. Cấu hình OpenLiteSpeed
  • IV. Thêm tên miền và virtual hosts
  • V. Cài đặt chứng chỉ SSL miễn phí
  • VI. Cài đặt WordPress
  • VII. Truy cập PhpMyAdmin
  • VIII. Lời kết

3. Kích hoạt Container

III. Cấu hình OpenLiteSpeed

nano .env

IV. Thêm tên miền và virtual hosts

TimeZone=America/New_York OLS_VERSION=1.7.15 PHP_VERSION=lsphp80 MYSQL_DATABASE=wordpress MYSQL_ROOT_PASSWORD=password MYSQL_USER=wordpress MYSQL_PASSWORD=password DOMAIN=localhost

V. Cài đặt chứng chỉ SSL miễn phí

VI. Cài đặt WordPress

TimeZone=Asia/Ho_Chi_Minh OLS_VERSION=1.7.15 PHP_VERSION=lsphp74 MYSQL_DATABASE=thuanbui MYSQL_ROOT_PASSWORD=depchaivodich MYSQL_USER=thuanbui MYSQL_PASSWORD=depchaivodich DOMAIN=localhost

VII. Truy cập PhpMyAdmin

docker-compose up

VIII. Lời kết

docker-compose up -d

Để thực hiện theo thao tác trong bài, bạn cần chuẩn bị hệ thống như sau:

VPS cài đặt hệ điều hành Linux: CentOS / Debian / Ubuntu mới tinh, chưa cài thêm bất kỳ web server nào. Bạn cũng có thể cài đặt trên Windows / MacOS / Raspberry Pi, miễn là hệ điều hành hỗ trợ Docker.

III. Cấu hình OpenLiteSpeed

IV. Thêm tên miền và virtual hosts

//<IP-Address>:7080

V. Cài đặt chứng chỉ SSL miễn phí

bash bin/webadmin.sh matkhaumoi

VI. Cài đặt WordPress

Cài đặt OWASP ModSecurity để tăng bảo mật cho OpenLiteSpeedOWASP ModSecurity để tăng bảo mật cho OpenLiteSpeed

cd ols-docker-env0

Việc cài đặt mất khoảng 1 phút là xong. Trên màn hình sẽ hiện ra các ghi chú như sau trong khi cài đặt.

cd ols-docker-env1

IV. Thêm tên miền và virtual hosts

Quay lại Terminal, sử dụng lệnh sau để thêm tên miền nano .env4

cd ols-docker-env2

Sau khi tạo xong, bạn có thể truy cập vào thư mục sites, sẽ thấy có thêm thư mục nano .env4 do hệ thống tạo ra.

Nếu lỡ tay tạo nhầm, bạn có thể xoá bằng lệnh

cd ols-docker-env3

V. Cài đặt chứng chỉ SSL miễn phí

Trước khi cài đặt chứng chỉ SSL, bạn cần chỉnh sửa A Record cho tên miền trỏ về địa chỉ IP của VPS.

Cài đặt ACME – công cụ tạo chứng chỉ SSL miễn phí từ Let’s Encrypt

cd ols-docker-env4

Chờ khoảng 1 phút cho hệ thống xử lý, khi nào thấy xuất hiện dòng nano .env6 nghĩa là đã cài đặt xong.

cd ols-docker-env5

Tạo chứng chỉ SSL cho tên miền nano .env4

cd ols-docker-env6

Mặc định, ACME sẽ dùng hệ thống cấp chứng chỉ của ZeroSSL thay cho Let’s Encrypt. Nhưng lâu lâu bên ZeroSSL gặp vấn đề, chờ hoài chờ hoài mà không cấp xong chứng chỉ SSL, bị lỗi như dưới đây

cd ols-docker-env7

Nếu gặp tình trạng tương tự, bạn cần sửa lại lại file nano .env8 cho nó sử dụng hệ thống cấp chứng chỉ của Let’s Encrypt

cd ols-docker-env8

Tìm đến dòng nano .env9 và sửa lại thành TimeZone=America/New_York OLS_VERSION=1.7.15 PHP_VERSION=lsphp80 MYSQL_DATABASE=wordpress MYSQL_ROOT_PASSWORD=password MYSQL_USER=wordpress MYSQL_PASSWORD=password DOMAIN=localhost0. Sau đó lưu lại và chạy lại lệnh cấp SSL

cd ols-docker-env6

Chờ vài phút là xong.

├── acme ├── bin │   └── container ├── data │   └── db ├── logs │   ├── access.log │   ├── error.log │   ├── lsrestart.log │   └── stderr.log ├── lsws │   ├── admin-conf │   └── conf ├── sites │ └── localhost ├── LICENSE ├── README.md └── docker-compose.yml 0

VI. Cài đặt WordPress

Trước khi cài đặt WordPress, chúng ta cần tạo database cho tên miền

├── acme ├── bin │   └── container ├── data │   └── db ├── logs │   ├── access.log │   ├── error.log │   ├── lsrestart.log │   └── stderr.log ├── lsws │   ├── admin-conf │   └── conf ├── sites │ └── localhost ├── LICENSE ├── README.md └── docker-compose.yml 1

Kết quả nhận được sẽ là thông tin Database, Username và Password được tự động tạo ra như dưới đây

├── acme ├── bin │   └── container ├── data │   └── db ├── logs │   ├── access.log │   ├── error.log │   ├── lsrestart.log │   └── stderr.log ├── lsws │   ├── admin-conf │   └── conf ├── sites │ └── localhost ├── LICENSE ├── README.md └── docker-compose.yml 2

Nếu muốn chủ động thiết lập tên Database, Username và Password, bạn cần gõ lệnh dài hơn

├── acme ├── bin │   └── container ├── data │   └── db ├── logs │   ├── access.log │   ├── error.log │   ├── lsrestart.log │   └── stderr.log ├── lsws │   ├── admin-conf │   └── conf ├── sites │ └── localhost ├── LICENSE ├── README.md └── docker-compose.yml 3

Cài đặt WordPress

├── acme ├── bin │   └── container ├── data │   └── db ├── logs │   ├── access.log │   ├── error.log │   ├── lsrestart.log │   └── stderr.log ├── lsws │   ├── admin-conf │   └── conf ├── sites │ └── localhost ├── LICENSE ├── README.md └── docker-compose.yml 4

Trên màn hình sẽ hiển thị vài dòng như sau, khoảng 1-2 phút là cài xong

├── acme ├── bin │   └── container ├── data │   └── db ├── logs │   ├── access.log │   ├── error.log │   ├── lsrestart.log │   └── stderr.log ├── lsws │   ├── admin-conf │   └── conf ├── sites │ └── localhost ├── LICENSE ├── README.md └── docker-compose.yml 5

Mở trình duyệt truy cập vào website để hoàn thành bước cài đặt WordPres cuối cùng TimeZone=America/New_York OLS_VERSION=1.7.15 PHP_VERSION=lsphp80 MYSQL_DATABASE=wordpress MYSQL_ROOT_PASSWORD=password MYSQL_USER=wordpress MYSQL_PASSWORD=password DOMAIN=localhost1

VII. Truy cập PhpMyAdmin

Bạn có thể truy cập PhpMyAdmin bằng 1 trong 2 cách

├── acme ├── bin │   └── container ├── data │   └── db ├── logs │   ├── access.log │   ├── error.log │   ├── lsrestart.log │   └── stderr.log ├── lsws │   ├── admin-conf │   └── conf ├── sites │ └── localhost ├── LICENSE ├── README.md └── docker-compose.yml 6├── acme ├── bin │   └── container ├── data │   └── db ├── logs │   ├── access.log │   ├── error.log │   ├── lsrestart.log │   └── stderr.log ├── lsws │   ├── admin-conf │   └── conf ├── sites │ └── localhost ├── LICENSE ├── README.md └── docker-compose.yml 7

Sử dụng tài khoản và mật khẩu sau để đăng nhập

  • Username: root
  • Password: sử dụng mật khẩu bạn thiết lập ở mục TimeZone=America/New_York OLS_VERSION=1.7.15 PHP_VERSION=lsphp80 MYSQL_DATABASE=wordpress MYSQL_ROOT_PASSWORD=password MYSQL_USER=wordpress MYSQL_PASSWORD=password DOMAIN=localhost2 trong file .env

VIII. Lời kết

Toàn bộ thao tác mình liệt kê ở trên nhìn có vẻ dài dòng như thật ra chỉ mất khoảng 5′ là xong. Việc thiết lập 1 trang WordPress mới chưa bao giờ đơn giản hơn thế.

Ưu điểm lớn nhất của cách cài đặt WordPress bằng Docker là mình có thể chuyển toàn bộ thiết lập server và website qua một VPS mới cực kỳ nhanh chóng. Thao tác đơn giản chỉ trong 3 bước:

  • Tạm ngưng Container bằng lệnh TimeZone=America/New_York OLS_VERSION=1.7.15 PHP_VERSION=lsphp80 MYSQL_DATABASE=wordpress MYSQL_ROOT_PASSWORD=password MYSQL_USER=wordpress MYSQL_PASSWORD=password DOMAIN=localhost3
  • Copy bộ thư mục hiện hành qua VPS mới bằng lệnh ├── acme ├── bin │   └── container ├── data │   └── db ├── logs │   ├── access.log │   ├── error.log │   ├── lsrestart.log │   └── stderr.log ├── lsws │   ├── admin-conf │   └── conf ├── sites │ └── localhost ├── LICENSE ├── README.md └── docker-compose.yml 8
  • Đổi A Record của tên miền qua địa chỉ IP của VPS mới.
  • Kích hoạt lại Container bên VPS mới bằng lệnh TimeZone=America/New_York OLS_VERSION=1.7.15 PHP_VERSION=lsphp80 MYSQL_DATABASE=wordpress MYSQL_ROOT_PASSWORD=password MYSQL_USER=wordpress MYSQL_PASSWORD=password DOMAIN=localhost5

Mọi thứ hoạt động ngon lành lại ngay chỉ trong vòng 5 phút, không phải mất thời gian cài đặt đủ thứ như cách thông thường đã nêu ở đầu bài nữa.

Trong bài viết sau, mình sẽ demo hướng dẫn cách đóng gói website WordPress đang chạy trực tiếp trên hệ điều hành để chuyển qua chạy trên nền Docker.

Chúc bạn thực hiện thành công!

Nếu bài viết của mình mang đến thông tin, kiến thức hữu ích cho bạn, đừng ngại mời mình ly bia để có thêm động lực chia sẻ nhiều hơn nữa. Cám ơn bạn!

Bài viết liên quan

Chủ đề