2020.06.17

Caddy Server đơn giản nhưng mạnh mẽ!

caddy16

Nếu như bạn quá khó khăn với việc tìm hiểu và config các file cấu hình web server truyền thống như: Nginx, Apache, … có lẽ bạn nên thử một lần sử dụng Caddy Server. Bạn sẽ không còn lo lắng, mệt mỏi khi phải đi tìm đọc tài liệu, tìm kiếm thông cài đặt cấu hình để hệ thống hoạt động một cách trơn tru. Mà thay vào đó, bạn chỉ việc dành 30s đến 1 phút để tạo và config server chỉ với một vài dòng code để hệ thống server bắt đầu chạy. Đến đây chắc bạn đã cảm thấy hứng thú bài viết này rồi chứ? Hãy Cùng chúng tôi tìm hiểu nó là gì và cách sử dụng như thế nào nhé.

Giới thiệu về Caddy Server

Caddy là một nền tảng web server mạnh mẽ, có thể mở rộng để phục vụ các trang web, dịch vụ và ứng dụng, nó được viết bằng Go. Hầu hết mọi người sử dụng nó như một máy chủ web hoặc proxy, ngoài 2 tính năng cơ bản đó, Caddy còn là một lựa chọn tuyệt vời cho: cân bằng tải, cổng api, bộ điều khiển xâm nhập (ingress controller), quản lý hệ thống, giám sát quá trình (process supervisor), task scheduler. Bên cạnh đó, Caddy còn mang đến cho người dùng sự tiện lợi khi việc cấu hình ssl trở nên một cách tự động hoá, bảo mật với firewall, cơ chế caching, logging, ….

Ngoài ra, Caddy rất tinh gọn với cấu hình một cách linh động và kết xuất (exportable) nó với Caddy’s API. Caddy không bắt buộc bạn phải config nhưng bạn vẫn nên sử dụng config để chủ động hơn. 

Cài đặt Caddy như thế nào?

Trong bài viết này, chúng tôi sẽ hướng dẫn các bạn cách cài đặt Caddy với phiên bản mới nhất hiện tại (v2). 

Cài đặt trực tiếp

Bạn có thể tải trực tiếp phiên bản chính thức từ Github, các bản chính thức này chỉ đi kèm với các mô-đun tiêu chuẩn. Nếu như bạn cần thêm những plugin bên thứ ba, hãy xây dựng từ nguồn xCaddy.

Linux

  • Debian, Ubuntu, Raspbian.

Bạn có thể cài đặt trực tiếp thông qua dòng lệnh sau:

  • Fedora, RedHat, CentOS

⇒ Fedora hoặc RHEL/CentOS 8:

⇒ RHEL/CentOS 7:

Mac OSX

Sau khi cài đặt xong, để chắc chắn là Caddy đã hoạt động bạn có thể kiểm tra thông qua dòng lệnh:

Nếu kết quả hiển thị như trên là chúng ta đã cài đặt thành công.

Cấu hình Caddy

Về cốt lõi, Caddy cấu hình với đơn giản  với một tài liệu JSON. Ngoài ra, Caddy còn hỗ trợ cấu hình đơn giản với Caddyfile. 

Caddyfile là một tệp định dạng cấu hình Caddy Server thuận tiện cho người dùng. Nhằm mục đích giúp mọi người dễ sử dụng Caddy vì nó dễ viết, dễ hiểu cho hầu hết các trường hợp sử dụng.

Trong khuôn khổ bài viết này, mình sẽ chỉ hướng dẫn các bạn config một cách đơn giản với tệp Caddyfile. Bạn có thể tìm hiểu thêm về cách cấu hình trực tiếp với JSON với tài liệu trực tiếp từ trang chủ của CaddyServer.

Nhưng trước hết, mình sẽ so sánh những ưu điểm và nhược điểm của 2 phương án cấu hình: 

JSONCaddyfile
Có thể sử dụng đầy đủ chức năng  CaddyChỉ sử dụng các thành phần phổ biến của chức năng config của Caddy
Dễ tạo file json config.Dễ dàng tạo file Caddyfile config.
Dễ dàng lập trìnhKhó tự động hoá
Khó cho người không hiểu jsonDễ hiểu, config nhanh
Cho phép cấu hình truyền tảiKhông cấu hình truyền tải bằng Caddyfile được
Cho phép thay đổi một phần nào đó cấu hìnhKhó thay đổi một phần nào đó của cấu hình
Dễ export hơn.Không thể export.
Tương thích với APITương thích với API
Tài liệu được tạo tự độngTài liệu viết tay
Phổ cậpThích hợp
Hiệu quả hơnTính toán nhiều hơn
Nhàm chánThú vị


Chúng ta bắt tay cấu hình nào, bạn cần tạo một file với tên là Caddyfile (không có phần mở rộng). Mình có ví dụ một file ở phần cài đặt Caddy với Docker.

Như file cấu hình trên có dòng localhost đây là tên domain bạn cần cấu hình. Ngoài ra, để cấu hình https cho Caddy Server bạn có thể cấu hình nhanh chóng bằng cách sử dụng config tls internal, Caddy sẽ sử dụng tệp chứng chỉ cục bộ cho trang web này.

Vậy giả sử mình có 1 domain là localhost.dev. Và ứng dụng client VueJS đang chạy với port 3000. Song song với nó là ứng dụng server api flask đang chạy với port 9000. Nhiệm vụ phải làm bây giờ là làm thế nào để forward vào ứng dụng này với Caddy. Rất đơn giản các bạn tạo 1 file Caddyfile với lệnh sau:


Chỉ vỏn vẹn vài lệnh là ứng dụng của bạn đã được chạy với 2 đường dẫn: 

  • Client: localhost.dev
  • Server API: localhost.dev/api/

Ngoài ra, nếu như bạn không muốn sử dụng https bạn có thể tắt nó với lệnh sau:

Cài đặt qua Docker

Nếu như bạn chưa từng tiếp xúc với Docker và muốn tìm hiểu thì có thể tham khảo qua bài viết Docker là gì?

Đôi khi, các bạn muốn phát triển dự án hoặc cài đặt môi trường phát triển nhanh thì các bạn sẽ nghĩ đến Docker. Cho nên mình cũng sẽ hướng dẫn các bạn cách cài đặt Caddy với Docker. Theo như mình thấy việc cài đặt Caddy với Docker nhanh và dễ dàng hơn cả Nginx. Nào chúng ta bắt đầu:
Đầu tiên, bạn tạo một thư mục project để chứa file ứng dụng. Trong ví dụ này mình sẽ tạo thư mục dự án tên là “MEVN”. Sau đó mình vào thư mục này và tạo một số file và thư mục như sau:

Các bạn đừng lo lắng nếu như có khá nhiều file nhé. Mình sẽ bắt đầu giải thích từng file cho các bạn có thể dễ dàng follow theo nha. Đầu tiên, file docker-compose.yml sẽ gọi đến file caddy.dockerfile để xác định images Caddy cũng như phiên bản. Ngoài ra, trong file này mình có ánh xạ file config Caddy máy host vào trong thư mục config trong container. Do mặc định Caddy sẽ chạy 2 port là 80 và 443.  
Bắt đầu từ file docker-compose.yml, mình có tạo 1 service caddy với tên của container chạy là caddy_service được build từ caddy.dockerfile, ánh xạ ra 2 cổng 80, 443.  Ngoài ra, mình có mount file config Caddyfile từ máy Host vào trong thư mục /etc/caddy/

Tiếp theo, ta nói về file caddy.dockerfile, mình chọn phiên bản caddy 2.0.0 trên hub.docker.com.

Cuối cùng, bạn phải tạo tệp Caddyfile ở bất kì đâu hoặc ở thư mục /etc/caddy giống mình để tiến hành config cho Caddy Server. Đặc biệt, tệp này sẽ không có đuôi mở rộng. Trong trường hợp bạn tạo ở thư mục riêng, bạn có để khai báo cho Caddy biết với lệnh: caddy -conf ../path/to/Caddyfile

Một số lệnh cơ bản của Caddy Server

Sau khi bạn cài đặt thành công Caddy Server. Hãy cùng chúng tôi tìm hiểu về một số lệnh cơ bản để tương tác với web server Caddy nhé.

  • Lệnh: caddy help

Giúp bạn tìm hiểu thêm về các option trong lệnh caddy.

  • Lệnh: caddy run

Giúp bạn chạy server ở chế độ foreground process.

  • Lệnh: caddy start

Giúp bạn khởi chạy server ở chế độ background process.

  • Lệnh: caddy stop

Giúp bạn ngừng chạy server hiện tại.

Nếu như bạn muốn tìm hiểu thêm về những lệnh được khởi chạy trong caddy bạn có thể tìm hiểu thêm ở trang chủ của caddy với từ khoá command line.

Tổng kết

Với ý kiến đánh giá cá nhân của mình thì Caddy khá mới mẻ và tiện lợi. Với những ứng dụng web chỉ 1 file Caddyfile đơn giản cũng đủ làm mọi thứ rồi. Cộng đồng phát triển mạnh và rất nhiều người quan tâm. Hy vọng qua bài viết ngắn này, các bạn sẽ hiểu và bắt đầu thử sử dụng nó.

0 Comments
Inline Feedbacks
View all comments