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

Để cài đặt WordPress trong bộ chứa docker, bạn phải cài đặt docker và docker Compose trong Ubuntu của mình. Nếu bạn đã có docker và docker Compose, bây giờ bạn có thể làm theo các bước sau để cài đặt WordPress trong bộ chứa docker

Bước 1. Tạo một thư mục mới cho WordPress

$ mkdir ~/wordpressdocker/

nếu nó được lưu trong thư mục/home, hãy di chuyển tệp đã tạo của bạn vào thư mục/var/www/html

$ sudo mv wordpressdocker /var/www/html
Làm cách nào để cài đặt WordPress trên Docker Ubuntu?

sau đó điều hướng đến dự án wordpressdocker

$ cd /var/www/html/wordpressdocker

Tạo docker-compose. yml và chỉnh sửa nó bằng cách gõ như sau

$ touch docker-compose.yml
$ sudo nano docker-compose.yml
Làm cách nào để cài đặt WordPress trên Docker Ubuntu?

Sau khi bạn vào trong tệp, hãy sao chép và dán văn bản sau, đừng quên thay đổi thông tin đăng nhập.

Để cài đặt trong tương lai, bạn cần cài đặt gói curl, bạn sẽ cần nó để cài đặt Docker Compose

sudo apt-get install curl -y

Cài đặt Docker Compose

Phiên bản mới nhất của Docker Compose là 2. 12. 2, sử dụng lệnh bên dưới để tải kho lưu trữ về máy chủ của bạn. Bạn có thể kiểm tra phiên bản mới nhất tại đây

sudo curl -L "https://github.com/docker/compose/releases/download/v2.12.2/docker-compose-$(uname -s)-$(uname -m)" -o /home/docker-compose

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

Ghi chú. Kho lưu trữ sẽ được đặt tại /home/docker-compose

Sau khi cài đặt, kho lưu trữ đã tải xuống cần được thực thi

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

Để kiểm tra, bạn có thể sử dụng lệnh ls -la để kiểm tra quyền trên thư mục

Sao chép kho lưu trữ vào đường dẫn hệ thống

sudo mv /home/docker-compose /usr/local/bin/

Kiểm tra cài đặt bằng cách chạy lệnh docker-compose, nó sẽ cung cấp cho bạn một danh sách các lệnh có thể

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

Ghi chú. Nếu bạn nhận được -bash. /usr/local/bin/docker-compose. Không có lỗi tệp hoặc thư mục như vậy khi khởi động, hãy kiểm tra xem bạn đã sao chép kho lưu trữ vào thư mục hệ thống chưa. Bạn có thể gặp lỗi -bash. /usr/local/bin/docker-compose. Quyền bị từ chối, nó nói rằng kho lưu trữ không thể thực thi được, cấp cho nó quyền bằng cách sử dụng lệnh trên

Cài đặt WordPress và MySQL

Trước khi cài đặt chúng ta phải tạo thư mục và config cho Docker Compose của mình

mkdir wordpress

Và cũng tạo một cấu hình

________số 8_______

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

Trong cấu hình này, chúng tôi cần chỉ định hình ảnh của wordpress và cơ sở dữ liệu hình ảnh MySql, cần thiết để chạy WordPress

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

Ghi chú. Bạn có thể thay đổi cổng thành bất cứ điều gì bạn muốn

Chạy docker để tải xuống và kiểm tra cấu hình của bạn

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

Sau khi khởi chạy, bạn đã có thể truy cập trang web của trang wordpress của chúng tôi bằng cách sử dụng "https. //IP của bạn. 8080"

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

Cài đặt PhpMyAdmin

Trước khi cài đặt nó, hãy tắt docker soạn

sudo docker-compose down

Để cài đặt, bạn cần quay lại cấu hình docker của chúng tôi và nhập thông số hình ảnh và mạng

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
    • Một bản ghi A với 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 đoạn 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 để 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 này thành example.com2. Nó sẽ được tạo dưới dạng 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 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 các 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 lưu trữ 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 của bạn tương ứng

Đ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 để xây dựng 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. Việc chỉ định một phiên bản cụ thể (_______14_______6) luôn tốt hơn là sử dụng thẻ mới nhất (nano7) vì các phiên bản hình ảnh MySQL trong tương lai 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, đâ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 đè 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 để chỉ định rằng dịch vụ nano3 sẽ tham gia dịch vụ listen5, mà chúng tôi sẽ xác định khi 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 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 vùng 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 ta, thùng chứa listen6 phụ thuộc vào thùng chứa nano3. Do đó, nó sẽ bắt đầu sau khi công-ten-nơ 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 WordPress phiên bản 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. this directive defines additional environment variables. Đố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 đề cập đến 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 gọi là ứng dụng vào điểm gắn kết example.com2, được tạo bởi. The naming of volumes allows sharing of application code with other containers
  • listen3. finally, we add the app container to the listen5 to ensure it communicates with other containers on the network

That will be all for the listen6 service container for the WordPress image. Let’s now define the server_name1 service for the Nginx image. First, add the following code snippet below the app service definition in your nano0 file

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

#Webserver Nginx service

webserver.

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"

khối lượng.

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

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

   - certbot - etc. / etc / letsencrypt

mạng.

   - ứng dụng - mạng

We have already explained the listen9 option. In the case of this server_name1 service, the container will start after the listen6 container has started. The web server container is based on the alpine Nginx image. It has a similar restart policy as the previous service definitions. The other options in the webserver service definition include

  • server_name6. binds the ports between the host machine and the container. In , we had defined port 80 in the server_name8 file. This port is mapped to port 80 on the container
  • example.com00. we have a combination of bind mounts and named volumes under this option
    • listen6. example.com2. this volume definition mounts the WordPress application to the example.com2 directory that earlier on, we had set as root in the Nginx server block
    • 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. định nghĩa này gắn các khóa và chứng chỉ Let's Encrypt cho miền vào thư mục thích hợp trên vùng chứa
  • 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 - etc. / etc / 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 with additional options as listed below

    • example.com17. specifies the use of the webroot plugin which places files in the webroot folder for authentication
    • example.com18. specifies the path of the webroot directory
    • example.com19. specifies that you agree to ACME’s Terms of service
    • example.com20. specifies that you do not want to share your email with EFF. You can omit this if you want to share
    • example.com21. tells Certbot that you want to first get test certificates from the Let’s Encrypt staging environment for testing your configuration before obtaining the actual certificate. Let’s Encrypt has domain request rate limiting. Hence, first testing your configuration will help you avoid your domain getting limited
    • example.com22. this option takes the domain names for the certificate request. In this tutorial, we have included example.com and www.example.com. Please specify your actual registered domain

Our nano0 file is almost complete. However, you must also add the network and volume definitions below the Certbot service

1

2

3

4

5

6

7

8

9

10

#Volumes

khối lượng.

certbot - etc.

ứng dụng.

dbdata.

 

#Networks

mạng.

app - network.

driver. bridge

The example.com7 key defines the volumes to be shared with all the services (containers) defined in this compose file. example.com05, listen6, and example.com29. The contents of the volumes that Docker creates are stored in a directory managed by Docker on the host file system. example.com30. The contents of each volume are then mounted to any container that uses the volume. This makes it possible to share data and code between containers

The listen3 key defines the bridge network that allows communication between containers. Containers on the same bridge network such as server_name1 and nano3 can communicate securely through ports without exposing the traffic to the outside network. We only expose port 80 to allow access to the front-end website pages

The complete nano0 file will look like this

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.

  image. 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

command. '--default-authentication-plugin=mysql_native_password'

mạng.

   - ứng dụng - mạng

 

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

ứng dụng.

  depends_on.

   - db

  image. 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

 

#Webserver Nginx service

webserver.

  depends_on.

   - 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.

  depends_on.

   - 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. ví dụ. com

 

#Volumes

khối lượng.

  certbot - etc.

  app.

  dbdata.

 

#Networks

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 - compose up - d

If you see the output like in the screenshot below, then the services were created successfully

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

To confirm the status of the services, run the example.com39 command

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 trên Docker Ubuntu?

If you see anything other than example.com46 in the state column for example.com47 nano3 or example.com49 or an example.com44 status that is not example.com45 for the example.com10 container, then something went wrong. You can check the logs of each container using the command example.com53, and specify the 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

If you used an actual registered domain name other than the example.com and the certificate requests were successful, you should see an output similar to this

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

Once you have confirmed that the certificate request was successful, you can edit the nano0 file and remove the example.com60 flag. Open the file with nano

1

nano docker - compose. yml

Scroll down to the Certbot service definition section, in the command option and replace the example.com60 flag with example.com63 flag. This tells Certbot that you are requesting a certificate renewal for a certificate of the same domain. Your Certbot service definition should now look like this

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 - etc. / etc / letsencrypt

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

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

Save the file when you are done editing

Enter the following command to recreate the example.com10 container. The included example.com65 flag tells Compose to skip restarting the web server service since it’s already running

1

docker - compose up -- force - recreate -- no - deps Certbot

The command outputs the following screenshot, showing that the certificate request was successful

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

That is all for this step. 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

Step 5. Enabling SSL in Nginx Configuration and Service Definition

To make Nginx serve traffic over secure SSL, you will first modify the Nginx configuration file to add an example.com66 redirection to example.com67. Then, you need to specify the certificate and key locations, and finally add security parameters and headers

Before modifying the configuration file, you should get the recommended Nginx security parameters from Certbot’s GitHub repository using example.com68 with the following command

1

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

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

The command runs and saves the parameters it pulls into a file called example.com69, inside the example.com70 directory. Remove the Nginx configuration file so that we can create a new one with the following commands

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 đây bao gồm chuyển hướng từ example.com66 đến example.com73 giao thức xác thực 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 chuyển hướng yêu cầu example.com66 đến 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ư example.com83 Các khối vị trí dành riêng cho WordPress vẫn như được thảo luận trong. 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 với 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

webserver.

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"

khối lượng.

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

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

   - certbot - etc. / etc / letsencrypt

mạng.

   - ứng dụng - mạng

Tệp nano0 hoàn chỉnh bây giờ 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

73

phiên bản. '3'

 

dịch vụ.

Dịch vụ #MySQL

db.

  image. 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.

  depends_on.

   - db

  image. 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

 

#Webserver Nginx service

webserver.

  depends_on.

   - 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.

  depends_on.

   - 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

 

#Volumes

khối lượng.

  certbot - etc.

  app.

  dbdata.

 

#Networks

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 trên Docker Ubuntu?

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 trên Docker Ubuntu?

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 trên Docker Ubuntu?

 

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 trên Docker Ubuntu?

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

Add the following code to the script to handle auto-renewal and Nginx configuration reloading. Remember to replace the highlighted username with your non-root username

1

2

3

4

5

6

7

8

#. /bin/bash

 

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

DOCKER = "/usr/bin/docker"

 

cd / home / hackins / wordpress_docker /

$COMPOSE run certbot renew -- dry - run && $COMPOSE kill - s SIGHUP webserver

$DOCKER system prune - af

In this script, we assign the example.com94 binary to a variable called example.com95. We also include the example.com96 option which tells the script to run example.com94 commands without ANSI control characters. We further assign the Docker binary to a variable called example.com98

The script then moves into our project directory wordpress_docker and executes the following commands

  • www.example.com00. it starts the certbot container and overrides the command we had provided in the certbot service definition. Instead of running the certonly subcommand, it runs the renew subcommand which will renew the SSL/TLS certificates from Let’s Encrypt if they are about to expire
  • www.example.com01. sends a SIGHUP signal to the server_name1 container to reload the Nginx configurations. You may want to check out this tutorial from Docker on how to use the Official Nginx Docker image
  • www.example.com03. lệnh này xóa tất cả các vùng chứa và hình ảnh không sử dụng

Save and close the file when you finish editing. Then, run the following command to make it executable

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

The www.example.com04 asks you to choose your preferred editor if it’s your first time using it

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

Choose your preferred editor and press Enter to open the file. Ở 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 trên Docker Ubuntu?

Bây giờ chúng tôi đã kiểm tra và xác nhận rằng 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 đó, sửa đổi dòng cuối cùng của www.example.com04 để trông 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 / home / hackins / wordpress_docker /

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

$DOCKER system prune - 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

Làm cách nào để thiết lập WordPress trong Docker?

Các bước sau sẽ chỉ cho bạn cách cài đặt hệ thống quản lý nội dung WordPress trên bộ chứa Docker. .
Bước 1 – Cài đặt Docker. .
Bước 2 – Thiết lập WordPress Container trên Docker. .
Bước 3 – Hoàn tất cài đặt WordPress trên trình duyệt web

Làm cách nào để chạy WordPress trên bộ chứa Docker?

Sử dụng Vùng chứa cho WordPress (Với Docker) .
Bước 1. Cài đặt Soạn thư
Bước 2. Xác định dự án
Bước 3. Tạo tệp Docker cho YAML
Bước 4. Xây dựng dự án
Bước 5. Truy cập cài đặt WordPress của bạn

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 để chạy WordPress trên localhost Docker?

Dưới đây là ba bước để thiết lập phát triển WordPress cục bộ bằng Docker. .
Tải xuống và chạy Docker
Thiết lập vùng chứa với môi trường WordPress
Thiết lập và chạy vùng chứa của bạn

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

Cách cài đặt WordPress với Docker Compose (Từng bước) .
Bước 1. Cài đặt công cụ Docker. .
Bước 2. Cài đặt Docker Compose. .
Bước 3. Thiết lập tệp YML. .
Bước 4. Xây dựng vùng chứa WordPress. .
Bước 5. Truy cập vào trang web WordPress. .
Bước 6. Cập nhật vùng chứa WordPress