CaddyServer搭建web服务器

2020-02-29

CaddyServer 官方文档

CaddyServer 是基于 go 语言写的一款搭建 web 前端的软件,之前我搭建网站都是用的宝塔面板,用起来超级好用但是就是搭建时间比较长,而这款软件 Caddy 搭建网站基本上就是 2-3 分钟就可以搭建一个网站.今天我就演示一下如何用这个 CaddyServer 来搭建一个 Ariang 的面板

PS:我用的是 CaddyServer 的 v2 版本.v2 版本和 v1 的版本语法不兼容

Caddy 安装

首先我们得下载 Caddy 的执行文件,然后放入到/usr/bin/目录下

sudo wget -O /usr/bin/caddy https://github.com/caddyserver/caddy/releases/download/v2.0.0-beta.15/caddy2_beta15_linux_amd64 && chmod +x /usr/bin/caddy

然后可以输入一下caddy version 来检测 caddy 命令是否在你的$PATH 下

然后创建一个 caddy 的组

groupadd --system caddy

然后创建一个用户 caddy,和具有可写的目录

useradd --system \
	--gid caddy \
	--create-home \
	--home-dir /var/lib/caddy \
	--shell /usr/sbin/nologin \
	--comment "Caddy web server" \
	caddy

然后我们可以下载一个官方给的caddy.service的文件放到/etc/systemd/system/caddy.service

sudo wget -O /etc/systemd/system/caddy.service https://raw.githubusercontent.com/caddyserver/dist/master/init/caddy.service

之后我们重启 systemctl,和启动 caddy

sudo systemctl daemon-reload
sudo systemctl enable caddy
sudo systemctl start caddy

然后我们可以验证一下是否启动,如果出现(active) running就说明好了

sudo systemctl status caddy

Caddyfile 编写

Caddy 可以让我们用 Caddyfile 来启动 caddy 接下来我将用 Caddyfile 来写一个 AriaNg 的网站.

首先我们的去下载一个 AriaNg 的代码放入到/var/www/ariang目录下并且解压缩

sudo wget -O /var/www/ariang/ariang.zip https://github.com/mayswind/AriaNg/releases/download/1.1.4/AriaNg-1.1.4.zip && sudo unzip -o /var/www/ariang/ariang.zip -d /var/www/ariang/ && sudo rm /var/www/ariang/ariang.zip

然后我们去/etc/caddy/目录新建一个文件Caddyfile然后开始写配置文件

cd /etc/caddy/ && sudo touch Caddyfile

然后用 vim 来写一段配置文件到 Caddyfile

vim Caddyfile

然后把这一段代码粘贴进去

http://:6088 {
    file_server {
        root /var/www/ariang
    }
    encode zstd gzip
}

最后输入以下命令,如果没报错就可以了

caddy reload

ps 6088 是端口,可以自行修改

之后我们上浏览器输入http://127.0.0.1:6088 or http://localhost:6088就可以看到网站了

当然 CaddyServer 还有很多功能

  • 虚拟主机
  • 反向代理
  • 静态文件分发
  • 负载均衡
  • FastCGI 支持
  • MarkDown 渲染
  • Gzip 压缩
  • URL 重写
  • 重定向
  • 文件浏览服务

本次就用了 CaddyServer 的虚拟主机搭建了一个小的网站,CaddyServer 还有很多好玩的等着大家去探索.

此处贴一张网站的 Photo Ariang

LinuxCanddy

利用Caddy方向代理Rocket.Chat

判断字符是否唯一