Caddy 實戰(一)- 託管你的網站,只需一行命令

繼續在 Github 獵奇,又看到了 caddy 這個 Web 服務器,發現 star 已經 33K 了,而且最近上升的也比較快,所以打算研究下它。

週末抽了點時間,看了下 caddy 的使用和代碼實現,覺得挺有意思的,尤其是自動 HTTPS 證書管理,模塊擴展很吸引我。

Caddy 是什麼

相信大家都知道 apache、nginx,那麼 caddy 也一樣,它是一個 Web 服務器,可以幫你託管你的 Web 服務,讓其他人可以通過互聯網訪問。

比如你想搭建一個博客,可以在互聯網上被其他人訪問,那麼就可以使用 caddy,相比 nginx 來說,它配置更簡單。

對於 caddy,官方是這麼定義的:

Caddy 2 is a powerful, enterprise-ready, open source web server with automatic HTTPS written in Go

Caddy 是一個強大的、企業級的、開放源代碼的 web 服務器,使用 Go 編寫,並且可以自動 HTTPS 加密 (其實就是自動配置 TLS 證書並管理)。

安裝 Caddy

得益於 Go 語言,caddy 是一個獨立的二進制包,所以它沒有任何依賴,你可以直接從官網下載並安裝它。

macOS 下安裝

首先打開瀏覽器,訪問 https://caddyserver.com/download,根據你自己的操作系統選擇相應的二進制安裝包,比如我的電腦是 Mac OS,我選擇的是 macOS amd64 intel 這個平臺的二進制包。

圖片

下載後,放到你的 PATH 環境變量中,比如/usr/local/bin中即可在終端中使用。

此外,特別說明下,如果你是 macOS, 也可以使用 brew 來安裝 caddy。

brew install caddy

Ubuntu 下安裝

如果你使用 Ubuntu、Debin 也可以通過apt命令安裝:

sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo apt-key add -
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list
sudo apt update
sudo apt install caddy

RedHat, CentOS

CentOS7 和 8 的安裝命令不太一樣,這裏略作區分。

Fedora or RHEL/CentOS 8:

dnf install 'dnf-command(copr)'
dnf copr enable @caddy/caddy
dnf install caddy

RHEL/CentOS 7:

yum install yum-plugin-copr
yum copr enable @caddy/caddy
yum install caddy

Window 下安裝

Window 下的安裝和上面介紹的 macOS 一樣,下載二進制包,然後配置好環境變量即可,這裏不再贅述。

Docker 下使用

caddy 也支持 dokcer,所以可以在 dokcer 中直接使用它。

➜ docker pull caddy

安裝 caddy 成功後,打開終端,輸入 caddy 即可驗證是否安裝成功。

➜  ~ caddy        
Caddy is an extensible server platform.

usage:
  caddy <command> [<args...>]

commands:
  adapt           Adapts a configuration to Caddy's native JSON
  build-info      Prints information about this build
  environ         Prints the environment
  file-server     Spins up a production-ready file server
  fmt             Formats a Caddyfile
  hash-password   Hashes a password and writes base64
  help            Shows help for a Caddy subcommand
  list-modules    Lists the installed Caddy modules
  reload          Changes the config of the running Caddy instance
  reverse-proxy   A quick and production-ready reverse proxy
  run             Starts the Caddy process and blocks indefinitely
  start           Starts the Caddy process in the background and then returns
  stop            Gracefully stops a started Caddy process
  trust           Installs a CA certificate into local trust stores
  untrust         Untrusts a locally-trusted CA certificate
  upgrade         Upgrade Caddy (EXPERIMENTAL)
  validate        Tests whether a configuration file is valid
  version         Prints the version

Use 'caddy help <command>' for more information about a command.

Full documentation is available at:
https://caddyserver.com/docs/command-line

託管你的網站

假設你的網站存放在~/mysite目錄下,在終端運行如下命令,即可在瀏覽器中訪問你的網站。

➜ caddy file-server --root ~/mysite

是不是非常簡單,只需要這一行命令,你就可以託管一個網站。現在打開瀏覽器,輸入127.0.0.1即可訪問你的網站。
在以上命令中,file-server是 caddy 的子命令,表示要啓動一個文件服務的意思,--root表示要以哪個文件目錄作爲文件服務的根目錄,也就是我們的網站所在文件夾。

現在你還只能用 IP 來訪問你的網站,如果想通過一個名字比如localhost,就需要通過--domain來指定。

 caddy file-server --root ~/mysite --domain localhost

現在在瀏覽器中就可以通過localhost訪問你的網站了,比 IP 要好記。

在公網上訪問你的網站

在上一小節中,你的網站還只能在本機訪問,如果你想讓每個人都可以訪問你的網站,首先你需要有一臺具備公網 IP 的服務器,把你的網站目錄文件放在這臺服務器上。

其次你要有自己的域名,比如我自己的網站 www.flysnow.org, 服務器的公網 IP 是113.105.165.142,那麼你需要在 DNS 解析中配置 www 的 A 記錄爲113.105.165.142

現在,在這臺服務器上運行如下命令,即可讓所有人都可以訪問你的網站, 而且是 HTTPS 的。

 caddy file-server --root ~/mysite --domain www.flysnow.org

小結

caddy 是非常方便的一個 web 服務器,它使用非常簡單,並且可以幫你自動配置好 tls 證書,讓你的網站支持 https 訪問。

接下來,我將會繼續研究 caddy,然後會整理成博客文檔,第一時間發表在我的公衆號上,如果你也對 caddy 感興趣,想學習 caddy,可以關注收藏我的公衆號,一起學習。

本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/SiSuRvfdUv1Rn5IjN9JFPw