点击上方蓝色“飞雪无情”关注我,设个星标,第一时间看文章
继续在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,可以关注收藏我的公众号,一起学习。
精彩推荐
Go语言实现的在终端演示幻灯片工具
本文为原创文章,转载注明出处,欢迎扫码关注公众号
flysnow_org
或者网站https://www.flysnow.org/,第一时间看后续精彩文章。觉得好的话,请猛击文章右下角「在看」,感谢支持。
扫码关注
分享、点赞、在看就是最大的支持
文章评论