Caddy là một máy chủ web nguồn mở được viết bằng ngôn ngữ Go. Nó cung cấp hỗ trợ HTTP/3, TLS v1.3, cấu hình SSL tự động với Let's Encrypt, proxy ngược và hỗ trợ nhiều plugin để mở rộng chức năng của nó. Nó có lợi thế là tất cả cấu hình của nó được phục vụ từ một tệp duy nhất bất kể bạn cần lưu trữ bao nhiêu trang web.
Hướng dẫn này sẽ đề cập đến việc cài đặt và cấu hình Caddy và PHP trên các máy chủ chạy Fedora 34 và CentOS 8. Chúng tôi sẽ hướng dẫn cách lưu trữ một hoặc nhiều trang web và cách sử dụng proxy ngược cùng với một số tính năng bảo mật khác.
[*]
Đảm bảo mọi thứ đã được cập nhật.
Kiểm tra xem tường lửa có đang chạy không.
Bạn sẽ nhận được kết quả sau.
Kiểm tra các dịch vụ/cổng hiện được phép.
Kết quả sau sẽ hiển thị.
Cho phép các cổng HTTP và HTTPS.
Kiểm tra lại trạng thái của tường lửa.
Bạn sẽ thấy kết quả tương tự.
Tải lại Tường lửa.
Bạn có thể xác minh cài đặt bằng lệnh sau.
Gói Fedora / CentOS bao gồm một Caddyfile tại
Bật và khởi động daemon caddy.
Bạn có thể mở URL
Caddy cung cấp nhiều tính năng và cấu hình, vì vậy chúng tôi sẽ chỉ sử dụng những tính năng và cấu hình quan trọng để phục vụ cho trang web của mình. Cấu hình mặc định phục vụ qua HTTP, được chỉ định là
Chỉ thị
Tạo một thư mục để lưu trữ trang web của bạn và lưu trữ các tệp nhật ký của bạn.
Đặt quyền sở hữu thư mục cho Caddy.
Tạo một tệp HTML để kiểm tra và mở tệp đó để chỉnh sửa.
Thêm mã sau.
Nhấn Ctrl + X để đóng trình chỉnh sửa và nhấn Y khi được nhắc lưu tệp.
Mở Caddyfile để chỉnh sửa.
Thay thế mã hiện có bằng mã sau.
Nhấn Ctrl + X để đóng trình soạn thảo và nhấn Y khi được nhắc lưu tệp.
Chúng ta hãy xem qua tất cả các lệnh trong tệp. Lệnh
Lệnh
Trong mã trên, các tệp nhật ký được xoay vòng bị giới hạn ở 10 MB và bị xóa sau 10 ngày (240 giờ) hoặc khi có hơn 5 nhật ký được xoay vòng.
Caddy sẽ tự động tạo và cài đặt chứng chỉ SSL mà không cần bất kỳ sự can thiệp nào. Chỉ thị
Chỉ thị
Sau khi hoàn tất, bạn có thể xác thực cấu hình của mình bằng lệnh sau.
Chúng ta phải sử dụng tùy chọn
Nếu bạn nhận được cảnh báo sau, bạn có thể dễ dàng khắc phục chỉ bằng một lệnh duy nhất.
Chạy lệnh sau để khắc phục lỗi.
Lệnh trên định dạng và ghi đè lên Caddyfile.
Khởi động lại Caddy để kích hoạt cấu hình. Bạn sẽ cần khởi động lại máy chủ mỗi khi thực hiện thay đổi trong cấu hình.
Mở https://example.com?utm_source=diendancongnghe.comtrong trình duyệt của bạn và bạn sẽ thấy trang sau, điều đó có nghĩa là cấu hình đang hoạt động.
Phương pháp này phù hợp với một vài trang web, nhưng một trang web có thể trở nên khá lớn và khó bảo trì nếu bạn đang lưu trữ nhiều trang web.
Tạo thư mục `/etc/caddy/caddyconf.
Bây giờ bạn có thể nhập các tệp cấu hình từ thư mục trong
Bước cuối cùng là tạo các tệp cấu hình riêng lẻ cho từng trang web.
Bạn cũng sẽ cần phải cài đặt PHP.
Bạn có thể cài đặt bất kỳ module PHP bổ sung nào mà bạn yêu cầu. Bạn cũng sẽ cần phải cấu hình tệp
Chúng ta cần đặt người dùng/nhóm Unix của các quy trình PHP thành caddy. Tìm các dòng
Tìm dòng
Lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc.
Bắt đầu quy trình PHP-fpm.
Để kiểm tra thiết lập PHP của bạn, hãy tạo tệp
Thêm nội dung sau vào đó và lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc.
Hướng dẫn này sẽ đề cập đến việc cài đặt và cấu hình Caddy và PHP trên các máy chủ chạy Fedora 34 và CentOS 8. Chúng tôi sẽ hướng dẫn cách lưu trữ một hoặc nhiều trang web và cách sử dụng proxy ngược cùng với một số tính năng bảo mật khác.
Điều kiện tiên quyết
-
Máy chủ chạy Fedora 34 hoặc CentOS 8
-
Người dùng không phải root có quyền sudo
-
Tên miền trỏ đến địa chỉ IP của máy chủ
-
SELinux đã bị vô hiệu hóa.
Mã:
$ sudo setenforce 0
Đảm bảo mọi thứ đã được cập nhật.
Mã:
$ sudo dnf update
Bước 1 - Cấu hình Tường lửa
Bước đầu tiên là cấu hình Tường lửa để mở các cổng HTTP và HTTPS. Fedora và CentOS đi kèm với tường lửa Firewalld được cài đặt sẵn.Kiểm tra xem tường lửa có đang chạy không.
Mã:
$ sudo firewall-cmd --state
Mã:
đang chạy
Mã:
$ sudo firewall-cmd --permanent --list-services
Mã:
dhcpv6-client mdns ssh
Mã:
$ sudo firewall-cmd --permanent --add-service=http$ sudo firewall-cmd --permanent --add-service=https
Mã:
$ sudo firewall-cmd --permanent --list-services
Mã:
dhcpv6-client http https mdns ssh
Mã:
$ sudo systemctl reload firewalld
Bước 2 - Cài đặt Caddy
Bước đầu tiên là cài đặt máy chủ. Các bước cài đặt vẫn giống nhau đối với cả Fedora 34 và CentOS 8.
Mã:
$ sudo dnf install 'dnf-command(copr)'$ sudo dnf copr enable @caddy/caddy$ sudo dnf install caddy
Mã:
$ caddy versionv2.4.3 h1:Y1FaV2N4WO3rBqxSYA8UZsZTQdN+PwcoOcAiZTM8C0I=
Bước 3 - Cơ bản về cấu hình Caddy
Caddy sử dụng JSON làm định dạng chính để lưu trữ hoặc ghi cấu hình. Đây là cách linh hoạt nhất để ghi cấu hình và hỗ trợ tất cả các tính năng của Caddy. Nhưng nếu bạn không biết cách viết các tệp JSON, Caddy cung cấp một cách dễ dàng hơn dưới dạng Caddyfile.Gói Fedora / CentOS bao gồm một Caddyfile tại
/etc/caddy/Caddyfile
. Nó sẽ trông giống như sau (bỏ qua các bình luận)
Mã:
:80 { root * /usr/share/caddy file_server}
Mã:
$ sudo systemctl enable --now caddy
http://youripaddress
để kiểm tra.Bạn sẽ thấy trang chào mừng sau.Caddy cung cấp nhiều tính năng và cấu hình, vì vậy chúng tôi sẽ chỉ sử dụng những tính năng và cấu hình quan trọng để phục vụ cho trang web của mình. Cấu hình mặc định phục vụ qua HTTP, được chỉ định là
:80
. Chỉ thị root
yêu cầu Caddy tìm kiếm các tệp sẽ được phục vụ trong thư mục /usr/share/caddy
.Chỉ thị
file_server
yêu cầu Caddy hoạt động như một máy chủ tệp, nghĩa là nó sẽ chỉ phục vụ các tệp tĩnh qua địa chỉ mặc định.Cấu hình Caddy cho một trang web HTML cơ bản
Chúng ta hãy tạo một tệp cấu hình caddy cơ bản để phục vụ một trang web tĩnh.Tạo một thư mục để lưu trữ trang web của bạn và lưu trữ các tệp nhật ký của bạn.
Mã:
$ sudo mkdir -p /var/www/example.com/html$ sudo mkdir /var/log/caddy
Mã:
$ sudo chown caddy:caddy /var/www/example.com/html -R$ sudo chown caddy:caddy /var/log/caddy
Mã:
$ sudo nano /var/www/example.com/html/index.html
Mã:
Xin chào từ Caddy![HEADING=1]Xin chào, từ Caddy![/HEADING]
Mở Caddyfile để chỉnh sửa.
Mã:
$ sudo nano /etc/caddy/Caddyfile
Mã:
example.com { root * /var/www/example.com/html file_server mã hóa gzip log { tệp đầu ra /var/log/caddy/example.access.log } @static { đường dẫn tệp *.ico *.css *.js *.gif *.jpg *.jpeg *.png *.svg *.woff *.pdf *.webp } header @static Cache-Control max-age=5184000 tls [emailprotected]}
Chúng ta hãy xem qua tất cả các lệnh trong tệp. Lệnh
encode gzip
yêu cầu Caddy nén các tệp bằng cách sử dụng nén Gzip.Lệnh
log
xuất nhật ký truy cập cho trang web vào tệp /var/log/caddy/example.access.log
. Theo mặc định, Caddy sẽ xoay vòng các tệp nhật ký khi chúng đạt 100 MB. Các tệp đã xoay vòng sẽ bị xóa sau 90 ngày hoặc khi có hơn 10 nhật ký đã xoay vòng. Bạn có thể thay đổi các tham số mặc định theo cách sau.
Mã:
log { tệp đầu ra /var/log/caddy/example.access.log { roll_size 10MB roll_keep 5 roll_keep_for 240h }}
Caddy sẽ tự động tạo và cài đặt chứng chỉ SSL mà không cần bất kỳ sự can thiệp nào. Chỉ thị
tls
cho phép chúng ta cung cấp các tùy chọn bổ sung để định cấu hình HTTPS như địa chỉ email được sử dụng để lấy báo cáo Let's Encrypt.Chỉ thị
header
bật Cache-control trên tất cả các tệp tĩnh (tệp hình ảnh/javascript/CSS). Bạn có thể thêm nhiều phần mở rộng tệp hơn hoặc sao chép mã để đặt thời lượng khác nhau cho các định dạng tệp khác nhau. Bạn sẽ phải thay đổi giá trị static
thành một giá trị khác vì đó là tham chiếu được đặt tên.Sau khi hoàn tất, bạn có thể xác thực cấu hình của mình bằng lệnh sau.
Mã:
$ caddy validate --adapter caddyfile --config /etc/caddy/Caddyfile
--adapter caddyfile
vì theo mặc định, lệnh này chỉ xác thực cấu hình JSON.Nếu bạn nhận được cảnh báo sau, bạn có thể dễ dàng khắc phục chỉ bằng một lệnh duy nhất.
Mã:
WARN input is not formatted with 'caddy fmt' {"adapter": "caddyfile", "file": "/etc/caddy/Caddyfile", "line": 2}
Mã:
$ caddy fmt --overwrite /etc/caddy/Caddyfile
Khởi động lại Caddy để kích hoạt cấu hình. Bạn sẽ cần khởi động lại máy chủ mỗi khi thực hiện thay đổi trong cấu hình.
Mã:
$ sudo systemctl restart caddy
Cấu hình nhiều site trong Caddy
Bạn có thể cấu hình nhiều site trong một tệp caddy duy nhất. Để thực hiện điều đó, hãy tạo các khối riêng biệt cho từng trang web theo cách sau.
Mã:
example1.com { root * /var/www/example1.com/html ...}example2.com { root * /var/www/example2.com/html ...}
Tạo thư mục `/etc/caddy/caddyconf.
Mã:
$ sudo mkdir /etc/caddy/caddyconf
/etc/caddty/caddyfile
của bạn ở đầu tệp.
Mã:
import caddyconf/*.conf
Cấu hình các trang web PHP
Cho đến nay, chúng ta chỉ nói về việc phục vụ các site tĩnh bằng Caddy. Bạn cũng có thể sử dụng Caddy để phục vụ các site PHP động một cách dễ dàng. Để bật hỗ trợ PHP, hãy thêm mã sau vào khối site của bạn.
Mã:
example1.com { root * /var/www/example1.com/html ... php_fastcgi unix//run/php-fpm/www.sock}
Mã:
$ sudo dnf install php-fpm php-cli php-gd
/etc/php-fpm.d/www.conf
. Mở tệp để chỉnh sửa.
Mã:
$ sudo nano /etc/php-fpm.d/www.conf
user=apache
và group=apache
trong tệp và đổi chúng thành nginx.
Mã:
...; Người dùng/nhóm quy trình Unix; Lưu ý: Người dùng là bắt buộc. Nếu nhóm không được đặt, nhóm người dùng mặc định; sẽ được sử dụng.; RPM: người dùng apache được chọn để cung cấp quyền truy cập vào cùng thư mục với httpduser = caddy; RPM: Giữ một nhóm được phép ghi vào thư mục nhật ký.group = caddy...
listen.acl_users = apache,nginx
và thay đổi giá trị của nó thành giá trị sau.
Mã:
...listen.acl_users = apache,nginx,caddy...
Bắt đầu quy trình PHP-fpm.
Mã:
$ sudo systemctl start php-fpm
test.php
trong thư mục html
.
Mã:
$ sudo nano /var/www/example.com/html/test.php
Mã: