Làm cách nào để cài đặt WordPress trong bộ chứa Docker?

WordPress là một trong những Hệ thống quản lý nội dung (CMS) phổ biến nhất hiện có. Theo thống kê, nó chiếm hơn 39% tất cả các trang web bạn thấy trên toàn thế giới. Đó là một lựa chọn phổ biến vì khả năng mở rộng thông qua các plugin và hệ thống tạo khuôn mẫu linh hoạt của nó. Nó cho phép bạn thay đổi diện mạo của nó trong vài giây. Hơn nữa, việc quản trị của nó có thể được thực hiện thông qua giao diện web mà không đòi hỏi nhiều bí quyết kỹ thuật

Ngoài ra, WordPress là mã nguồn mở miễn phí và được xây dựng trên cơ sở dữ liệu MySQL với bộ xử lý PHP. Bạn có thể triển khai WordPress trên ngăn xếp LAMP (Linux, Apache, MySQL và PHP) hoặc ngăn xếp LEMP (Linux, Nginx, MySQL và PHP). Tuy nhiên, nó tỏ ra tốn thời gian để thiết lập ngăn xếp mỗi khi bạn muốn triển khai

May mắn thay, các phương pháp phân phối phần mềm hiện đại như điện toán đám mây, Docker và Docker Compose đã làm mượt mà trải nghiệm tổng thể của nhà phát triển. Các công cụ này đơn giản hóa quy trình thiết lập bất kỳ ngăn xếp nào bằng cách tránh chi phí cài đặt và định cấu hình các thành phần riêng lẻ mỗi khi bạn muốn triển khai một ứng dụng. Thay vào đó, bạn viết các tệp cấu hình sẽ được sử dụng để kéo và tạo hình ảnh và chạy chúng trong bộ chứa Docker, cho phép bạn triển khai ứng dụng của mình chỉ bằng một lệnh

Bộ chứa là môi trường tiêu chuẩn hóa nhẹ, ảo hóa, di động, được phần mềm xác định cho phép phần mềm chạy tách biệt với phần mềm khác chạy trên máy chủ vật lý. Docker Compose cho phép bạn quản lý nhiều container và đảm bảo chúng giao tiếp với nhau. Ví dụ: mã nguồn ứng dụng và cơ sở dữ liệu phải giao tiếp

Trong hướng dẫn này, chúng tôi sẽ xây dựng một ứng dụng WordPress được chứa nhiều vùng chứa. Một ứng dụng WordPress hoàn chỉnh yêu cầu ba vùng chứa. Cơ sở dữ liệu MySQL, máy chủ Nginx và mã nguồn WordPress. Bảo mật là ưu tiên hàng đầu trong các trang web hiện đại, chúng tôi sẽ lấy chứng chỉ SSL từ Let's Encrypt để bảo mật cài đặt của bạn. Sau đó, chúng tôi sẽ thiết lập một công việc định kỳ để kiểm tra và gia hạn chứng chỉ định kỳ để bảo mật trang web của bạn được duy trì liên tục

điều kiện tiên quyết

  • Vì đây là hướng dẫn thực hành, bạn nên cài đặt Ubuntu 20. 04 làm môi trường hoạt động ban đầu của bạn. Bạn cũng nên có một người dùng không phải root với đặc quyền sudo. Dưới đây là hướng dẫn từng bước để giúp bạn thiết lập máy chủ Ubuntu của mình
  • Bạn cũng cần cài đặt Docker. Bạn có thể tham khảo bài viết hướng dẫn cài đặt và vận hành Docker trên Ubuntu 18. 04
  • Bản cài đặt Docker Compose. Bạn có thể làm theo Bước 1 của hướng dẫn Cách cài đặt và định cấu hình Docker Compose trên Ubuntu 20. 04
  • Cần có tên miền đã đăng ký để nhận chứng chỉ TLS/SSL từ Let's Encrypt. Vì lợi ích của hướng dẫn này, chúng tôi sẽ sử dụng example.com
  • Thiết lập bản ghi DNS để trỏ lưu lượng đến VPS của bạn. Bạn cần hai bản ghi DNS
    • Bản ghi A có example.com trỏ đến địa chỉ IP công cộng của máy chủ của bạn
    • Một bản ghi A với www.example.com trỏ đến địa chỉ IP công cộng của máy chủ của bạn

Bước 1. Xác định cấu hình cho máy chủ web

Máy chủ web giữ các tệp trang web của bạn và cho phép người dùng truy cập ứng dụng web của bạn. Do đó, chỉ thích hợp ở bước đầu tiên chúng ta xác định cấu hình cho máy chủ web. Chúng tôi sẽ xác định tệp cấu hình máy chủ Nginx sẽ bao gồm các khối vị trí dành riêng cho WordPress. Chúng tôi cũng sẽ bao gồm các khối vị trí để chuyển các yêu cầu xác minh Let's Encrypt tới ứng dụng khách Certbot để tự động gia hạn chứng chỉ

Hãy bắt đầu bằng cách tạo một thư mục cho dự án. Bạn có thể chọn một tên thư mục bạn thích. Chúng tôi sẽ sử dụng wordpress_docker cho hướng dẫn này. Nhập lệnh sau để tạo thư mục và điều hướng vào đó

1

mkdir wordpress_docker && cd wordpress_docker

Tiếp theo tạo thư mục chứa các file cấu hình Nginx bằng lệnh

1

mkdir nginx - conf

Sử dụng nano để mở tệp bằng lệnh sau

1

nano nginx - conf / nginx.conf

Trong tệp này, chúng tôi sẽ xác định các lệnh cơ bản cho cấu hình khối máy chủ Nginx. Chúng bao gồm các lệnh cho tên máy chủ, gốc tài liệu và khối vị trí để chỉ đạo các yêu cầu plugin Certbot cho chứng chỉ, tệp tĩnh và xử lý PHP. Bạn có thể đọc hướng dẫn của chúng tôi về Cách bảo mật Nginx bằng Let's Encrypt để tìm hiểu thêm. Thêm mã sau vào tệp, thay thế example.com bằng tên miền đã đăng ký của bạn

XHTML

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

máy chủ {

     nghe 80 ;

     nghe [. . ]. 80 ;

 

     máy chủ _ tên ví dụ . com www . ví dụ . com ;

 

     chỉ mục chỉ mục . php chỉ mục . html chỉ mục . htm ;

 

     gốc /var/www/html ;

 

     vị trí ~ / . nổi tiếng/acme-thử thách {

         cho phép tất cả ;

         gốc /var/www/html ;

    }

 

     vị trí / {

         thử _ tệp $uri $uri/ /index. php $ is _ args $args;

    }

 

     vị trí ~ \. php $ {

         thử _ tệp $uri =404;

         fastcgi _ tách _path_info ^(. + \. php )( / . + )$;

         fastcgi _ vượt qua ứng dụng : 9000 ;

         fastcgi _ chỉ mục chỉ mục . php ;

         bao gồm fastcgi _ tham số ;

         fastcgi _ param SCRIPT _FILENAME

    $ tài liệu _ gốc $fastcgi_script_name;

         fastcgi _ param PATH _INFO $fastcgi_path_info;

    }

 

     vị trí ~ / \. ht {

         từ chối tất cả ;

    }

 

     vị trí = /favicon . ico {

         nhật ký _ không _found off; access_log off;

    }

     vị trí = /robot . txt {

         nhật ký _ không _found off; access_log off; allow all;

    }

     vị trí ~ * \.( css . gif . ico . jpeg . jpg . . png )$ {

         hết hạn tối đa ;

         nhật ký _ không _found off;

    }

}

Hãy xác định các phần bạn đã thêm

  • chỉ thị
    • listen. nó yêu cầu Nginx lắng nghe trên cổng 80. Điều này cho phép sử dụng plugin webroot của Certbot để thực hiện các yêu cầu chứng chỉ. Khi chúng tôi đã nhận được chứng chỉ SSL, chúng tôi sẽ cập nhật cấu hình này để sử dụng cổng 443
    • server_name. điều này xác định tên miền mà cấu hình này sẽ xử lý. Lưu lượng truy cập vào tên miền được xác định ở đây sẽ được chuyển hướng đến khối máy chủ cụ thể này và do đó đến tài liệu example.com0
    • example.com1. nó xác định thư mục gốc cho các yêu cầu đến tên miền trên. Đó thường là thư mục chứa các tệp trang web thực tế của chúng tôi. Chúng tôi đã đặt thư mục thành example.com2 này. Nó sẽ được tạo dưới dạng điểm gắn kết Docker trong thời gian xây dựng vùng chứa. Chúng tôi sẽ xác định các hướng dẫn cho quy trình này bên trong WordPress Dockerfile
    • example.com3. điều này xác định các tệp sẽ được sử dụng làm chỉ mục hoặc điểm vào máy chủ web của bạn khi xử lý yêu cầu. Chúng tôi đã chuyển chỉ mục. php trước chỉ mục. html để Nginx ưu tiên cho example.com4
  • Khối vị trí
    • example.com5. xử lý các yêu cầu đến thư mục nổi tiếng nơi Certbot thêm một tệp tạm thời để xác thực rằng DNS cho miền được chỉ định hướng đến máy chủ cụ thể mà chúng tôi đang yêu cầu chứng chỉ SSL từ. Đây là lý do tại sao bạn nên thêm miền hợp lệ để bước này hoạt động thay vì miền example.com mà chúng tôi đang sử dụng trong hướng dẫn này
    • example.com7. chọn các yêu cầu URI và trao quyền kiểm soát cho WordPress example.com4 để yêu cầu đối số xử lý
    • example.com9. xử lý xử lý PHP và chuyển yêu cầu tới bộ chứa WordPress (chúng tôi sẽ xác định tệp cấu hình cho việc này trong bước sau). Chúng tôi đã xác định các cấu hình dành riêng cho giao thức FastCGI tại đây vì hình ảnh WordPress Docker sẽ dựa trên php. hình ảnh fpm. Nginx sử dụng bộ xử lý PHP độc lập cho các yêu cầu dành riêng cho PHP. Chúng tôi sẽ sử dụng bộ xử lý www.example.com0 đi kèm với hình ảnh Docker www.example.com1
    • www.example.com2. xử lý các tệp www.example.com3 mà Nginx không sử dụng. Chỉ thị www.example.com4 đảm bảo các tệp này không bao giờ được cung cấp cho khách truy cập trang web
    • www.example.com5. như đã thấy trong định nghĩa, điều này ngăn việc ghi nhật ký các yêu cầu đối với tệp www.example.com6 và www.example.com7
    • www.example.com8. tắt ghi nhật ký các yêu cầu đối với các tệp tĩnh và đảm bảo chúng được lưu vào bộ đệm để giảm tải cho máy chủ

Bây giờ bạn có thể lưu và đóng tệp bằng cách nhấn www.example.com9, wordpress_docker0, sau đó nhấn wordpress_docker1. Thế là hoàn thành bước đầu tiên

Bước 2. Xác định các biến môi trường

Các biến môi trường là cần thiết để tạo điều kiện giao tiếp giữa ứng dụng WordPress và Cơ sở dữ liệu. Họ cũng đảm bảo dữ liệu ứng dụng được duy trì. Các biến môi trường bao gồm thông tin nhạy cảm như thông tin đăng nhập cơ sở dữ liệu và thông tin không nhạy cảm như tên cơ sở dữ liệu và máy chủ lưu trữ

Vì mục đích bảo mật, bạn không nên thêm thông tin nhạy cảm vào kho dự án. Do đó, thay vì đặt các giá trị nhạy cảm trong tệp Docker Compose, chúng tôi sẽ xác định thông tin đăng nhập MySQL bên trong các tệp wordpress_docker2 sẽ không được cam kết với kho dự án và có nguy cơ bị lộ trước công chúng. Bên trong dự án wordpress_docker3 mở tệp wordpress_docker2

1

nano . vi

Thêm thông tin đăng nhập MySQL sau vào tệp, cập nhật nó bằng mật khẩu mạnh do bạn chọn

1

2

3

MYSQL_ROOT_PASSWORD = your_strong_root_password

MYSQL_USER = your_wordpress_database_user

MYSQL_PASSWORD = strong_wordpress_database_password

Trước tiên, chúng tôi đã xác định mật khẩu cho tài khoản quản trị gốc MySQL và thông tin đăng nhập dành riêng cho ứng dụng WordPress của chúng tôi. Sau khi hoàn tất, lưu và đóng tệp

Điều tiếp theo bạn phải làm là thêm tệp wordpress_docker2 vào tệp wordpress_docker6 và wordpress_docker7 để đảm bảo rằng nó không được thêm vào kho lưu trữ hoặc hình ảnh Docker tương ứng của bạn

Điều này không cần thiết cho hướng dẫn này, nhưng nếu bạn muốn làm việc với Git để kiểm soát phiên bản, hãy nhập lệnh sau để khởi tạo thư mục hiện tại dưới dạng kho lưu trữ git

1

git init

Mở wordpress_docker6 bằng nano

1

nano . gitignore

Thêm dòng sau

1

.vi

lưu và đóng tập tin. Tiếp theo, mở wordpress_docker7 bằng nano

1

nano . dockerignore

Thêm dòng sau

1

.vi

Trong khi ở đó, bạn có thể tùy chọn thêm các tệp và thư mục khác được liên kết với quá trình phát triển ứng dụng của mình

1

2

3

.vi

.git

docker - soạn. yml

Lưu và đóng tệp khi hoàn tất. Đó là tất cả cho bước này. Hãy chuyển sang định nghĩa Docker Compose

Bước 3. Cấu hình dịch vụ với Docker Compose

Docker Compose sử dụng tệp nano0 để tạo hình ảnh. Tệp này chứa các định nghĩa dịch vụ để thiết lập hoàn chỉnh ứng dụng. Các định nghĩa dịch vụ về cơ bản là các hướng dẫn về cách một vùng chứa sẽ chạy. Một dịch vụ là một thùng chứa đang chạy thực tế

Docker Compose cho phép xác định các dịch vụ khác nhau cho các ứng dụng nhiều vùng chứa bằng cách liên kết các dịch vụ khác nhau với các mạng và khối lượng được chia sẻ. Bạn sẽ thấy điều này đang hoạt động vì chúng tôi sẽ xác định ba vùng chứa cho ứng dụng của chúng tôi. máy chủ web, cài đặt WordPress và cơ sở dữ liệu. Chúng tôi sẽ thêm vùng chứa thứ tư để chạy ứng dụng khách Certbot để gia hạn chứng chỉ

Nhập lệnh sau để tạo tệp nano0

1

nano docker - compose. yml

Dòng đầu tiên trong tệp nano0 là dòng định nghĩa phiên bản. Chúng tôi đã đặt 3 cho chúng tôi. Sau đó, bạn có thể bắt đầu xác định dịch vụ của mình. Thêm đoạn mã sau vào tệp để xác định dịch vụ nano3

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

phiên bản. '3'

 

dịch vụ.

   #Dịch vụ MySQL

   db.

    hình ảnh. mysql. 8. 0

    container_name. db

    khởi động lại. trừ khi - dừng

    env_file. . vi

    môi trường.

     - MYSQL_DATABASE = wordpress

    khối lượng.

     - dbdata. / var / lib / mysql

    lệnh. '--default-authentication-plugin=mysql_native_password'

    mạng.

     - ứng dụng - mạng

Hãy thảo luận về những gì chúng ta có trong định nghĩa dịch vụ nano3 bên dưới

  • nano5. xác định hình ảnh mà vùng chứa sẽ dựa trên. Chỉ định một phiên bản cụ thể (nano6) luôn tốt hơn là sử dụng thẻ mới nhất (nano7) vì các phiên bản tương lai của hình ảnh MySQL có thể xung đột với ứng dụng của chúng tôi nếu chúng tôi tình cờ xây dựng lại hình ảnh này. Bạn có thể tìm thêm thông tin về Dockerfiles Các phương pháp hay nhất trên Tài liệu Dockerfile chính thức
  • nano8. chúng tôi chỉ định tên container ở đây
  • nano9. lệnh này xác định hành vi khởi động lại của vùng chứa. Mặc định là example.com0 nhưng chúng tôi đã đặt nó luôn là nano9 trừ khi nó bị dừng theo cách thủ công
  • example.com2. lệnh này được sử dụng để chỉ định vị trí của tệp có các biến môi trường (wordpress_docker2) được ứng dụng của chúng tôi sử dụng
  • example.com4. được sử dụng để chỉ định các biến môi trường bổ sung. Trong hướng dẫn này, chúng tôi đã chỉ định biến example.com5 để giữ tên cơ sở dữ liệu cho ứng dụng của chúng tôi. Tên cơ sở dữ liệu có thể được bao gồm trong nano0
  • example.com7. được sử dụng để chỉ định vị trí gắn kết. Trong ví dụ của chúng tôi, chúng tôi đã gắn một ổ đĩa có tên là dbdata vào thư mục example.com8 trên vùng chứa, thư mục này thường là thư mục dữ liệu tiêu chuẩn cho MySQL
  • example.com9. lệnh này chỉ định một lệnh sẽ ghi đè lệnh CMD mặc định cho hình ảnh. Chúng tôi đã thêm một tùy chọn cho lệnh listen0 tiêu chuẩn của hình ảnh Docker để khởi động máy chủ MySQL bên trong vùng chứa. Tùy chọn chúng tôi đã thêm là listen1, cập nhật plugin xác thực mặc định cho MySQL để sử dụng xác thực mật khẩu (listen2). Điều này là cần thiết để PHP của bạn (ứng dụng WordPress hoạt động) vì chúng sử dụng tên người dùng và mật khẩu để truy cập cơ sở dữ liệu. Trong các phiên bản MySQL mới hơn, plugin xác thực mặc định đã thay đổi. Tuy nhiên, hầu hết các ứng dụng sử dụng xác thực mật khẩu. Vì vậy, bạn phải thay đổi cài đặt này để ứng dụng hoạt động
  • listen3. chỉ thị này được sử dụng để xác định rằng dịch vụ nano3 sẽ tham gia vào listen5, mà chúng tôi sẽ xác định khi chúng tôi thực hiện cùng với hướng dẫn

Tiếp theo, hãy xác định cấu hình dịch vụ cho ứng dụng WordPress của chúng tôi. Chúng tôi sẽ gọi dịch vụ và container_name listen6. Thêm đoạn mã sau vào bên dưới định nghĩa dịch vụ nano3, lưu ý thụt lề thích hợp

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

Dịch vụ mã ứng dụng #WordPress

ứng dụng.

phụ thuộc.

   - db

hình ảnh. wordpress. 5. 1. 1 - fpm - alpine

container_name. ứng dụng

khởi động lại. trừ khi - dừng

env_file. . vi

môi trường.

   - WORDPRESS_DB_HOST = db:3306

   - WORDPRESS_DB_USER = $MYSQL_USER

   - WORDPRESS_DB_PASSWORD = $MYSQL_PASSWORD

   - WORDPRESS_DB_NAME = wordpress

khối lượng.

   - ứng dụng. / var / www / html

mạng.

   - ứng dụng - mạng

Giống như chúng tôi đã làm với dịch vụ nano3, chúng tôi đã đặt tên cho bộ chứa của mình và xác định chính sách khởi động lại. Một số tùy chọn khác mà chúng tôi đã thêm được xác định bên dưới

  • listen9. lệnh này đảm bảo rằng các thùng chứa được bắt đầu theo thứ tự phụ thuộc. Trong trường hợp của chúng tôi, vùng chứa listen6 phụ thuộc vào vùng chứa nano3. Do đó, nó sẽ bắt đầu sau khi bộ chứa nano3 bắt đầu. Điều này cần phải xảy ra theo thứ tự này vì ứng dụng WordPress phụ thuộc vào tính khả dụng của cơ sở dữ liệu MySQL để nó hoạt động
  • 803. như đã thấy trong đoạn mã, chúng tôi sẽ sử dụng phiên bản WordPress 5. 1. Hình ảnh núi cao 1 fpm. Chúng tôi đã giải thích về bộ xử lý www.example.com0 mà Nginx yêu cầu để xử lý PHP. Hình ảnh này giải quyết vấn đề đó. Hình ảnh núi cao dựa trên dự án Alpine Linux giúp giữ cho kích thước hình ảnh nhỏ hơn. Nếu bạn cần thêm thông tin về các biến thể hình ảnh, bạn có thể theo liên kết này để biết hình ảnh Docker Hub Wordpress
  • example.com2. chỉ định vị trí của tệp wordpress_docker2 chứa thông tin đăng nhập cơ sở dữ liệu
  • example.com4. lệnh này xác định các biến môi trường bổ sung. Đối với trường hợp của chúng tôi, chúng tôi đang xác định các biến mà WordPress mong đợi và gán cho chúng các giá trị của các biến từ tệp wordpress_docker2 của chúng tôi. Đây là 809, 4430 và 4431 dùng để chỉ máy chủ MySQL chạy trên bộ chứa nano3, có thể truy cập từ cổng mặc định của MySQL là 4433. Cuối cùng, bạn thấy 4434 mà chúng tôi đã đặt thành WordPress. Giá trị tương tự được chỉ định trong định nghĩa dịch vụ MySQL trong vùng chứa db. 4435
  • example.com7. lệnh này gắn một ổ đĩa có tên ứng dụng vào điểm gắn kết example.com2, được tạo bởi hình ảnh WordPress. Việc đặt tên cho các ổ đĩa cho phép chia sẻ mã ứng dụng với các vùng chứa khác
  • listen3. cuối cùng, chúng tôi thêm bộ chứa ứng dụng vào listen5 để đảm bảo nó giao tiếp với các bộ chứa khác trên mạng

Đó sẽ là tất cả đối với bộ chứa dịch vụ listen6 cho hình ảnh WordPress. Bây giờ hãy xác định dịch vụ server_name1 cho hình ảnh Nginx. Trước tiên, hãy thêm đoạn mã sau vào bên dưới định nghĩa dịch vụ ứng dụng trong tệp nano0 của bạn

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

#Dịch vụ máy chủ web Nginx

máy chủ web.

phụ thuộc.

   - ứng dụng

hình ảnh. nginx. 1. 15. 12 - núi cao

container_name. máy chủ web

khởi động lại. trừ khi - dừng

cổng.

   - "80. 80"

khối lượng.

   - ứng dụng. / var / www / html

   - . / nginx - conf. / vv / nginx / . conf.d

   - certbot - vv: / vv / letsencrypt

mạng.

   - ứng dụng - mạng

Chúng tôi đã giải thích tùy chọn listen9. Trong trường hợp của dịch vụ server_name1 này, công-ten-nơ sẽ bắt đầu sau khi công-ten-nơ listen6 đã bắt đầu. Bộ chứa máy chủ web dựa trên hình ảnh Nginx núi cao. Nó có chính sách khởi động lại tương tự như các định nghĩa dịch vụ trước đó. The other options in the webserver service definition include

  • server_name6. liên kết các cổng giữa máy chủ và vùng chứa. Ở Bước 1, chúng tôi đã xác định cổng 80 trong tệp server_name8. Cổng này được ánh xạ tới cổng 80 trên vùng chứa
  • example.com00. we have a combination of bind mounts and named volumes under this option
    • listen6. example.com2. định nghĩa ổ đĩa này gắn kết ứng dụng WordPress vào thư mục example.com2 mà trước đó, chúng tôi đã đặt quyền root trong khối máy chủ Nginx
    • example.com04. /etc/nginx/conf. d. this definition bind mounts the Nginx configuration directory on the host machine to the Nginx configuration directory we defined for the container. Hence, any changes on the host machine are automatically reflected in the container
    • example.com05. example.com06. this definition mounts the Let’s Encrypt certificates and keys for the domain to the appropriate directory on the container
  • listen3. like in the previous service definitions, the listen3 directive adds the webserver service to the example.com09

Since we are done with the webserver definition, let’s add instructions for the Certbot service. This will handle getting your TLS/SSL certificates from Let’s Encrypt. If you would like to know more about securing an Nginx server, this tutorial on how to secure Nginx with Let’s Encrypt is a good source

Next, add the following code snippet below the webserver service. Remember to set your correct domain name and email address

1

2

3

4

5

6

7

8

9

10

#certbot service

certbot.

phụ thuộc.

   - webserver

image. certbot / certbot

container_name. certbot

khối lượng.

   - certbot - vv: / vv / letsencrypt

   - ứng dụng. / var / www / html

command. certonly -- webroot -- webroot - path =/ var / www / html -- email hackins@cloudsigma. com -- agree - tos -- no - eff - email -- staging - d example. com - d www. example. com

The example.com10 image will only start after the server_name1 has started, because of the listen9 directive. Docker Compose will pull the Certbot image from Docker Hub as defined

Under the volumes definition, the Certbot container will share the domain certificates and key in example.com05 with the Nginx server_name1 container and the application code with the listen6 container

Under the example.com9 definition, we have specified a subcommand to run the container’s default Certbot certonly command with additional options as listed below

    • example.com17. chỉ định việc sử dụng plugin webroot để đặt các tệp trong thư mục webroot để xác thực
    • example.com18. chỉ định đường dẫn của thư mục webroot
    • example.com19. xác định rằng bạn đồng ý với Điều khoản dịch vụ của ACME
    • example.com20. chỉ định rằng bạn không muốn chia sẻ email của mình với EFF. Bạn có thể bỏ qua phần này nếu bạn muốn chia sẻ
    • example.com21. nói với Certbot rằng trước tiên bạn muốn lấy chứng chỉ kiểm tra từ môi trường tổ chức Let's Encrypt để kiểm tra cấu hình của bạn trước khi lấy chứng chỉ thực tế. Let's Encrypt có giới hạn tỷ lệ yêu cầu tên miền. Do đó, việc kiểm tra cấu hình của bạn trước tiên sẽ giúp bạn tránh bị giới hạn tên miền của mình
    • example.com22. tùy chọn này lấy tên miền cho yêu cầu chứng chỉ. Trong hướng dẫn này, chúng tôi đã bao gồm example.comwww.example.com. Vui lòng chỉ định tên miền đã đăng ký thực tế của bạn

Tệp nano0 của chúng tôi sắp hoàn tất. Tuy nhiên, bạn cũng phải thêm định nghĩa mạng và khối lượng bên dưới dịch vụ Certbot

1

2

3

4

5

6

7

8

9

10

#tập

khối lượng.

certbot - etc.

ứng dụng.

dbdata.

 

#Mạng

mạng.

ứng dụng - mạng.

trình điều khiển. cầu

Khóa example.com7 xác định khối lượng sẽ được chia sẻ với tất cả các dịch vụ (vùng chứa) được xác định trong tệp soạn thảo này. example.com05, listen6 và example.com29. Nội dung của các volume do Docker tạo ra được lưu trữ trong một thư mục do Docker quản lý trên hệ thống file host. example.com30. Nội dung của mỗi tập sau đó được gắn vào bất kỳ vùng chứa nào sử dụng tập. Điều này cho phép chia sẻ dữ liệu và mã giữa các vùng chứa

Khóa listen3 xác định mạng cầu nối cho phép giao tiếp giữa các container. Các container trên cùng một mạng cầu như server_name1 và nano3 có thể giao tiếp an toàn qua các cổng mà không làm lộ lưu lượng ra mạng bên ngoài. Chúng tôi chỉ hiển thị cổng 80 để cho phép truy cập vào các trang của trang web giao diện người dùng

Tệp nano0 hoàn chỉnh sẽ trông như thế này

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

phiên bản. '3'

 

dịch vụ.

Dịch vụ #MySQL

db.

  hình ảnh. mysql. 8. 0

  container_name. db

  khởi động lại. trừ khi - dừng

  env_file. . vi

môi trường.

   - MYSQL_DATABASE = wordpress

khối lượng.

   - dbdata. / var / lib / mysql

lệnh. '--default-authentication-plugin=mysql_native_password'

mạng.

   - ứng dụng - mạng

 

Dịch vụ mã ứng dụng #WordPress

ứng dụng.

  phụ thuộc.

   - db

  hình ảnh. wordpress. 5. 1. 1 - fpm - alpine

  container_name. app

  khởi động lại. trừ khi - dừng

  env_file. . vi

  environment.

   - WORDPRESS_DB_HOST = db. 3306

   - WORDPRESS_DB_USER = $MYSQL_USER

   - WORDPRESS_DB_PASSWORD = $MYSQL_PASSWORD

   - WORDPRESS_DB_NAME = wordpress

  volumes.

   - app. / var / www / html

  networks.

   - app - network

 

#Dịch vụ máy chủ web Nginx

máy chủ web.

  phụ thuộc.

   - app

  image. nginx. 1. 15. 12 - alpine

  container_name. webserver

  khởi động lại. trừ khi - dừng

  ports.

   - "80. 80"

  volumes.

   - app. / var / www / html

   - . / nginx - conf. / etc / nginx / conf. d

   - certbot - etc. / etc / letsencrypt

  networks.

   - app - network

 

#certbot service

  certbot.

  phụ thuộc.

   - webserver

  image. certbot / certbot

  container_name. certbot

  volumes.

   - certbot - etc. / etc / letsencrypt

   - app. / var / www / html

  command. certonly -- webroot -- webroot - path =/ var / www / html -- email hackins@cloudsigma. com -- agree - tos -- no - eff - email -- staging - d example. com - d www. example. com

 

#tập

khối lượng.

  certbot - etc.

  app.

  dbdata.

 

#Mạng

mạng.

  app - network.

   driver. bridge

You can save and close the file. In the next step, we will be starting and testing the container and certificate requests

Step 4. Running the Containers and Obtaining SSL Certificates

The greatest advantage of Docker Compose is that, once you have defined all your services in the nano0 file, you can start all the containers with just one command. example.com37. The command runs every instruction specified. If the domain requests are successful, you should be able to see the correct exit status in your terminal. Enter the following command to create the containers. The example.com38 flag is for running the containers in the background

1

docker - soạn lên - d

Nếu bạn thấy đầu ra như trong ảnh chụp màn hình bên dưới, thì dịch vụ đã được tạo thành công

Làm cách nào để cài đặt WordPress trong bộ chứa Docker?

Để xác nhận trạng thái của các dịch vụ, hãy chạy lệnh example.com39

1

docker - compose ps

The output of the command is as shown below if everything was successful. The listen6, nano3, and server_name1 containers’ state should be up, and the example.com10 container should have example.com44example.com45 status

Làm cách nào để cài đặt WordPress trong bộ chứa Docker?

Nếu bạn thấy bất kỳ điều gì khác ngoài example.com46 trong cột trạng thái cho example.com47 nano3 hoặc example.com49 hoặc trạng thái example.com44 không phải là example.com45 cho vùng chứa example.com10 thì có nghĩa là đã xảy ra sự cố. Bạn có thể kiểm tra nhật ký của từng vùng chứa bằng lệnh example.com53 và chỉ định example.com54

1

docker - compose logs service_name

For example, you can check the logs of the example.com10 container by entering the following command

1

docker - compose logs certbot

To check if the certificates were mounted to the server_name1 container, use the example.com57 command

1

docker - compose exec webserver ls - la / etc / letsencrypt / live

Nếu bạn đã sử dụng một tên miền đã đăng ký thực tế khác với example.com và các yêu cầu chứng chỉ đã thành công, bạn sẽ thấy kết quả tương tự như sau

Làm cách nào để cài đặt WordPress trong bộ chứa Docker?

Khi bạn đã xác nhận rằng yêu cầu chứng chỉ đã thành công, bạn có thể chỉnh sửa tệp nano0 và xóa cờ example.com60. Mở tệp bằng nano

1

nano docker - compose. yml

Cuộn xuống phần định nghĩa dịch vụ Certbot, trong tùy chọn lệnh và thay cờ example.com60 bằng cờ example.com63. Điều này cho Certbot biết rằng bạn đang yêu cầu gia hạn chứng chỉ cho chứng chỉ của cùng một miền. Định nghĩa dịch vụ Certbot của bạn bây giờ sẽ trông như thế này

1

2

3

4

5

6

7

8

9

10

#certbot service

certbot.

phụ thuộc.

   - webserver

image. certbot / certbot

container_name. certbot

khối lượng.

   - certbot - vv: / vv / letsencrypt

   - ứng dụng. / var / www / html

lệnh. chắc chỉ -- webroot -- webroot-path=/var/www/html --email hackins@cloudsigma.com -- đồng ý - . --no-eff-email --force-renewal -d example.com - d www. ví dụ. com

Lưu tệp khi bạn chỉnh sửa xong

Nhập lệnh sau để tạo lại vùng chứa example.com10. Cờ example.com65 đi kèm yêu cầu Compose bỏ qua việc khởi động lại dịch vụ máy chủ web vì nó đang chạy

1

docker - soạn lên -- force-recreate --no-deps Certbot

Lệnh xuất ra ảnh chụp màn hình sau, cho thấy rằng yêu cầu chứng chỉ đã thành công

Làm cách nào để cài đặt WordPress trong bộ chứa Docker?

Đó là tất cả cho bước này. Trong bước tiếp theo, bạn sẽ sửa đổi tệp cấu hình Nginx để bao gồm chứng chỉ SSL

Bước 5. Kích hoạt SSL trong Định nghĩa dịch vụ và cấu hình Nginx

Để làm cho Nginx phục vụ lưu lượng truy cập qua SSL an toàn, trước tiên bạn sẽ sửa đổi tệp cấu hình Nginx để thêm chuyển hướng example.com66 thành example.com67. Sau đó, bạn cần chỉ định chứng chỉ và các vị trí khóa, cuối cùng thêm các tiêu đề và tham số bảo mật

Trước khi sửa đổi tệp cấu hình, bạn nên lấy các tham số bảo mật Nginx được đề xuất từ ​​kho lưu trữ GitHub của Certbot bằng cách sử dụng example.com68 bằng lệnh sau

1

curl - sSLo nginx - conf/options-ssl-nginx.conf

https. // thô. githubusercontent. com/certbot/certbot/master/certbot-nginx/certbot_nginx/_internal/tls_configs/options-ssl-nginx. conf

Lệnh chạy và lưu các tham số mà nó kéo vào một tệp có tên là example.com69, bên trong thư mục example.com70. Xóa tệp cấu hình Nginx để chúng tôi có thể tạo một tệp mới bằng các lệnh sau

1

2

rm nginx - conf / nginx.conf

nano nginx - conf / nginx.conf

Trong tệp server_name8 hiện đang trống, hãy thêm mã sau bao gồm chuyển hướng từ giao thức xác thực example.com66 sang example.com73 và tiêu đề bảo mật. Như bạn đã làm trước đó, hãy thay miền example.com bằng miền đã đăng ký của riêng bạn

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

máy chủ {

    nghe 80;

    nghe [. . ]. 80;

 

    server_name ví dụ. com www. ví dụ. com;

 

    vị trí ~ / . à - biết / acme-challenge {

        cho phép tất cả;

        gốc / var / www/html;

    }

 

    vị trí / {

        viết lại ^ https. //$host$request_uri?

    }

}

 

máy chủ {

    nghe 443 ssl http2;

    nghe [. . ]. 443 ssl http2;

    server_name ví dụ. com www. ví dụ. com;

 

    chỉ mục chỉ mục. php chỉ mục. html chỉ mục. htm;

 

    root / var / www/html;

 

    server_tokens tắt;

 

    ssl_certificate / vv / letsencrypt/live/example.com / fullchain. pem;

    ssl_certificate_key / v.v / letsencrypt/live/example.com / khóa riêng tư. pem;

 

    bao gồm / v.v / nginx/conf.d / tùy chọn - ssl . -nginx.conf;

 

    add_header X - Khung-Options "SAMEORIGIN" always;

    add_header X - XSS-Protection "1; mode=block" always;

    add_header X - Nội dung-Type-Options "nosniff" always;

    add_header Người giới thiệu - Chính sách "no-referrer-when-downgrade" always;

    add_header Nội dung - Bảo mật-Policy "default-src * data: 'unsafe-eval' 'unsafe-inline'" luôn luôn;

    # add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" luôn;

    # chỉ bật bảo mật vận chuyển nghiêm ngặt nếu bạn hiểu ý nghĩa

 

    vị trí / {

        try_files $uri $uri/ /index.php$is_args$args;

    }

 

    vị trí ~ \. php$ {

        try_files $uri = 404;

        fastcgi_split_path_info ^ (. + \. php)( / . + )$;

        fastcgi_pass ứng dụng. 9000;

        fastcgi_index index. php;

        bao gồm fastcgi_params;

        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

        fastcgi_param PATH_INFO $fastcgi_path_info;

    }

 

    vị trí ~ / \.ht {

    từ chối tất cả;

    }

 

    vị trí = / favicon.ico {

        log_not_found tắt; access_log off;

    }

    vị trí = / rô-bốt.txt {

        log_not_found tắt; access_log off; allow all;

    }

    vị trí ~ * \.(css. gif. ico. jpeg. jpg. . png)$ {

        hết hạn tối đa;

        log_not_found tắt;

    }

}

Trong khối máy chủ đầu tiên xử lý các yêu cầu không an toàn bằng cổng 80, chúng tôi chỉ định webroot cho các yêu cầu gia hạn Certbot. Chúng tôi cũng bao gồm một lệnh chuyển hướng để chuyển hướng các yêu cầu của example.com66 sang example.com67

Khối máy chủ thứ hai xử lý lưu lượng truy cập example.com67 an toàn đến trên cổng 443. Như bạn có thể thấy, chúng tôi cũng kích hoạt SSL và example.com80 cải thiện hiệu suất máy chủ của bạn. Bạn có thể đọc thêm về nó từ các tài liệu Nginx chính thức trên HTTP/2

Trong khối này, chúng tôi cũng đã chỉ định rằng Nginx bao gồm chứng chỉ SSL và các vị trí quan trọng, cũng như các tham số bảo mật Certbot được đề xuất mà example.com68 đã lưu vào thư mục example.com82

Các tiêu đề bảo mật bổ sung phục vụ để cải thiện xếp hạng trang web của bạn trên các trang web kiểm tra bảo mật như Tiêu đề bảo mật và Phòng thí nghiệm SSL. Bạn có thể theo các liên kết trên các tiêu đề này để tìm hiểu thêm. X-Frame-Options, Referrer Policy, X-Content-Type-Options, X-XSS-Protection, Content-Security-Policy. Chúng tôi đã nhận xét tiêu đề HTTP Strict Transport Security (HSTS). Bạn có thể tự do đọc về chức năng tải trước của nó và quyết định xem bạn có muốn kích hoạt nó không

Phần còn lại của các chỉ thị, chẳng hạn như khối vị trí dành riêng cho WordPress example.com83 vẫn như đã thảo luận trong Bước 1. Bây giờ bạn có thể lưu và đóng tệp khi chỉnh sửa xong

Bây giờ chúng tôi đã kích hoạt lưu lượng truy cập example.com67 sử dụng cổng example.com85, chúng tôi cũng phải kích hoạt cổng trên định nghĩa dịch vụ của máy chủ web. Nhập lệnh sau để mở tệp nano0 bằng example.com87

1

nano docker - compose. yml

Trong phần máy chủ web bên dưới tùy chọn cổng, hãy thêm ánh xạ cho cổng 443 như được đánh dấu bên dưới

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

máy chủ web.

phụ thuộc.

   - ứng dụng

hình ảnh. nginx. 1. 15. 12 - núi cao

container_name. máy chủ web

khởi động lại. trừ khi - dừng

cổng.

   - "80. 80"

   - "443. 443"

khối lượng.

   - ứng dụng. / var / www / html

   - . / nginx - conf. / vv / nginx / . conf.d

   - certbot - vv: / vv / letsencrypt

mạng.

   - ứng dụng - mạng

Tệp nano0 hoàn chỉnh bây giờ trông như thế này

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

phiên bản. '3'

 

dịch vụ.

Dịch vụ #MySQL

db.

  hình ảnh. mysql. 8. 0

  container_name. db

  khởi động lại. trừ khi - dừng

  env_file. . vi

  environment.

   - MYSQL_DATABASE = wordpress

  volumes.

   - dbdata. / var / lib / mysql

  lệnh. '--default-authentication-plugin=mysql_native_password'

  networks.

   - app - network

 

Dịch vụ mã ứng dụng #WordPress

ứng dụng.

  phụ thuộc.

   - db

  hình ảnh. wordpress. 5. 1. 1 - fpm - alpine

  container_name. app

  khởi động lại. trừ khi - dừng

  env_file. . vi

  environment.

   - WORDPRESS_DB_HOST = db. 3306

   - WORDPRESS_DB_USER = $MYSQL_USER

   - WORDPRESS_DB_PASSWORD = $MYSQL_PASSWORD

   - WORDPRESS_DB_NAME = wordpress

  volumes.

   - app. / var / www / html

  networks.

   - app - network

 

#Dịch vụ máy chủ web Nginx

máy chủ web.

  phụ thuộc.

   - app

  image. nginx. 1. 15. 12 - alpine

  container_name. webserver

  khởi động lại. trừ khi - dừng

  ports.

   - "80. 80"

   - "443. 443"

  volumes.

   - app. / var / www / html

   - . / nginx - conf. / etc / nginx / conf. d

   - certbot - etc. / etc / letsencrypt

  networks.

   - app - network

 

#certbot service

certbot.

  phụ thuộc.

   - webserver

  image. certbot / certbot

  container_name. certbot

  volumes.

   - certbot - etc. / etc / letsencrypt

   - app. / var / www / html

  lệnh. chắc chỉ -- webroot -- webroot-path=/var/www/html --email hackins@cloudsigma.com -- đồng ý - . --no-eff-email --force-renewal -d example.com - d www. ví dụ. com

 

#tập

khối lượng.

  certbot - etc.

  app.

  dbdata.

 

#Mạng

mạng.

  app - network.

   driver. bridge

Khi bạn đã xác nhận rằng mọi thứ đều chính xác, hãy lưu và đóng tệp. Sau đó, chạy lệnh sau để tạo lại dịch vụ server_name1

1

docker - soạn lên - d --force-recreate --no-deps webserver

Xác nhận rằng các dịch vụ của bạn đang chạy bằng lệnh sau

1

docker - compose ps

Bạn sẽ thấy một cái gì đó giống như ảnh chụp màn hình bên dưới xác nhận rằng dịch vụ của bạn đang chạy tốt

Làm cách nào để cài đặt WordPress trong bộ chứa Docker?

Bây giờ tất cả các vùng chứa của bạn đang chạy, bạn có thể tiến hành cấu hình WordPress từ giao diện web

Bước 6. Hoàn thành cấu hình WordPress của bạn từ giao diện web

Điều hướng đến tên miền của máy chủ của bạn để tiếp tục cài đặt. Bạn sẽ thấy trang chủ thiết lập WordPress. Nó hoan nghênh bạn chọn ngôn ngữ của bạn trước khi tiếp tục

Làm cách nào để cài đặt WordPress trong bộ chứa Docker?

Chọn ngôn ngữ của bạn và nhấp vào Tiếp tục để chuyển sang trang tiếp theo

Làm cách nào để cài đặt WordPress trong bộ chứa Docker?

 

Trên trang này, hãy điền tiêu đề trang web của bạn, chọn tên người dùng dễ nhớ và mật khẩu mạnh. Bạn không nên sử dụng Quản trị viên làm tên người dùng vì lý do bảo mật. Nhập email của bạn và nhấp vào nút Cài đặt WordPress để bắt đầu cài đặt WordPress

Sau khi cài đặt hoàn tất, bạn sẽ được đưa đến màn hình đăng nhập nơi bạn sẽ cung cấp tên người dùng và mật khẩu bạn đã đặt. Khi bạn nhập thông tin đăng nhập hợp lệ, bạn sẽ có thể thấy bảng điều khiển WordPress của mình

Làm cách nào để cài đặt WordPress trong bộ chứa Docker?

Bây giờ bạn đã cài đặt thành công WordPress. Tiếp theo, bạn cần thực hiện các bước để đảm bảo rằng chứng chỉ SSL sẽ tự động gia hạn

Bước 7. Định cấu hình gia hạn chứng chỉ SSL tự động

Chứng chỉ Let's Encrypt TLS/SSL chỉ có hiệu lực trong 90 ngày. Tùy thuộc vào bạn để tạo cấu hình tự động gia hạn để đảm bảo chúng không hết hạn. Bạn có thể đạt được điều này bằng cách tạo một tập lệnh và lên lịch cho nó bằng tiện ích công việc định kỳ. Trong bước này, chúng tôi sẽ chỉ cho bạn cách tạo tập lệnh sẽ gia hạn chứng chỉ. Sau đó, chúng tôi sẽ lên lịch với tiện ích công việc định kỳ để chạy nó định kỳ và gia hạn chứng chỉ nếu chúng sắp hết hạn

Bên trong thư mục dự án wordpress_docker, hãy mở tập lệnh có tên là example.com92 với nano

1

nano ssl_renewer. sh

Thêm mã sau vào tập lệnh để xử lý tự động gia hạn và tải lại cấu hình Nginx. Hãy nhớ thay thế tên người dùng được đánh dấu bằng tên người dùng không phải root của bạn

1

2

3

4

5

6

7

8

#. /bin/bash

 

COMPOSE = "/usr/local/bin/docker-compose –ansi never"

DOCKER = "/usr/bin/docker"

 

cd / nhà / hack/wordpress_docker/

$SOẠN chạy certbot gia hạn --dry-run && $COMPOSE kill -s SIGHUP webserver

$DOCKER hệ thống cắt tỉa - af

Trong tập lệnh này, chúng tôi gán nhị phân example.com94 cho một biến có tên là example.com95. Chúng tôi cũng bao gồm tùy chọn example.com96 cho biết tập lệnh chạy các lệnh example.com94 mà không cần các ký tự điều khiển ANSI. Chúng tôi tiếp tục gán nhị phân Docker cho một biến có tên là example.com98

Sau đó, tập lệnh sẽ chuyển vào thư mục dự án của chúng tôi wordpress_docker và thực hiện các lệnh sau

  • www.example.com00. nó khởi động bộ chứa certbot và ghi đè lệnh mà chúng tôi đã cung cấp trong định nghĩa dịch vụ certbot. Thay vì chỉ chạy tiểu ban chứng chỉ, nó chạy tiểu ban gia hạn sẽ gia hạn chứng chỉ SSL/TLS từ Let's Encrypt nếu chúng sắp hết hạn
  • www.example.com01. gửi tín hiệu SIGUP đến bộ chứa server_name1 để tải lại cấu hình Nginx. Bạn có thể muốn xem hướng dẫn này từ Docker về cách sử dụng hình ảnh Nginx Docker chính thức
  • www.example.com03. lệnh này loại bỏ tất cả các vùng chứa và hình ảnh không sử dụng

Lưu và đóng tệp khi bạn chỉnh sửa xong. Sau đó, chạy lệnh sau để làm cho nó có thể thực thi được

1

chmod + x ssl_renewer. sh

Khi bạn đã làm cho nó có thể thực thi được, hãy mở tệp gốc www.example.com04 của bạn để chạy tập lệnh định kỳ theo các khoảng thời gian mà chúng tôi sẽ chỉ định

1

sudo crontab - e

www.example.com04 yêu cầu bạn chọn trình chỉnh sửa ưa thích nếu đây là lần đầu tiên bạn sử dụng nó

Làm cách nào để cài đặt WordPress trong bộ chứa Docker?

Chọn trình soạn thảo ưa thích của bạn và nhấn Enter để mở tệp. Ở cuối tệp, thêm dòng sau

1

*/ 5 * * * * /home/hackins/wordpress_docker/ssl_renewer.sh >> / var . /log/cron_docker.log 2>&1

Điều này đặt khoảng thời gian trong năm phút để cho phép chúng tôi kiểm tra xem tập lệnh gia hạn của chúng tôi có hoạt động hay không. Chúng tôi cũng đã chỉ định một tệp nhật ký sẽ chứa đầu ra từ công việc. www.example.com06

Đợi năm phút và kiểm tra www.example.com07 để xem tập lệnh có thành công với yêu cầu gia hạn không

1

đuôi - f / var/log/cron_docker.nhật ký

Bạn sẽ thấy một cái gì đó tương tự như ảnh chụp màn hình bên dưới nếu yêu cầu thành công

Làm cách nào để cài đặt WordPress trong bộ chứa Docker?

Bây giờ chúng tôi đã kiểm tra và xác nhận nó đang hoạt động, bạn có thể sửa đổi tệp www.example.com04 để chỉ định gia hạn hàng ngày. Ví dụ: bạn có thể muốn chỉ định rằng tập lệnh chạy hàng ngày lúc 6 giờ. BUỔI CHIỀU. Để làm điều đó, hãy sửa đổi dòng cuối cùng của www.example.com04 thành như thế này

1

0 18 * * * /home/hackins/wordpress_docker/ssl_renewer.sh >> / var . /log/cron_docker.log 2>&1

Ngoài ra, bạn cần xóa cờ www.example.com10 khỏi tập lệnh example.com92 để đảm bảo quá trình gia hạn thực sự diễn ra khi tập lệnh chạy. Nó sẽ giống như thế này

1

2

3

4

5

6

7

8

#. /bin/bash

 

COMPOSE = "/usr/local/bin/docker-compose --ansi never"

DOCKER = "/usr/bin/docker"

 

cd / nhà / hack/wordpress_docker/

$SOẠN chạy certbot gia hạn && $COMPOSE kill -s SIGHUP webserver

$DOCKER hệ thống cắt tỉa - af

Tiếp theo, lưu và đóng tệp. Sau khi hoàn thành việc đó, công việc định kỳ sẽ giữ cho các tập lệnh của bạn hợp lệ, bằng cách gia hạn chúng trước khi kết thúc 90 ngày

Phần kết luận

Nếu bạn đã đạt đến mức này trong hướng dẫn, bạn có thể coi mình đã tiến một bước gần hơn đến việc trở thành Kỹ sư DevOps. Bạn đã có thể tạo tập lệnh cấu hình Nginx, tạo tệp nano0 và xác định một số dịch vụ cần thiết để chạy ứng dụng WordPress với Docker và Docker Compose. Bạn đã nhận được chứng chỉ SSL/TLS từ Let's Encrypt để đảm bảo rằng máy chủ web của bạn được an toàn. Cuối cùng, bạn đã tạo một công việc định kỳ để đảm bảo rằng các chứng chỉ không hết hạn. Làm tốt lắm

Nếu bạn đang cố tìm hiểu sâu hơn về DevOps, hãy xem thêm tài nguyên về vùng chứa từ blog của chúng tôi

Có thể cài đặt WordPress trên Docker từ dòng lệnh không?

Nó chính thức có sẵn trên Docker và cung cấp các hướng dẫn dễ dàng với hình ảnh cập nhật. Bắt đầu bằng cách tạo một thư mục mới nơi bạn muốn lưu trữ các tệp cho WordPress và MariaDB chẳng hạn trong thư mục chính của bạn. Việc tải xuống và cài đặt bộ chứa MariaDB mới đều có thể được thực hiện bằng một lệnh duy nhất.

Làm cách nào để cài đặt WordPress trên Docker Ubuntu?

Cài đặt WordPress với Docker trên Ubuntu 20. 04 .
Bước 1 – Tạo Đại Tây Dương. Máy chủ đám mây mạng. .
Bước 2 - Cài đặt các phụ thuộc cần thiết. .
Bước 3 – Cài đặt Docker. .
Bước 4 – Tạo Bộ chứa MariaDB. .
Bước 5 – Tạo vùng chứa WordPress. .
Bước 6 – Định cấu hình Nginx làm Proxy ngược. .
Bước 7 – Truy cập giao diện WordPress

Làm cách nào để chuyển WordPress sang Docker?

Tạo thư mục làm việc .
Tạo docker-compose. yml
Chạy với docker-compose up -d
Trong trường hợp sử dụng mac M1
Xuất từ ​​trang web hiện có
Nhập vào WordPress cục bộ
Trong trường hợp trang web hiện có, kích thước hơi lớn
sửa đổi php. ini để tăng upload_max_filesize
Những bài viết liên quan