Ghost Blog là một nền tảng blog mã nguồn mở mạnh mẽ dựa trên nodejs. Nó được thiết kế tốt và dễ sử dụng. Nền tảng ghost được viết bằng JavaScript và sử dụng node.js làm môi trường runtime. Phiên bản Ghost đầu tiên được phát hành vào năm 2013 theo giấy phép MIT..
Traefik là proxy ngược HTTP hiện đại và là bộ cân bằng tải cho các dịch vụ microservice. Traefik giúp việc triển khai tất cả các dịch vụ microservice trở nên dễ dàng, được tích hợp với các thành phần cơ sở hạ tầng hiện có như Docker, Swarm Mode, Kubernetes, Amazon ECS, Rancher, Etcd, Consul, v.v.
Trong hướng dẫn này, chúng tôi sẽ hướng dẫn từng bước cách cài đặt và định cấu hình Ghost với Docker. Chúng tôi sẽ cài đặt và cấu hình Ghost theo phiên bản mới nhất, sử dụng MySQL làm cơ sở dữ liệu và Traefik làm Reverse Proxy.
Điều kiện tiên quyết
- Ubuntu 18.04 LTS
- User có quyền root hoặc sudo
Chúng tôi sẽ làm gì
- Cài đặt Docker CE trên Ubuntu 18.04 LTS
- Thiết lập Docker cho người dùng non-root
- Cài đặt Docker Compose
- Cấu hình Ghost stack
- Tạo một mạng tùy chỉnh
- Tạo một thư mục dự án
- Tạo và cấu hình bộ chứa MySQL
- Tạo và cấu hình Proxy ngược Traefik
- Tạo và cấu hình Ghost Container
- Triển khai Ghost với MySQL và Traefik
- Kiểm tra
Bước 1 – Cài đặt Docker CE trên Ubuntu 18.04 LTS
Bước đầu tiên chúng ta sẽ làm trong hướng dẫn này là cài đặt phiên bản mới nhất từ kho docker chính thức.
Thêm khóa và kho lưu trữ.
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"
Lệnh sẽ tự động cập nhật tất cả các kho lưu trữ trên hệ thống.
Bây giờ cài đặt docker bằng lệnh apt bên dưới.
sudo apt install docker-ce -y
Sau khi cài đặt hoàn tất, hãy khởi động dịch vụ và cho phép nó khởi chạy mỗi khi khởi động hệ thống.
systemctl start docker
systemctl enable docker
Phiên bản docker-ce mới nhất đã được cài đặt trên hệ thống Ubuntu 18.04.
Bước 2 – Thiết lập Docker cho người dùng non-root
Trong hướng dẫn này, tất cả các dịch vụ microservice sẽ được chạy với người dùng thông thường/không phải root. Vì vậy, chúng ta cần cấu hình người dùng để có thể chạy container và chạy lệnh sudo để có quyền root.
Tạo người dùng mới có tên ‘hakase‘ và tạo mật khẩu.
useradd -m -s /bin/bash hakase
passwd hakase
Bây giờ chỉ định người dùng ‘hakase‘ cho nhóm ‘sudo’ và ‘docker’.
usermod -a -G root hakase
usermod -a -G docker hakase
Và khởi động lại dịch vụ docker.
systemctl restart docker
‘Hakase’ hiện có thể chạy container docker và chạy lệnh sudo để có quyền root.
Đăng nhập với tư cách người dùng ‘hakase’ và chạy vùng chứa docker hello-world.
su - hakase
docker run -it hello-world
Và sau đây là kết quả.
Bước 3 – Cài đặt Docker Compose
Trong hướng dẫn này, chúng tôi sẽ cài đặt docker-compose 1.21 từ tệp nhị phân trên kho lưu trữ Github.
Tải tệp nhị phân xuống thư mục ‘/usr/local/bin’.
sudo curl -L https://github.com/docker/compose/releases/download/1.21.2/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose
Và làm cho tệp ‘docker-compose’ có thể thực thi được bằng cách thay đổi quyền của tệp.
sudo chmod +x /usr/local/bin/docker-compose
docker-compose đã được cài đặt – kiểm tra nó bằng lệnh bên dưới.
docker-compose version
docker version
Bước 4 – Cấu hình Ghost Stack
Trong bước này, chúng ta sẽ cấu hình docker và tạo một tệp docker-compose mới để cài đặt ghost.
Chúng tôi sẽ tạo một mạng tùy chỉnh mới và tạo một tệp yml docker-compose mới chứa ba dịch vụ chính, bao gồm cơ sở dữ liệu MySQL, proxy ngược Traefik và chính blog Ghost.
Tạo một mạng tùy chỉnh
Hiển thị mạng có sẵn bằng lệnh docker network bên dưới.
docker network ls
Tạo mạng docker tùy chỉnh mới cho proxy ngược traefik có tên ‘traefiknet’.
docker network create traefiknet
Bây giờ hãy kiểm tra lại mạng có sẵn trên hệ thống docker.
docker network ls
Mạng tùy chỉnh cho Treafik có tên ‘traefiknet’ đã được tạo.
Tạo một thư mục dự án
Sau khi tạo mạng tùy chỉnh docker, chúng ta sẽ tạo một thư mục dự án mới có tên là ‘ghost’ và tạo tệp docker-compose.yml mới.
Đăng nhập vào người dùng ‘hakase’.
su - hakase
Tạo một thư mục ‘ma’ mới và thay đổi thư mục làm việc vào đó.
mkdir ghost/
cd ghost/
Và tạo một tập tin docker-compose mới.
touch docker-compose.yml
Tạo và cấu hình dịch vụ MySQL
MySQL là dịch vụ đầu tiên chúng tôi muốn tạo và chúng tôi muốn tạo bộ chứa MySQL với các cấu hình bên dưới.
- Chúng tôi sẽ sử dụng hình ảnh docker MySQL 5.7.
- Gắn thư mục dữ liệu MySQL vào thư mục máy chủ docker cục bộ.
- Chạy dịch vụ MySQL trên mạng nội bộ cục bộ.
- Cấu hình người dùng và mật khẩu MySQL.
- Mật khẩu root MySQL: mypassword
- Cơ sở dữ liệu cho bản ghost có tên ‘ghostdb’ với người dùng ‘ghost’ và mật khẩu là ‘ghostdbpass’
- Vùng chứa MySQL sẽ được đặt tên là ‘mysql’.
Bên trong thư mục ‘ghost’, tạo một thư mục mới có tên ‘data’ và chỉnh sửa tệp ‘docker-compose.yml’.
mkdir -p data/
vim docker-compose.yml
Dán cấu hình bên dưới.
version: '3.3'
services:
mysql:
image: mysql:5.7
restart: always
volumes:
- ./data:/var/lib/mysql
labels:
- "traefik.enable=false"
networks:
- internal
environment:
MYSQL_ROOT_PASSWORD: mypassword
MYSQL_USER: ghost
MYSQL_PASSWORD: ghostdbpass
MYSQL_DATABASE: ghostdb
container_name: mysql
Lưu và thoát.
Tạo và cấu hình Proxy ngược Traefik
Sau khi tạo dịch vụ MySQL, chúng tôi sẽ tạo và định cấu hình vùng chứa proxy ngược traefik.
Trước khi chỉnh sửa tập lệnh ‘docker-compose.yml’, chúng ta cần tạo cấu hình traefik mới có tên ‘traefik.toml’.
vim traefik.toml
Dán cấu hình quy tắc traefik bên dưới.
#Traefik Global Configuration
debug = false
checkNewVersion = true
logLevel = "ERROR"
#Define the EntryPoint for HTTP and HTTPS
defaultEntryPoints = ["https","http"]
#Define the HTTP port 80 and
#HTTPS port 443 EntryPoint
#Enable automatically redirect HTTP to HTTPS
[entryPoints]
[entryPoints.http]
address = ":80"
[entryPoints.http.redirect]
entryPoint = "https"
[entryPoints.https]
address = ":443"
[entryPoints.https.tls]
#Enable Traefik Dashboard on port 8080
#with basic authentication method
#hakase and password
[entryPoints.dash]
address=":8080"
[entryPoints.dash.auth]
[entryPoints.dash.auth.basic]
users = [
"hakase:$apr1$hEgpZUN2$OYG3KwpzI3T1FqIg9LIbi.",
]
[api]
entrypoint="dash"
dashboard = true
#Enable retry sending a request if the network error
[retry]
#Define Docker Backend Configuration
[docker]
endpoint = "unix:///var/run/docker.sock"
domain = "hakase-labs.io"
watch = true
exposedbydefault = false
#Letsencrypt Registration
#Define the Letsencrypt ACME HTTP challenge
[acme]
email = "[email protected]"
storage = "acme.json"
entryPoint = "https"
OnHostRule = true
[acme.httpChallenge]
entryPoint = "http"
Lưu và thoát.
Bây giờ chúng ta cần tạo một tệp mới cho cấu hình SSL Letsencrypt ‘acme.json’. Nó được sử dụng để lưu trữ tất cả các bản ghi được Letsencrypt tạo ra.
Tạo tệp ‘acme.json’ trống và thay đổi quyền thành 600.
touch acme.json
chmod 600 acme.json
Tiếp theo, chúng ta sẽ chỉnh sửa tập lệnh ‘docker-compose.yml’ và thêm cấu hình dịch vụ traefik.
- Chúng tôi sẽ sử dụng hình ảnh docker traefik mới nhất.
- Vùng chứa sẽ được đặt tên là ‘traefik’
- Nó sử dụng mạng tùy chỉnh ‘traefiknet’ và hiển thị các cổng HTTP và HTTPS.
- Gắn tệp docker sock và cấu hình traefik ‘traefik.toml’ và ‘acme.json’
- Chúng tôi đã xác định URL trang tổng quan traefik và phần phụ trợ thông qua nhãn docker.
Chỉnh sửa ‘docker-compose.yml’.
vim docker-compose.yml
Dán cấu hình dịch vụ traefik bên dưới.
traefik:
image: traefik:latest
command: --docker
ports:
- 80:80
- 443:443
labels:
- "traefik.enable=true"
- "traefik.backend=dashboard"
- "traefik.frontend.rule=Host:traef.hakase-labs.io"
- "traefik.port=8080"
networks:
- traefiknet
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- ./traefik.toml:/traefik.toml
- ./acme.json:/acme.json
container_name: traefik
restart: always
Lưu và thoát.
Tạo và cấu hình dịch vụ Ghost
Sau khi định cấu hình proxy ngược traefik, chúng ta sẽ tạo cấu hình dịch vụ ghost chính.
Chi tiết cấu hình mà chúng tôi muốn tạo.
- Chúng tôi sẽ sử dụng ghost v1 và phiên bản docker Alpine nhỏ.
- Chúng tôi sẽ gắn thư mục nội dung ghost vào thư mục cục bộ có tên ‘blog’.
- Dịch vụ ghost sẽ chạy trên port mặc định với tên miền “gho.hakase-labs.io”, cấu hình thông qua nhãn docker.
- Dịch vụ ghost sẽ sử dụng hai mạng docker, nội bộ và traefiknet.
- Chúng tôi đang định cấu hình chi tiết cơ sở dữ liệu MySQL từ cấu hình vùng chứa mysql.
- Và bản ghost sẽ được khởi động khi bộ chứa traefik và MySQL hoạt động.
Tạo một thư mục mới có tên ‘blog’ và chỉnh sửa tệp ‘docker-compose.yml’.
mkdir -p blog/
vim docker-compose.yml
Dán cấu hình bên dưới.
ghost:
image: ghost:1-alpine
restart: always
ports:
- 2368
volumes:
- ./blog:/var/lib/ghost/content
labels:
- "traefik.enabled=true"
- "traefik.backend=ghost"
- "traefik.frontend.rule=Host:gho.hakase-labs.io"
- "traefik.docker.network=traefiknet"
- "traefik.port=2368"
networks:
- internal
- traefiknet
environment:
database__client: mysql
database__connection__host: mysql
database__connection__user: ghost
database__connection__password: ghostdbpass
database__connection__database: ghostdb
container_name: ghost
depends_on:
- mysql
- traefik
networks:
traefiknet:
external: true
internal:
external: false
Lưu và thoát.
Và bây giờ chúng ta đã có đầy đủ thư mục và cấu hình như hình bên dưới.
tree
Bước 5 – Triển khai Ghost với MySQL và Traefik
Để xây dựng và chạy tất cả dịch vụ ghost stack, chúng ta có thể sử dụng lệnh bên dưới.
docker-compose up -d
Khi hoàn tất, hãy kiểm tra tất cả các dịch vụ đang chạy.
docker-compose ps
Và sau đây là kết quả.
Nếu bạn gặp lỗi, hãy kiểm tra nhật ký vùng chứa bằng các lệnh bên dưới.
docker-compose logs mysql
docker-compose logs traefik
docker-compose logs ghost
Ngăn xếp ma với MySQL và proxy ngược Traefik đã hoạt động.
Bước 6 – Kiểm tra
Mở bảng điều khiển Traefik bằng URL của nó, URL của tôi là http://traef.hakase-labs.io/
Đăng nhập bằng người dùng và mật khẩu trên tệp ‘traefik.toml’.
Và sau đây là bảng điều khiển Traefik.
Để cài đặt Ghost, hãy nhập URL ghost trên thanh địa chỉ, của tôi là http://gho.hakase-labs.io/
Và bạn sẽ có được trang chủ ma quái.
Bây giờ hãy truy cập trang quản trị để thiết lập và định cấu hình người dùng quản trị viên mới. URL của tôi là: http://gho.hakase-labs.io/admin/
Nhấp vào nút màu xanh lá cây để tạo người dùng quản trị mới.
Nhập chi tiết người dùng, mật khẩu, email và nhấp lại vào nút màu xanh lá cây.
Để mời thành viên hoặc người dùng mới, hãy nhấp vào liên kết ‘Tôi sẽ thực hiện việc này sau..’.
Bây giờ bạn sẽ nhận được Bảng điều khiển Ghost.
Và sau khi tạo bài viết mẫu sẽ có kết quả như sau.
Quá trình cài đặt blog ma với cơ sở dữ liệu MySQL và Traefik Reverse Proxy trên môi trường Docker đã hoàn tất thành công.
Tài liệu tham khảo
Đăng ký liền tay Nhận Ngay Bài Mới
Subscribe ngay
Cám ơn bạn đã đăng ký !
Lỗi đăng ký !
Add Comment