Ghost là một nền tảng xuất bản và 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 thời gian chạy. 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à bộ cân bằng tải cho các dịch vụ vi mô. Traefik giúp triển khai tất cả các dịch vụ vi mô dễ dàng, 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à cấu hình Ghost làm vùng chứa Docker. Chúng tôi sẽ cài đặt và cấu hình Ghost theo phiên bản Docker CE mới nhất, sử dụng MySQL làm cơ sở dữ liệu và sử dụng Traefik làm Proxy ngược.
Thêm khóa docker và kho lưu trữ docker-ce.
Lệnh này sẽ tự động cập nhật tất cả các kho lưu trữ trên hệ thống.
Bây giờ hãy cài đặt docker bằng lệnh apt bên dưới.
Sau khi cài đặt hoàn tất, hãy khởi động dịch vụ docker và cho phép dịch vụ này khởi chạy mỗi khi khởi động hệ thống.
Phiên bản docker-ce mới nhất đã được cài đặt trên hệ thống Ubuntu 18.04.
Tạo người dùng mới có tên 'hakase' và tạo mật khẩu.
Bây giờ hãy gán người dùng 'hakase' cho các nhóm 'sudo' và 'docker'.
Và khởi động lại dịch vụ docker.
Bây giờ, 'hakase' có thể chạy container docker và chạy lệnh sudo để có quyền root.
Đăng nhập với tư cách là người dùng 'hakase' và chạy container docker hello-world.
Và sau đây là kết quả.
Tải tệp nhị phân docker-compose xuống thư mục '/usr/local/bin'.
Và làm cho tệp 'docker-compose' có thể thực thi bằng cách thay đổi quyền tệp.
Docker compose đã được cài đặt - hãy kiểm tra bằng lệnh bên dưới.
Docker-compose 1.21 với Docker-ce 1.18 đã được cài đặt.
Chúng ta sẽ tạo một mạng tùy chỉnh docker 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 docker tùy chỉnh mới cho proxy ngược traefik có tên là 'traefiknet'.
Bây giờ hãy kiểm tra lại mạng khả dụng trên hệ thống docker.
Mạng tùy chỉnh cho Treafik có tên là 'traefiknet' đã được tạo.
Đăng nhập vào người dùng 'hakase'.
Tạo một thư mục 'ghost' mới và thay đổi thư mục làm việc thành thư mục đó.
Và tạo một tệp docker-compose mới.
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'.
Dán cấu hình bên dưới.
Lưu và thoát.
Trước khi chỉnh sửa Tập lệnh 'docker-compose.yml', chúng ta cần tạo một cấu hình traefik mới có tên là 'traefik.toml'.
Dán cấu hình quy tắc traefik bên dưới.
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 letsencrypt tạo ra.
Tạo tệp 'acme.json' trống và thay đổi quyền thành 600.
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.
Dán cấu hình dịch vụ traefik bên dưới.
Lưu và thoát.
Chi tiết cấu hình mà chúng ta muốn tạo.
Dán cấu hình bên dưới.
Lưu và thoát.
Và bây giờ chúng ta có tất cả thư mục và cấu hình như hiển thị bên dưới.
Khi hoàn tất, hãy kiểm tra tất cả các dịch vụ đang chạy.
Và sau đây là kết quả.
Nếu bạn gặp lỗi, hãy kiểm tra nhật ký container bằng các lệnh bên dưới.
Gói ghost với MySQL và proxy ngược Traefik đã hoạt động.
Đăng nhập bằng tên người dùng và mật khẩu trên tệp 'traefik.toml'.
Sau đây là bảng điều khiển Traefik.
Để cài đặt Ghost, hãy nhập URL ghost vào thanh địa chỉ, của tôi là
Và bạn sẽ nhận được ghost home trang.
Bây giờ hãy truy cập trang quản trị để thiết lập và cấu hình người dùng quản trị 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 thông tin chi tiết về 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.
Sau khi tạo bài đăng mẫu, kết quả như sau.
Quá trình cài đặt blog Ghost 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.
Traefik là proxy ngược HTTP hiện đại và bộ cân bằng tải cho các dịch vụ vi mô. Traefik giúp triển khai tất cả các dịch vụ vi mô dễ dàng, 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à cấu hình Ghost làm vùng chứa Docker. Chúng tôi sẽ cài đặt và cấu hình Ghost theo phiên bản Docker CE mới nhất, sử dụng MySQL làm cơ sở dữ liệu và sử dụng Traefik làm Proxy ngược.
Điều kiện tiên quyết
- Ubuntu 18.04 LTS
- Quyền root
Những gì chúng tôi sẽ làm
- Cài đặt Docker CE trên Ubuntu 18.04 LTS
- Thiết lập Docker cho Người dùng không phải root
- Cài đặt Docker Compose
- Cấu hình Ghost Stack
- Tạo Mạng tùy chỉnh
- Tạo Thư mục Dự án
- Tạo và Cấu hình MySQL Container
- Tạo và Cấu hình Traefik Reverse Proxy
- 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ẽ thực hiện trong hướng dẫn này là cài đặt phiên bản docker-ce mới nhất của hệ thống. Phiên bản docker-ce có thể được cài đặt từ kho lưu trữ docker chính thức.Thêm khóa docker và kho lưu trữ docker-ce.
Mã:
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"
Bây giờ hãy cài đặt docker bằng lệnh apt bên dưới.
Mã:
sudo apt install docker-ce -y
Mã:
systemctl start docker
systemctl enable docker
Bước 2 - Thiết lập Docker cho người dùng không phải root Người dùng
Trong hướng dẫn này, tất cả các dịch vụ vi mô container sẽ được chạy dưới quyền người dùng bình 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 Docker 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.
Mã:
useradd -m -s /bin/bash hakase
passwd hakase
Mã:
usermod -a -G root hakase
usermod -a -G docker hakase
Mã:
systemctl restart docker
Đăng nhập với tư cách là người dùng 'hakase' và chạy container docker hello-world.
Mã:
su - hakase
docker run -it hello-world
Bước 3 - Cài đặt Docker Compose
Trong hướng dẫn này, chúng ta 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 docker-compose xuống thư mục '/usr/local/bin'.
Mã:
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
Mã:
sudo chmod +x /usr/local/bin/docker-compose
Mã:
docker-compose version
docker version
Docker-compose 1.21 với Docker-ce 1.18 đã được cài đặt.
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 ta sẽ tạo một mạng tùy chỉnh docker 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 docker khả dụng bằng lệnh docker network bên dưới.
Mã:
mạng docker ls
Mã:
docker network create traefiknet
Mã:
docker network ls
Mạng tùy chỉnh cho Treafik có tên là 'traefiknet' đã được tạo.
Tạo 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 một tệp docker-compose.yml mới.Đăng nhập vào người dùng 'hakase'.
Mã:
su - hakase
Mã:
mkdir ghost/
cd ghost/
Mã:
chạm vào docker-compose.yml
Tạo và cấu hình dịch vụ MySQL
MySQL là dịch vụ đầu tiên chúng ta muốn tạo và chúng ta muốn tạo vùng chứa MySQL với các cấu hình bên dưới.- Chúng ta 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 gốc MySQL: mypassword
- Cơ sở dữ liệu cho ghost có tên là 'ghostdb' với người dùng 'ghost' và mật khẩu là 'ghostdbpass'
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'.
Mã:
mkdir -p data/
vim docker-compose.yml
Mã:
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
Tạo và cấu hình Traefik Reverse Proxy
Sau khi tạo dịch vụ MySQL, chúng ta sẽ tạo và cấu hình vùng chứa traefik reverse proxy.Trước khi chỉnh sửa Tập lệnh 'docker-compose.yml', chúng ta cần tạo một cấu hình traefik mới có tên là 'traefik.toml'.
Mã:
vim traefik.toml
Mã:
#Cấu hình Traefik toàn cụcdebug = falsecheckNewVersion = truelogLevel = "ERROR"#Định nghĩa EntryPoint cho HTTP và HTTPSdefaultEntryPoints = ["https","http"]#Định nghĩa cổng HTTP 80 và#Cổng HTTPS 443 EntryPoint#Bật tự động chuyển hướng HTTP sang HTTPS[entryPoints][entryPoints.http]address = ":80"[entryPoints.http.redirect]entryPoint = "https"[entryPoints.https]address = ":443"[entryPoints.https.tls]#Bật Traefik Dashboard trên cổng 8080#với xác thực cơ bản phương pháp#hakase và mật khẩu[entryPoints.dash]address=":8080"[entryPoints.dash.auth][entryPoints.dash.auth.basic] users = [ "hakase:$apr1$hEgpZUN2$OYG3KwpzI3T1FqIg9LIbi.", ][api]entrypoint="dash"dashboard = true#Bật thử lại gửi yêu cầu nếu lỗi mạng[retry]#Định nghĩa cấu hình Docker Backend[docker]endpoint = "unix:///var/run/docker.sock"domain = "hakase-labs.io"watch = trueexposedbydefault = false#Đăng ký Letsencrypt#Định nghĩa thử thách Letsencrypt ACME HTTP[acme]email = "[emailprotected]"storage = "acme.json"entryPoint = "https"OnHostRule = true [acme.httpChallenge] entryPoint = "http"
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 letsencrypt tạo ra.
Tạo tệp 'acme.json' trống và thay đổi quyền thành 600.
Mã:
touch acme.json
chmod 600 acme.json
- Chúng ta sẽ sử dụng hình ảnh traefik docker mới nhất.
- Container 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 sock docker và cấu hình traefik 'traefik.toml' và 'acme.json'
- Chúng ta đã định nghĩa URL bảng điều khiển traefik và phần phụ trợ thông qua các nhãn docker.
Mã:
vim docker-compose.yml
Mã:
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
Tạo và cấu hình dịch vụ Ghost
Sau khi 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 ta muốn tạo.
- Chúng ta sẽ sử dụng ghost v1 và phiên bản docker alpine nhỏ.
- Chúng ta sẽ gắn thư mục nội dung ghost vào thư mục cục bộ có tên là 'blog'.
- Dịch vụ ghost sẽ chạy trên cổng 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, mạng nội bộ và mạng traefiknet.
- Chúng ta đang cấu hình chi tiết cơ sở dữ liệu MySQL từ cấu hình vùng chứa mysql.
- Và ghost sẽ được khởi động khi traefik và vùng chứa MySQL được thiết lập và chạy.
Mã:
mkdir -p blog/
vim docker-compose.yml
Mã:
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
Và bây giờ chúng ta có tất cả thư mục và cấu hình như hiển thị bên dưới.
Mã:
tree
Bước 5 - Triển khai Ghost với MySQL và Traefik
Để xây dựng và chạy tất cả các dịch vụ ghost stack của chúng ta, chúng ta có thể sử dụng lệnh bên dưới.
Mã:
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.
Mã:
docker-compose ps
Nếu bạn gặp lỗi, hãy kiểm tra nhật ký container bằng các lệnh bên dưới.
Mã:
docker-compose logs mysql
docker-compose logs traefik
docker-compose logs ghost
Gói ghost 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ó, của tôi làĐăng nhập bằng tên người dùng và mật khẩu trên tệp 'traefik.toml'.
Sau đây là bảng điều khiển Traefik.
Để cài đặt Ghost, hãy nhập URL ghost vào thanh địa chỉ, của tôi là
Và bạn sẽ nhận được ghost home trang.
Bây giờ hãy truy cập trang quản trị để thiết lập và cấu hình người dùng quản trị 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 thông tin chi tiết về 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.
Sau khi tạo bài đăng mẫu, kết quả như sau.
Quá trình cài đặt blog Ghost 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.