Giới thiệu
Ở bài viết này chúng ta sẽ tiến hành tạo một website WordPress thông qua Docker Compose, Nginx, MariaDB trên Ubuntu 22.04. Về phần Docker mình sẽ sử dụng Portainer để quản lý container.
Cài đặt Docker và Portainer
Cài đặt Docker trên Ubuntu
sudo apt update
sudo apt upgrade
sudo apt install docker.io -y
Tự động bật Docker khi máy chủ khởi động
sudo -i
systemctl start docker
systemctl enable docker
Cài đặt Portainer
docker volume create portainer_data
docker run -d -p 9000:9000 --name portainer --restart always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer
docker ps
Truy cập Portainer
Sau khi cài đặt xong, bạn hãy lên web và truy cập vào http://localhost:9000 để vào giao diện của Portainer
Vào lần truy cập đầu tiên, bạn sẽ được hỏi để tạo mật khẩu truy cập Portainer.
Vì mình quản lý từ local nên mình sẽ chọn Local ở bước tiếp theo
Cài đặt WordPress
Cài đặt Nginx
Bạn vào mục Container và tạo một container cho nginx như sau
+ Name: nginx (Tùy ý bạn chọn để đặt tên cho container)
+ Image: nginx
+ Manual network port publishing:
Chọn port truy cập cho nginx, mặc định ở phần container phải là 80, và host là port bạn truy cập đến nginx
Hoặc bật Publish all exposed network ports to random host ports để tự động chọn port ngẫu nhiên
Ở đây mình chọn 80:80
Chọn Deploy Container để tiếp tục
Tiếp theo thử truy cập localhost:(cổng bạn chọn) để kiểm tra xem nginx đã hoạt động chưa?
Cài đặt MariaDB
Tiếp tục tạo Container cho MariaDB như sau
+ Name: mariadb (Tùy ý bạn chọn để đặt tên cho container)
+ Image: mariadb
+ Manual network port publishing:
Chọn port truy cập cho mariadb , mặc định ở phần mariadb phải là 3306, và host là port bạn truy cập đến nginx
Hoặc bật Publish all exposed network ports to random host ports để tự động chọn port ngẫu nhiên
Ở đây mình chọn 4166:3306
Chọn Deploy Container để tiếp tục
Sau đó truy cập vào Console và tạo database cho wordpress
mysql -u root -p
create database wordpress;
Cài đặt WordPress
Tạo container wordpress như sau
+ Name: wordpress (Tùy ý bạn chọn để đặt tên cho container)
+ Image: wordpress
+ Manual network port publishing:
Chọn port truy cập cho wordpress, mặc định ở phần container phải là 80, và host là port bạn truy cập đến wordpress
Hoặc bật Publish all exposed network ports to random host ports để tự động chọn port ngẫu nhiên
Ở đây mình chọn 4167:80
Chọn Deploy Container để tiếp tục
Cấu hình Nginx
Truy cập vào Console nginx và gõ lệnh sau
apt -y update
apt -y install nano
nano /etc/nginx/conf.d/wordpress.conf
Bạn tạo config file theo mẫu sau với ip, port theo bạn tạo
server {
listen 80;
server_name wordpress.quochung.cyou;
location / {
proxy_pass http://ip:4167;
proxy_redirect off;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
Như vậy mình đã trỏ subdomain wordpress.quochung.cyou về IP của nginx trên cổng http 80. Sau đó nginx sẽ chuyển đến http://ip:4167 (Trang của wordpress)
Bạn save file và gõ
nginx -t
Để kiểm tra xem config đã đúng chưa
Sau khi xong khởi động lại container nginx, truy cập tên miền đã tạo để kiểm tra kết quả