Caddy 實戰(二)- Caddy 命令行參數最全教程
在上一篇 Caddy 實戰(一)| 託管你的網站,只需一行命令文章中,你已經成功安裝了 Caddy,並且使用caddy file-server
命令成功託管了自己的網站,那麼這一篇文章中呢,我就爲你詳細的介紹 Caddy 的命令以及他們的參數。
前方萬字文章高能,請大佬搬好板凳看~
命令行參數用法
Caddy 是一個標準的 unix-like 命令,它的基本用法爲:
caddy <command> [<args...>]
其中:
-
command
是 caddy 的子命令,比如上一篇文章中的file-server
。子命令是必須的,不能省略。 -
args…
是子命令的參數,可以是 0 個,也可以是多個。
help 命令
一個好的命令行工具,是絕對要有help
命令的,caddy 當然不會例外。通過help
命令,你可以詳細的瞭解 caddy 的用法和幫助說明,可以讓我們很快的入門使用。
➜ ~ caddy help
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.
可以看到help
命令列出了 caddy 支持的所有子命令和說明,並且在最後還提醒我們,可以通過caddy help <command>
更詳細的瞭解某個子命令的用法。
現在,我們使用caddy help file-server
來看下我們上一篇文章中,使用的file-server
命令的詳細用法。
➜ ~ caddy help file-server
//我特意省略了很多描述,不然文字太多了
usage:
caddy file-server [--domain <example.com>] [--root <path>] [--listen <addr>] [--browse] [--access-log]
flags:
-access-log
Enable the access log
-browse
Enable directory browsing
-domain string
Domain name at which to serve the files
-listen string
The address to which to bind the listener
-root string
The path to the root of the site
-templates
Enable template rendering
以上關於file-server
子命令的用法,等下我會詳細介紹,這裏大家先了解下。
run 命令
run
會運行一個前臺 caddy 進程,直到你使用ctrl+c
或者關閉終端退出。它的用法爲:
usage:
caddy run [--config <path> [--adapter <name>]] [--envfile <path>] [--environ] [--resume] [--watch] [--pidfile <fil>]
flags:
-adapter string
如果你使用的配置文件不是以Caddyfile開頭的,那麼要使用這個標記來指定,比如-adapter caddyfile。
-config string
啓動Caddy使用的配置文件
-envfile string
從指定的文件加載環境變量,環境變量的格式爲KEY=VALUE
-environ
打印環境變量
-pidfile string
這個大家都知道,用於存放PID的文件
-pingback string
啓動成功的信息要回顯到pingback指定的ip:port上,這裏是通過tcp撥號發送回顯信息的。
-resume
這個挺有意思,會使用最近一次自動保存的配置,這對於恢復一個caddy非常有用。這裏需要注意的是,當使用這個標記的時候,通過config標記指定的配置就不再生效了。
-watch
這個其實就是在檢測到你的配置文件發生變化的時候,自動重新加載配置,這個不要在生產環境使用,自己開發環境用用就得了。
現在來看幾個例子,這樣可以更好的理解run
這個命令。
示例 1
## 加載當前目錄下名稱爲Caddyfile的配置文件啓動caddy,並且監控到配置文件改變的時候,自動重新加載配置。
➜ caddy run -config Caddyfile -watch
示例 2
## 和示例1相比,增加了一個pid文件
➜ caddy run -config Caddyfile -watch -pidfile /var/run/flysnow.pid
run
命令其他flag
的用法都大同小異,這裏不再做演示,你自己可以試一下。
start 命令
start
命令的使用run
一樣,不同的是start
會啓動一個在後臺運行的 caddy, 這意味着它不會阻塞終端的使用,你可以去做其他甚至退出當前終端,但是一個 caddy 已經被啓動了,你可以正常訪問託管的網絡服務。
stop 命令
start
命令對應的就是stop
命令,需要使用stop
命令通知後臺正在運行的 caddy,它的使用格式如下所示:
➜ ~ caddy help stop
Stops the background Caddy process as gracefully as possible.
It requires that the admin API is enabled and accessible, since it will
use the API's /stop endpoint. The address of this request can be
customized using the --address flag if it is not the default.
usage:
caddy stop
flags:
-address string
The address to use to reach the admin API endpoint, if not the default
如果你的start
是使用默認的localhost:2019
管理地址啓動的,那麼直接使用stop
命令就可以優雅的停止 caddy,如果不是默認的,那麼需要使用-address
來指定管理地址。
//因爲我的caddy的管理地址是localhost:2021,所以需要指定纔可以停止caddy
caddy stop -address localhost:2021
這裏有個小提示,caddy 在啓動後,不僅可以通過終端命令來管理它,還可以通過 API,也就是說 caddy 提供了一組 API 服務,用於管理它自身,比如加載配置等。這組管理 API 默認的地址就是localhost:2019
,所以當你的 caddy 啓動起來後,在瀏覽器裏輸入這個地址,就可以看到相應的配置信息了。
reload 命令
通過satrt
啓動的 caddy 是不輕易停止的,因爲這會導致網絡服務不可用。但是你又想使你修改的配置文件生效,怎麼辦呢?caddy 提供了reload
命令可以幫我們做到,這個 Nginx 是一樣的。
➜ ~ caddy help reload
usage:
caddy reload --config <path> [--adapter <name>] [--address <interface>]
flags:
-adapter string
Name of config adapter to apply
-address string
Address of the administration listener, if different from config
-config string
Configuration file (required)
-force
Force config reload, even if it is the same
以上就是reload
命令的使用,是不是很眼熟?是的,它和run
命令基本上一直,參數也差不多,可以參考run
命令的使用。
注意:這裏的address
參數和stop
命令中的address
是一樣的,都是管理 API 的地址,比如localhost:2019
, 這兩個命令,其實都是基於管理 API 實現的。
file-server 命令
這個命令可以啓動一個文件服務,比如託管一個靜態網站、把你的文件夾共享在網絡上等等。它的使用如下所示:
➜ ~ caddy help file-server
//我特意省略了很多描述,不然文字太多了
usage:
caddy file-server [--domain <example.com>] [--root <path>] [--listen <addr>] [--browse] [--access-log]
flags:
-access-log
啓用訪問日誌
-browse
啓用目錄瀏覽
-domain string
指定一個域名
-listen string
監聽的地址,http默認是:80,https默認是:443
-root string
要託管的文件服務的根目錄
-templates
啓用模板渲染
關於 file-server 命令的使用可以參考我的這篇 Caddy 實戰(一)| 託管你的網站,只需一行命令文章,這裏不再贅述。
reverse-proxy 命令
在 caddy 中,配置一個反向代理非常簡單,使用reverse-proxy
命令即可。
➜ ~ caddy help reverse-proxy
usage:
caddy reverse-proxy [--from <addr>] [--to <addr>] [--change-host-header]
flags:
-change-host-header
變更主機頭,從傳入的值變爲上游的值
-from string
用戶訪問的地址,默認是localhost
-insecure
禁用TLS
-to string
被代理的上游地址,用戶看不到這個地址
比如你有個後端服務127.0.0.1:9000
,想要代理到localhost
,運行如下命令即可。
➜ ~ caddy reverse-proxy --to 127.0.0.1:9000
現在,使用localhost
訪問,其實就是訪問的127.0.0.1:9000
這個後端服務。
假如你想換個端口訪問,比如localhost:2016
,只需要運行如下命令即可。
➜ ~ caddy reverse-proxy --from :2016 --to 127.0.0.1:9000
adapt 命令
➜ ~ caddy help adapt
usage:
caddy adapt --config <path> [--adapter <name>] [--pretty] [--validate]
flags:
-adapter string
配置適配器的名字,默認是 caddyfile。其實就是告訴命令,要使用什麼樣的適配器,把相應的配置轉爲JSON原生配置
-config string
配置文件
-pretty
是否美化輸出
-validate
可以幫助檢驗下輸出,其實並沒有真正的運行caddy
比如最簡單的 Caddyfile,只有一行localhost
,使用adapt
命令轉爲 JSON 原生配置的結果如下:
➜ ~ caddy adapt --config ~/Desktop/Caddyfile --pretty
{
"apps": {
"http": {
"servers": {
"srv0": {
"listen": [
":443"
],
"routes": [
{
"match": [
{
"host": [
"localhost"
]
}
],
"terminal": true
}
]
}
}
}
}
}
還是非常複雜的,包括端口、路由的配置都有,所以還是用 Caddyfile 配置效率最高,可讀性也強。
fmt 命令
這是 caddy 提供的一個輔助工具,可以幫你格式化你的 Caddyfile 配置文件,讓它更美觀。
➜ ~ caddy help fmt
usage:
caddy fmt [--overwrite] [<path>]
flags:
-overwrite
用格式化後的結果,覆蓋你的配置文件
整個命令非常簡單,比如我想用這個命令把我的配置文件美化下,並且把美化的結果覆蓋我的配置文件,可以這麼做。
➜ ~ caddy fmt --overwrite ~/Desktop/Caddyfile
environ 命令
打印 caddy 知道的環境變量,你可以看到很多關於 caddy 自身和你的系統環境的信息,這對於你調試 caddy 命令非常有用,比如啓動不了?路徑設置是否錯誤等等。
它的用法非常簡單,在終端輸入如下命令,即可看到環境變量信息。
➜ ~ caddy environ
hash-password 命令
一個自帶的密碼 Hash 工具,主要用來爲配置文件的授權提供 Hash 過的密碼,因爲不能配置明文密碼。
➜ ~ caddy help hash-password
usage:
caddy hash-password [--algorithm <name>] [--salt <string>] [--plaintext <password>]
flags:
-algorithm string
Hash算法,支持scrypt和bcrypt兩種,默認是bcrypt
-plaintext string
要Hash的明文密碼
-salt string
加點鹽,僅當Hash算法是scrypt有效
看看這個工具運行的效果。
➜ ~ caddy hash-password --plaintext 1
JDJhJDE0JGJLdzc0M0R1bDUzOTNTWGVJSTV4QU9kMGpQNC5WQTBnZ1E4N3FKOVpXUmQ1NEE2dmRzMWR1
list-modules 命令
caddy 是支持模塊的,而且我們可以開發自己的模塊,所以這個命令可以列出 caddy 當前已經安裝的模塊。
➜ ~ caddy list-modules --packages
admin.api.load
admin.api.metrics
admin.api.reverse_proxy
caddy.adapters.caddyfile
caddy.config_loaders.http
caddy.listeners.tls
caddy.logging.encoders.console
caddy.logging.encoders.filter
caddy.logging.encoders.filter.delete
caddy.logging.encoders.filter.ip_mask
caddy.logging.encoders.filter.replace
caddy.logging.encoders.json
caddy.logging.encoders.single_field
......
build-info 命令
打印 caddy 的構建信息,主要是 GoModule 的依賴信息,包括包名、版本等。
trust 命令
安裝一個根證書到本地信任存儲中,可能會需要密碼才能安裝,主要用於開發環境。大部分情況下,這個命令是用不到的,因爲 caddy 啓動的時候會自動安裝證書。
untrust 命令
從本地信任存儲中,卸載一個根證書,也是用於開發環境,和上面的trust
命令是對應的。
➜ ~ caddy help untrust
usage:
caddy untrust [--ca <id> | --cert <path>]
flags:
-ca string
要卸載CA證書的ID,默認爲local
-cert string
要卸載CA證書的路徑
upgrade 命令
這個是升級 caddy 的命令,它會下載最新的二進制文件,然後把本地的給替換了。這個過程並不會停止 caddy 服務,所以不用擔心,它僅僅是替換你的 caddy 文件。
當然,爲了保險起見,原來的二進制文件還是要備份一下。
validate 命令
這是一個驗證 Caddyfile 配置文件的命令,它會模擬啓動 caddy,但是並不會真的啓動。驗證的過程中,遇到的問題,會在控制檯輸出。它的使用和adapt
命令基本上一致。
➜ ~ caddy help validate
usage:
caddy validate --config <path> [--adapter <name>]
flags:
-adapter string
配置適配器的名字,默認是 caddyfile
-config string
配置文件的路徑
version 命令
最簡單的一個命令了,打印出 caddy 的版本,大部分的命令行工具都具備。
➜ ~ caddy version
(devel)
哈哈,看到了吧,我這個其實是我自己編譯的一個開發版。
小結
這一篇非常詳細的介紹了 caddy 命令的使用,建議收藏,需要的時候可以當做手冊來用。下一篇開始,就要介紹 Caddyfile 這個配置文件了。
本文爲原創文章,轉載註明出處, 歡迎掃碼關注公衆號
flysnow_org
或者網站 https://www.flysnow.org/,第一時間看後續精彩文章。覺得好的話,請猛擊文章右下角「在看」,感謝支持。
分享、點贊、在看就是最大的支持
本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源:https://mp.weixin.qq.com/s/asnrjAhk_UUzbIlb6gisBw