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 https://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:

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

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

https://<IP-Address>:7080

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

bash bin/webadmin.sh matkhaumoi

VI. Cài đặt WordPress

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

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-env
0

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-env
1

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 .env
4

cd ols-docker-env
2

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 .env
4 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-env
3

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-env
4

Chờ khoảng 1 phút cho hệ thống xử lý, khi nào thấy xuất hiện dòng

nano .env
6 nghĩa là đã cài đặt xong.

cd ols-docker-env
5

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

nano .env
4

cd ols-docker-env
6

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-env
7

Nếu gặp tình trạng tương tự, bạn cần sửa lại lại file

nano .env
8 cho nó sử dụng hệ thống cấp chứng chỉ của Let’s Encrypt

cd ols-docker-env
8

Tìm đến dòng

nano .env
9 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=localhost
0. Sau đó lưu lại và chạy lại lệnh cấp SSL

cd ols-docker-env
6

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=localhost
1

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

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=localhost
    2 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=localhost
    3
  • 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=localhost
    5

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