云计算百科
云计算领域专业知识百科平台

在window平台使用caddy部署简单web功能的服务器

下载与安装

下载caddy程序(Window平台) caddy官网下载链接:https://caddyserver.com/download 在这里插入图片描述 下载好后将文件复制到C:\\Program Files\\Caddy,并将下载的文件重命名为caddy.exe 在这里插入图片描述

环境变量

添加window中的环境变量(主要解决cmd不能直接执行exe的命令) 在这里插入图片描述 在这里插入图片描述 添加好后点击确定并关闭打开的窗口

添加caddy的程序到window服务中(打开cmd执行)

sc.exe create caddy start= auto binPath= "C:\\Program Files\\caddy.exe run"

命令解析:

sc.exe:这是Service Control(服务控制)的缩写,是Windows操作系统中用于与服务控制管理器(SCM)交互的命令行工具。它可以用来创建、删除、查询、配置和启动/停止Windows服务。 create:这是sc.exe命令的一个参数,指示要执行的操作是创建一个新的服务。 caddy:这是你想要创建的服务的名称。在这个例子中,服务被命名为caddy。服务名称在系统中必须是唯一的。 start= auto:这个参数指定了服务的启动类型。auto意味着服务将被配置为自动启动,即在系统启动时自动尝试启动这个服务。其他可能的值包括demand(手动启动)和disabled(禁用)。 binPath= “C:\\Program Files\\caddy.exe run”:这个参数指定了服务的可执行文件(.exe)的路径以及任何需要的命令行参数。在这个例子中,服务的可执行文件是c:\\caddy.exe

删除服务可用(打开cmd执行)

sc delete caddy

如果添加环境变量后也可直接执行

caddy start
caddy stop

添加后会在服务中显示caddy 在这里插入图片描述 也可以使用官网的方法:https://caddyserver.com.cn/docs/running

bat脚本

不想使用环境变量与服务可以使用bat命令代替上面的功能,只是运行中会有cmd窗口一直在前台运行,适合临时使用

@echo off
chcp 65001 >nul 2>&1

:menu
cls
echo =============================
echo 请选择要执行的操作:
echo 1) 启动 Caddy (使用默认配置)
echo 2) 重新加载 Caddy
echo 3) 停止 Caddy
echo 4) 退出
echo =============================

set /p choice=请输入选项(1, 2, 34):

if "%choice%"=="1" goto startDefaultCaddy
if "%choice%"=="2" goto reloadCaddy
if "%choice%"=="3" goto stopCaddy
if "%choice%"=="4" goto end

:startDefaultCaddy
:: 使用默认配置启动 Caddy
start "Caddy Server" cmd /c "cd /d C:\\Program Files\\Caddy && caddy run"
echo Caddy 已使用默认配置启动.
goto menu

:reloadCaddy
:: 重新加载 Caddy 使用默认配置
start "Caddy Reload" cmd /c "cd /d C:\\Program Files\\Caddy && caddy reload"
echo Caddy 已重新加载.
goto menu

:stopCaddy
:: 停止 Caddy
start "Caddy Stop" cmd /c "cd /d C:\\Program Files\\Caddy && caddy stop"
echo Caddy 已停止.
goto menu

:end
exit

配置文件

再次打开安装目录中,新建一个txt文件,重启名为Caddyfile的文件(不需要.txt扩展名) 在这里插入图片描述 编辑Caddyfile文件(可以文本文档编辑),添加如下内容:

www.*******.com {
root * E:/下载
file_server browse
tls ********@qq.com
}

代码解释:

E:/下载 web显示的内容目录
file_server browse 开启目录浏览功能,不加browse为不开启
tls 自动申请https证书,此处需要填写邮箱名

将caddy添加到windows防火墙中 在这里插入图片描述 保存后即可启动 启动

sc.exe start caddy

停止

sc.exe stop caddy

输入netstat -na 检查下是否启用监听80与443端口,只有启用80与443端口才能自动申请成功ssl证书 在这里插入图片描述 其它说明:

自动申请成功证书文件的目录

C:\\Windows\\System32\\config\\systemprofile\\AppData\\Roaming\\Caddy\\certificates\\acme-v02.api.letsencrypt.org-directory

关于证书的一些其它问题 如需使用www与@解析用同一个证书可以使用

www.1234.com 1234.com {
root * E:/下载
file_server browse
tls ****@qq.com
}

如需使用API申请通配符证书可以使用

*.1234.com {
root * E:/下载
file_server browse
tls {
dns dnspod AP_ID,AP_tokin
}
}

使用API证书时需使用对应的模块 在这里插入图片描述 注意:从官网下载时选中对应的模块即可生效

使用域名重定向

1234.com {
redir https://www.1234.com{uri}
}

手动添加模块

阿里云DNS

caddy add-package github.com/caddy-dns/alidns

使用阿里云DNS的的配制,将上面tls内网替换为

tls {
dns alidns {
access_key_id *********
access_key_secret *********
}
}

DNSPOD的DNS

caddy add-package github.com/caddy-dns/dnspod

使用DNSPOD的DNS的的配制,将上面tls内容替换为

tls {
dns dnspod 123456,5689899551214212
}

其它具体语法参考下面模块的连接

一般模块连接地址为包名中显示的地址,如下图 在这里插入图片描述 查询已添加的模块信息

caddy build-info

在这里插入图片描述 caddy配置basicauth认证 (新版本已使用bcrypt哈希算法生成) 由于caddy配置不接受明文密码,可以使用下面命令进行对密码进行加密 输入密码 123456 ,如下图 在这里插入图片描述 那么配制文件为:

1234.com www.1234.com {
encode gzip
root * E:/下载
file_server browse
# 对 E:/下载 目录下所有文件进行认证保护,访问时会提示输入用户名与密码,此处的用户名为test,密码为123456。
basicauth /* {
test $2a$14$pU0EPsxiwT7j2KEAuqBa..fEmMlkXOY1lGMKY/pz72C1aq2B66paK
}
tls *****@qq.com
}

在这里插入图片描述 此处的用户名为test, 密码为123456

caddy配制文件中使用的为bcrypt哈希算法生成的密码哈希值。 bcrypt是一种基于哈希函数的加密算法,它使用一个密码和一个盐值作为输入,生成一个固定长度的密码哈希值。这个哈希值在每次密码输入时都会重新生成,而且会随着盐值的改变而改变。bcrypt的盐值是一个随机生成的字符串,与密码一起用于哈希函数中,使得相同的密码在每次加密时都会生成不同的哈希值。

bcrypt是一种密码哈希函数,通常用于存储用户密码的安全散列值。 这个字符串的格式是由几个部分组成的:

2

a

2a

2a: 这是指明使用的哈希算法的标识符,对于bcrypt来说,表示使用的是bcrypt版本 2a。 14$: 这是指明用于加密的工作因子,这里是14,表示加密过程的迭代次数。剩下的部分就是经过哈希后的密码散列值。 请注意,这个字符串本身并不包含密码信息,只是密码的哈希值。 哈希函数是单向的,因此从哈希值中无法还原出原始密码。 原文链接:https://blog.csdn.net/becklee1218/article/details/135282231

赞(0)
未经允许不得转载:网硕互联帮助中心 » 在window平台使用caddy部署简单web功能的服务器
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!