NỘI DUNG

Hosting tốc độ cao Vietnix - tốc độ tải trang trung bình dưới 1 giây
VPS siêu tốc Vietnix - trải nghiệm mượt mà, ổn định
17/05/2023
Lượt xem

Hướng dẫn cách lưu trữ một website với Caddy trên CentOS 7

17/05/2023
19 phút đọc
Lượt xem

Đánh giá

5/5 - (94 bình chọn)

Caddy là một trong những web server mã nguồn mở mới được sử dụng phổ biến hiện nay. Caddy không chỉ mang lại giải pháp đa nền tảng đơn giản, dễ sử dụng, mà còn đáp ứng được yêu cầu về hiệu suất, tốc độ đối với môi trường production. Hãy cùng Vietnix tìm hiểu cách lưu trữ một website với Caddy trên CentOS 7 qua bài viết được chia sẻ dưới đây.

Yêu cầu cần có

Trước khi đến với hướng dẫn chi tiết, bạn cần đáp ứng các điều kiện sau:

Yêu cầu cần có để lưu trữ một website với Caddy trên CentOS 7
Yêu cầu cần có để lưu trữ một website với Caddy trên CentOS 7
  • Một máy chủ CentOS 7 đã được thiết lập với tài khoản user non-root với quyền sudo.
  • Một tên miền đã được cấu hình và trỏ đến máy chủ của bạn. Đây là điều kiện không thể thiếu để Caddy có thể lấy chứng chỉ SSL cho website của bạn. Ngược lại, trong trường hợp bạn không sử dụng tên miền đáp ứng yêu cầu, trang web sẽ không được cung cấp mã hóa TLS an toàn. 
  • Có thể cài đặt hoặc không: Trình soạn thảo văn bản nano được cài đặt với sudo yum install nano. Mặc dù theo mặc định, CentOS thường đi kèm với văn bản vi, nhưng nano sẽ được ưu tiên hơn vì sự thân thiện với người dùng. 

Các bước thực hiện

Dưới đây là 7 bước chi tiết để lưu trữ một trang web với Caddy trên CentOS 7 mà bạn có thể tham khảo:

Hướng dẫn cách lưu trữ một website với Caddy trên CentOS 7
Hướng dẫn cách lưu trữ một website với Caddy trên CentOS 7

Bước 1: Cài đặt Caddy Binaries

Dự án Caddy sẽ cung cấp cho bạn một script để truy xuất và cài đặt các file binary vào máy chủ Caddy. Bạn nhập dòng sau để thực thi lệnh:

curl -s https://getcaddy.com | bash

Trên trình duyệt của mình, bạn có thể truy cập vào https://getcaddy.com để xem script , hoặc tải chúng xuống với wget hoặc curl trước khi bắt đầu thực thi. 

Trong suốt quá trình cài đặt, script sẽ giành quyền quản trị bằng sudo để đưa các file Caddy vào thư mục trên hệ thống. Khi đó, script có thể yêu cầu bạn nhập mật khẩu. Output lúc này sẽ hiển thị như sau: 

Caddy installation script output Downloading Caddy for linux/amd64... https://caddyserver.com/download/linux/amd64?plugins= Extracting... Putting caddy in /usr/local/bin (may require password) [sudo] password for vietnix: Caddy 0.10.2 Successfully installed

Sau khi kết thúc script, các file binary của Caddy đã được cài đặt và sẵn sàng sử dụng trên máy chủ. Để chắc chắn hơn về việc chúng đã được đặt đúng chỗ hay chưa, bạn có thể dùng which để kiểm tra.

which caddy

Lúc này, output sẽ hiển thị rằng bạn có thể tìm thấy file binary trong file /usr/local/bin/caddy.

Cần lưu ý là trong quá trình cài đặt, Caddy sẽ không tạo bất cứ cấu hình toàn hệ thống nào. Đồng thời Caddy sẽ không tự khởi động khi máy chủ khởi động. Vậy nên, bạn cần tạo tài khoản người dùng để sử dụng web server này. 

Bước 2: Tạo User và Group cho Caddie

Caddy mang lại những đặc quyền riêng khi người dùng cài đặt các gói hệ thống. Tuy nhiên, để đảm bảo an toàn và bảo mật tối đa, bạn không nên bắt đầu với superuser root. Thay vào đó, bạn nên tạo một người dùng chuyên dụng với tên là caddy dùng riêng cho quá trình chạy và truy cập vào các file Caddy.

Để tạo tài khoản người dùng với tên caddy, bạn cần nhập lệnh sau: 

sudo adduser -r -d /var/www -s /sbin/nologin caddy

Switch -r sẽ giúp cho tài khoản bạn vừa tạo được gọi là tài khoản hệ thống, còn switch -d biểu thị thư mục chính cho tài khoản đó. Trong trường hợp trên, thư mục này chính là /var/www mà bạn sẽ tạo sau này.

-s là sẽ cài đặt shell thành /sbin/nologin và khiến những người dùng không được cấp quyền không thể đăng nhập và truy cập vào shell hệ thống. Tham số cuối cùng trong câu lệnh trên chính là tên người dùng (user), ở trường hợp này là caddy.

Như vậy, bạn đã có user người dùng cho máy chủ Caddy, giờ là lúc bạn cần cấu hình cho các thư mục cần thiết để lưu trữ file cấu hình. Thao tác này sẽ được hướng dẫn cụ thể ở bước tiếp theo của bài viết. 

Bước 3: Thiết lập thư mục cần thiết

Ở bước này, bạn sẽ tiến hành tạo một số thư mục và file gắn liền với các quyền cụ thể để hỗ trợ cho việc cài đặt file đơn vị và hỗ trợ TLS tự động của Caddy ở bước sau.  

Đầu tiên, hãy tạo một thư mục chứa file Caddyfile chính. File cấu hình này giúp Caddy biết rằng nó sẽ phục vụ cho những trang web nào với cách thức như thế nào. 

sudo mkdir /etc/caddy

Bạn cần thay đổi chủ sở hữu của thư mục thành người dùng root và nhóm của nó sẽ là www-data để Caddy có thể nhận diện và đọc được:

sudo chown -R root:caddy /etc/caddy

Tại thư mục này, bạn hãy tạo một Caddyfile trống để thuận tiện cho việc chỉnh sửa sau này: 

sudo touch /etc/caddy/Caddyfile

Tiếp tục, hãy tạo một thư mục khác bên trong /etc/ssl để Caddy lưu trữ các chứng chỉ và khóa riêng tư (private key) SSL mà nó nhận tự động từ Let’s Encrypt. 

sudo mkdir /etc/ssl/caddy

Caddy cần được cấp quyền ghi vào thư mục này khi nó nhận được chứng chỉ, vì vậy bạn nên đặt chủ sở hữu thành user Caddy. Ngoài ra, bạn cũng có thể để nhóm thuộc root và không cần phải thay đổi gì nhiều so với mặc định. 

sudo chown -R caddy:root /etc/ssl/caddy

Tiếp theo, xóa tất cả quyền truy cập của người dùng khác với lệnh sau: 

sudo chmod 0770 /etc/ssl/caddy=

Cuối cùng, bạn cần phải tạo thêm một thư mục tại nơi trang web được xuất bản, trong trường hợp này là /var/www.

sudo mkdir /var/www

Để thư mục này thuộc quyền sở hữu hoàn toàn của Caddy, bạn nhập: 

sudo chown caddy:caddy /var/www

Như vậy là bạn đã hoàn tất quá trình chuẩn bị môi trường cần thiết để chạy Caddy. Ở bước tiếp theo, bạn cần cấu hình Caddy như một dịch vụ hệ thống nhằm chắc chắn rằng nó này sẽ tự động chạy khi server khởi động, đồng thời cho phép người dùng quản lý thông qua các file systemctl.

Để quá trình cài đặt và cấu hình Caddy diễn ra thuận lợi, không gặp trở ngại nào thì bạn cần sử dụng một máy chủ có khả năng mở rộng linh hoạt và tối đa hóa khả năng quản trị của bạn. Tuy nhiên, việc chọn một nhà cung cấp dịch vụ máy chủ phù hợp có thể không đơn giản.

VPS Server là một giải pháp tuyệt vời cho các nhà phát triển web và các doanh nghiệp vừa và nhỏ. Với VPS Vietnix, bạn có thể chọn từ nhiều gói dịch vụ khác nhau như VPS Giá Rẻ, VPS Phổ Thông, VPS Cao Cấp, VPS NVMe, VPS GPU phù hợp với nhu cầu và ngân sách của bạn.

Ngoài ra, VPS Vietnix còn cung cấp các tính năng nổi trội như:

  • Toàn quyền quản trị và cài đặt hệ thống theo nhu cầu sử dụng. Bạn cũng có thể gửi yêu cầu hỗ trợ tới đội ngũ Vietnix nếu gặp khó khăn trong quá trình này.
  • Backup tự động giúp bảo vệ dữ liệu hiệu quả.
  • Giao diện quản trị thân thiện, dễ dàng làm quen và sử dụng giúp quá trình quản lý hệ thống tiết kiệm thời gian.

Liên hệ để được tư vấn gói cấu hình tối ưu nhất theo nhu cầu của bạn.

Bước 4: Cài đặt Caddy làm dịch vụ hệ thống

Đầu tiên, bạn cần tải file xuống từ repository của Caddy. Tham số -o được bổ sung vào lệnh curl sẽ lưu file trong thư mục /etc/systemd/system/ và hiển thị với systemd.

sudo curl -s https://raw.githubusercontent.com/mholt/caddy/master/dist/init/linux-systemd/caddy.service -o /etc/systemd/system/caddy.service

Trước khi đến với thao tác tiếp theo, bạn cần chỉnh sửa file để nó sử dụng user caddy đã thiết lập ở phần trên. Hãy mở file bằng vi hoặc bất cứ trình soạn thảo văn bản nào bạn yêu thích với: 

sudo vi /etc/systemd/system/caddy.service

Sau đó, bạn cần tìm kiếm phân đoạn chịu trách nhiệm chỉ định tài khoản user và group: 

/etc/systemd/system/caddy.service ; User and group the process will run as. User=www-data Group=www-data

Bây giờ, bạn chỉ cần thay đổi cả hai giá trị thành caddy, cụ thể là: 

/etc/systemd/system/caddy.service ; User and group the process will run as. User=caddy Group=caddy

Đừng quên lưu và đóng file để thoát. Lúc này, file dịch vụ đã sẵn sàng để sử dụng với các cài đặt của bạn. Tuy nhiên, bạn cũng cần phải cho systemd biết đâu là file dịch vụ mới với lệnh: 

sudo systemctl daemon-reload

Kế đó, bạn cấp quyền cho Caddy chạy khi khởi động: 

sudo systemctl enable caddy.service

Để kiểm tra xem liệu dịch vụ đã được tải và kích hoạt đúng cách hay chưa, bạn có thể xác minh qua trạng thái: 

sudo systemctl status caddy.service

Output sẽ như thế này: 

Caddy service status output ● caddy.service - Caddy HTTP/2 web server    Loaded: loaded (/etc/systemd/system/caddy.service; enabled; vendor preset: disabled)    Active: inactive (dead)      Docs: https://caddyserver.com/docs

Nội dung trên cho biết rằng dịch vụ đã được tải và kích hoạt thành công, nhưng nó vẫn chưa chạy được. Vì quá trình cấu hình vẫn chưa hoàn tất nên bạn không được khởi động máy chủ.

Đến bước này, bạn đã cấu hình Caddy thành một dịch vụ hệ thống và tự chạy khi server khởi động. Tiếp theo, bạn cần đến với bước 5 để cho phép lưu lượng truy cập web với firewall.

Bước 5: Cho phép kết nối HTTP với HTTPS (tùy chọn)

Để chuyển lưu lượng truy cập internet đến Caddy, trước đó bạn sẽ phải thêm các quy tắc tường lửa bằng cách thủ công. Caddy sẽ phục vụ cho các trang web sử dụng giao thức HTTP và HTTPS nên bạn cần cho phép truy cập vào những cổng phù hợp: 

sudo firewall-cmd --permanent --zone=public --add-service=http  sudo firewall-cmd --permanent --zone=public --add-service=https sudo firewall-cmd --reload

Sau khi chạy 3 lệnh trên, bạn sẽ nhận được thông báo thành công như sau: 

firewall-cmd output success

Như vậy, Caddy đã được cấp phép phục vụ cho các trang web với khách truy cập tự do. Ở bước 6, bạn sẽ tiến hành tạo nên một trang web mẫu và cập nhật Caddylife để có thể kiểm tra cài đặt Caddy một cách nhanh chóng. 

Bước 6: Tạo một trang web thử nghiệm và một Caddylife

Bạn cần tạo một trang HTML đơn giản để hiển thị thông điệp Hello World!. Sau khi thực hiện lệnh bên dưới, bạn sẽ tạo được một file index.html trong thư mục trang web (đã được thiết lập trước đó) với dòng văn bản <h1>Hello World!</h1> ở bên trong.

echo '<h1>Hello World!</h1>' | sudo tee /var/www/index.html

Sau đó, bạn cần điền vào Caddyfile. Caddyfile ở dạng đơn giản nhất thường chỉ bao gồm 1 hoặc một vài server block. Mỗi server block sẽ xác định cấu hình cho một trang web. Về cơ bản, một server block sẽ bắt đầu với một định nghĩa địa chỉ và đi theo phía sau đó là dấu ngoặc nhọn. Ngoài ra, bên trong dấu ngoặc nhọn có thể chứa các chỉ thị cấu hình bạn muốn sử dụng cho trang web đó.

Định nghĩa địa chỉ sẽ được chỉ định bên trong biểu mẫu protocol :// host : port. Caddy sẽ tự mặc định một số giá trị nếu bạn để trống các trường. Chẳng hạn như trong trường hợp bạn chỉ định giao thức nhưng lại không chỉ định cổng, thì cổng 80 sẽ được chỉ định cho HTTP và cổng 443 được chỉ định cho HTTPS.

Bây giờ, bạn cần mở Caddyfile đã tạo (ở bước 2) thông qua vi hoặc trình soạn thảo mà mình yêu thích: 

sudo vi /etc/caddy/Caddyfile

Sau đó, bạn dán vào nội dung như sau: 

http:// {     root /var/www     gzip

Sau thao tác trên, bạn lưu file và thoát. Giải thích ý nghĩa lệnh này như sau:

  • http:// được sử dụng làm định nghĩa địa chỉ. Thông qua đó, Caddy nhận biết được nó sẽ liên kết với cổng 80 và thực hiện các yêu cầu thông qua giao thức HTTP thuần túy (không bao gồm mã hóa TLS) với bất cứ tên miền nào kết nối với máy chủ. Lúc này, bạn có thể truy cập vào các trang web đang được lưu trữ bởi Caddy thông qua địa chỉ IP máy chủ của mình. 
  • Chỉ thị root: Giúp Caddy nhận diện vị trí các file trang web, trong trường hợp này là /var/www – nơi mà bạn đã tạo ra trang thử nghiệm bên trên.
  • Chỉ thị gzip: Cho phép Caddy sử dụng tính năng nén Gzip để gia tăng hiệu suất, tốc độ cho trang web mà không cần đến cấu hình bổ sung. 

Sau khi file cấu hình đã hoàn tất và sẵn sàng, bạn đã có thể bắt đầu khởi động dịch vụ Caddy. 

sudo systemctl start caddy

Để chắc chắn rằng trang web vẫn đang hoạt động tốt, bạn có thể kiểm tra thông qua địa chỉ IP công cộng của máy chủ. Trong trường hợp bạn không biết địa chỉ IP, bạn có thể lấy nó một cách dễ dàng với curl -4 icanhazip.com. Sau đó, bạn dùng địa chỉ IP đã có được truy cập vào http:// your_server_ip trên một trình duyệt bất kỳ để kiểm tra website Hello World!.

Nếu truy cập thành công, tức là cài đặt Caddy của bạn vẫn đang hoạt động tốt. Ở bước 7, bạn cần phải kích hoạt chế độ kết nối an toàn tới website của mình thông qua hỗ trợ TLS tự động của Caddy. 

Bước 7: Cấu hình TLS tự động

Caddy sở hữu tính năng đặc biệt so với các web server khác là có thể tự động yêu cầu, gia hạn chứng chỉ TLS từ Let’s Encrypt. Hơn nữa, để thiết lập Caddy tự động chạy các website qua kết nối an toàn chỉ cần thay đổi một dòng trong Caddyfile.

Vai trò Caddy là bật kết nối HTTPS an toàn cho toàn bộ server block và xác định cấu hình, tự động nhận chứng chỉ cần thiết nếu đạt yêu cầu. Cụ thể nếu muốn TLS hoạt động, Caddy cần đáp ứng được một số yêu cầu sau:

  • Caddy có thể tự liên kết với cổng 443 của HTTPS, đồng thời cổng đó còn phải cho phép truy cập từ internet.
  • Không đặt giao thức thành HTTP, không đặt cổng thành 80 và không được tắt hoặc ghi đè TLS với các cài đặt khác (chẳng hạn như lệnh TLS trong server block).
  • Máy chủ phải có tên miền hợp lệ, không được để trống máy chủ, không đặt thành localhost và cũng không được để địa chỉ IP. Nguyên nhân là vì Let’s Encrypt chỉ cấp chứng chỉ cho những tên miền hợp lệ. 
  • Caddy buộc phải biết được địa chỉ email dùng để khôi phục khóa bằng Let’s Encrypt.

Khi bạn đã thực hiện đến bước này, thì yêu cầu đầu tiên đã được đáp ứng. Tuy nhiên, địa chỉ server block hiện tại đang được cấu hình là http://, đây là một schema HTTP đơn giản (không được mã hóa, không có tên miền). Đồng thời, bạn cũng chưa cung cấp địa chỉ email mà Let’s Encrypt yêu cầu khi tạo chứng chỉ cho Caddy. 

Trong trường hợp bạn không cung cấp địa chỉ khi cấu hình, Caddy sẽ yêu cầu nhập địa chỉ trong quá trình khởi động. Tuy nhiên, Caddy lại được cài đặt như một dịch vụ hệ thống nên nó không thể đặt câu hỏi trong quá trình khởi chạy và dẫn tới việc Caddy không được khởi động đúng cách.

Để khắc phục sự cố này, bạn chỉ cần mở Caddyfile để sửa đổi như sau: 

sudo vi /etc/caddy/Caddyfile

Trước hết, bạn cần thay thế tên miền của mình cho định nghĩa địa chỉ http:// ban đầu. Điều này giúp loại bỏ kết nối không an toàn bắt buộc của HTTP và cung cấp tên miền cho chứng chỉ TLS. Tiếp theo, bạn cũng phải sử dụng chỉ thị tls bên trong server block để cung cấp địa chỉ email cho Caddy. 

Sau khi thay đổi tên miền và địa chỉ email, Caddyfile sẽ như thế này: 

/etc/caddy/Caddyfile example.com {     root /var/www     gzip     tls vietnix@example.com }

Bây giờ, bạn lưu file và thoát khỏi trình chỉnh sửa, sau đó khởi động lại Caddy để áp dụng các thay đổi vừa thực hiện. 

sudo systemctl restart caddy

Lúc này, bạn mở trình duyệt và truy cập vào https:// example.com để kiểm tra xem các thay đổi đã được áp dụng một cách chính xác hay chưa. Hãy xem lại trang Hello World! đồng thời xác minh xem liệu trang web có được cung cấp HTTP thông qua URL hoặc biểu tượng ổ khóa trong thanh URL.

Vietnix là nhà cung cấp giải pháp VPS với hơn 10 năm kinh nghiệm và đã phục vụ cho hơn 50.000 khách hàng cá nhân và doanh nghiệp. Ngoài ra, tới thời điểm hiện tại, Vietnix đã kích hoạt hơn 100.000 dịch vụ, cho thấy sự đáng tin cậy và chuyên nghiệp của đội ngũ Vietnix.

Không chỉ vậy, sau khi sử dụng dịch vụ đã có tới 97% khách hàng đã giới thiệu Vietnix cho người khác, chứng tỏ chất lượng và dịch vụ của Vietnix được hầu hết khách hàng đánh giá cao. Chính vì vậy, nếu bạn đang cần một giải pháp VPS cho doanh nghiệp hoặc cá nhân, Vietnix là một lựa chọn đáng tin cậy và chuyên nghiệp.

Mọi vấn đề thắc mắc cần tư vấn, quý khách vui lòng liên hệ:

  • Địa chỉ: 265 Hồng Lạc, Phường 10, Quận Tân Bình, Thành Phố Hồ Chí Minh
  • Hotline: 1800 1093 – 07 088 44444
  • Email: sales@vietnix.com.vn

Lời kết

Sau khi thực hiện các bước trên, bạn đã cấu hình Caddy thành công để có thể phục vụ trang web đúng cách thông qua kết nối TLS an toàn. Lúc này, trang web của bạn đã có thể tự động lấy và gia hạn chứng chỉ từ Let’s Encrypt bằng giao thức HTTP/2 mới, đồng thời tối ưu hiệu suất, giảm thiểu thời gian tải với nén gzip. Ngoài ra, nếu có bất cứ thắc mắc hay gặp khó khăn trong quá trình cấu hình Caddy, đừng quên để lại comment bên dưới để được giải đáp và hỗ trợ bởi đội ngũ kỹ thuật viên của Vietnix nhé.

THEO DÕI VÀ CẬP NHẬT CHỦ ĐỀ BẠN QUAN TÂM

Đăng ký ngay để nhận những thông tin mới nhất từ blog của chúng tôi. Đừng bỏ lỡ cơ hội truy cập kiến thức và tin tức hàng ngày

Chọn chủ đề :

Hưng Nguyễn

Co-Founder
tại

Kết nối với mình qua

Kết nối với mình qua

Theo dõi
Thông báo của
guest
0 Comments
Phản hồi nội tuyến
Xem tất cả bình luận

Tăng tốc độ website - Nâng tầm giá trị thương hiệu

Tăng tốc tải trang

95 điểm

Nâng cao trải nghiệm người dùng

Tăng 8% tỷ lệ chuyển đổi

Thúc đẩy SEO, Google Ads hiệu quả

Tăng tốc ngay

SẢN PHẨM NỔI BẬT

7 NGÀY DÙNG THỬ HOSTING

NẮM BẮT CƠ HỘI, THÀNH CÔNG DẪN LỐI

Cùng trải nghiệm dịch vụ hosting tốc độ cao được hơn 100,000 khách hàng sử dụng

ĐĂNG KÝ NHẬN TÀI LIỆU THÀNH CÔNG
Cảm ơn bạn đã đăng ký nhận tài liệu mới nhất từ Vietnix!
ĐÓNG

ĐĂNG KÝ DÙNG THỬ HOSTING

7 NGÀY MIỄN PHÍ

ĐĂNG KÝ DÙNG THỬ HOSTING

7 NGÀY MIỄN PHÍ

XÁC NHẬN ĐĂNG KÝ DÙNG THỬ THÀNH CÔNG
Cảm ơn bạn đã đăng ký thông tin thành công. Đội ngũ CSKH sẽ liên hệ trực tiếp để kích hoạt dịch vụ cho bạn nhanh nhất!
ĐÓNG