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.git3. Kích hoạt Container
cd ols-docker-env2. 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 .envIV. 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=localhostV. 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=localhostVII. Truy cập PhpMyAdmin
docker-compose upVIII. 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>:7080V. Cài đặt chứng chỉ SSL miễn phí
bash bin/webadmin.sh matkhaumoiVI. 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-env0Việ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-env1IV. 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-env2Sau 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-env3V. 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-env4Chờ 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-env5Tạo chứng chỉ SSL cho tên miền nano .env4
cd ols-docker-env6Mặ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-env7Nế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-env8Tì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-env6Chờ 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 0VI. 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 1Kế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 2Nế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 3Cà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 4Trê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 5Mở 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 7Sử 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!