Caddy实战(一)| 托管你的网站,只需一行命令

2021年6月27日 262点热度 0人点赞 0条评论

点击上方蓝色“飞雪无情”关注我,设个星标,第一时间看文章

继续在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,可以关注收藏我的公众号,一起学习。

精彩推荐

GitHub上本月最受欢迎的Go语言项目有哪些?
Go语言实现的在终端演示幻灯片工具
如何使用Git进行团队协作开发
我那个上架5小时,破万购买的Go语言专栏的示例代码,开源了
Go语言经典库使用分析(九)| 进度条 progressbar

本文为原创文章,转载注明出处,欢迎扫码关注公众号flysnow_org或者网站https://www.flysnow.org/,第一时间看后续精彩文章。觉得好的话,请猛击文章右下角「在看」,感谢支持。


扫码关注


分享、点赞、在看就是最大的支持

92380Caddy实战(一)| 托管你的网站,只需一行命令

这个人很懒,什么都没留下

文章评论