双 11 薅了一下阿里云的羊毛 ,新vps用新工具武装下 。
What is Caddy
Caddy 首先是一个用Go实现的Web Server。
在追求性能的道路上,nginx已经一骑绝尘。这种情况下诞生的 Gaddy有什么特性呢?
Caddy的作者Matt Holt有这样的理念: 其他Web Server为Web而设计,Caddy为human设计。可以看出Caddy主打易用性,使用配置简单。得益于Go的跨平台特性,Caddy很容易的支持了三大主流系统:Windows、 Linux、Mac。
Caddy最大的特点是用起来简单, 它有下面这些开箱即用的特性:
- 全自动支持HTTP/2协议,无需任何配置。
- Caddy 使用 Let’s Encrypt 让你的站点全自动变成HTTPS,无需任何配置。
- 合理使用多核多核 得益于go的特性
- 完全支持IPv6环境
- Caddy 对WebSockets有很好的支持
- 自动把Markdown转成 HTML
- Caddy 对log格式的定义很容易
- 易于部署 得益于go的特性,caddy只是一个小小的二进制文件,没有依赖,很好部署。
“几乎所有的功能在Caddy里的都是插件,HTTP服务器是插件,高级的TLS特性也是插件,每一行命令实现的功能都是一个插件”
创建新用户
sudo adduser Andy # 交互式命令 使用adduser时,系统会提示你输入各种信息,然后会根据这些信息创建新用户
sudo usermod -a -G sudo Andy # 将Andy添加到 sudo 用户组
安装 golang
sudo apt install software-properties-common
sudo add-apt-repository ppa:gophers/archive
sudo apt update
sudo apt install golang-1.13-go
ls -l /usr/lib/go-1.13/bin # 安装位置
ln -s /usr/lib/go-1.13/bin/go /usr/bin/go
一键安装 Gaddy
CADDY_TELEMETRY=on curl https://getcaddy.com | bash -s personal
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 7380 100 7380 0 0 6897 0 0:00:01 0:00:01 --:--:-- 6897
Downloading Caddy for linux/amd64 (personal license)...
Download verification OK
Extracting...
Putting caddy in /usr/local/bin (may require password)
Caddy v1.0.3 (h1:i9gRhBgvc5ifchwWtSe7pDpsdS9+Q0Rw9oYQmYUTw1w=)
Successfully installed
配置 Caddy
sudo mkdir -p /etc/caddy # 配置文件夹
sudo touch /etc/caddy/Caddyfile
Caddyfile
写入以下内容,格式还是比较简单的
example.com:80
gzip
log /var/log/caddy/access.log
root /var/www
tls tls@outlook.com
首先第一行必须是网站的地址
首先第一行必须是网站的地址
首先第一行必须是网站的地址
第2行的 gzip
是一个指令,表示打开 gzip 压缩功能,这样网站在传输网页时降低流量
第3行的 log
指令会为网站开启 log 功能,log 后的参数是log 文件的存放位置
第4行的 root
是指定网站的根目录
第5行的 tls
指令告诉 caddy 为网站开启 https 并自动申请证书,后面的 email 参数是告知 CA 申请人的邮箱。caddy 会默认使用 let's encrypt 申请证书并续约。
tls 也可以使用路径给出的证书 tls /etc/ssl/cert.pem /etc/ssl/key.pem
如何设置多站点访问呢?
example.com:80 {
gzip
log /var/log/caddy/access.log
root /var/www
tls /etc/ssl/cert.pem /etc/ssl/key.pem
}
example2.com:3000{
gzip
log /var/log/caddy/example2/access.log
root /var/www/example2
tls /etc/ssl/example2/cert.pem /etc/ssl/example2/key.pem
}
基本的 caddy 配置就这些,详细的内容可以去官网上看文档学习
成为比 Nginx 更好用的 web 服务器,这个目标Caddy已经达成了!
参考:
https://tonybai.com/2015/06/04/caddy-a-web-server-in-go/
https://github.com/golang/go/wiki/Ubuntu
https://zhuanlan.zhihu.com/p/25815245
https://www.zybuluo.com/zwh8800/note/844776